From 01b6e2bed04c5fd28631307d068c1a39c0adfa6a Mon Sep 17 00:00:00 2001 From: Likhon Sheikh <156697347+likhonsible@users.noreply.github.com> Date: Sat, 20 Jan 2024 05:58:30 +0600 Subject: [PATCH] V1 --- .DS_Store | Bin 0 -> 10244 bytes .eslintignore | 4 + .eslintrc.js | 25 + .npmignore | 3 + .prettierignore | 5 + .prettierrc | 1 + .solhint.json | 7 + .solhintignore | 2 + arguments.js | 8 + common/utils.js | 13 + contracts/DividendTracker.sol | 831 + contracts/IDividendTracker.sol | 14 + contracts/IterableMapping.sol | 73 + contracts/Token.sol | 1572 + contracts/Token.sol.bk | 2470 ++ contracts/Token.sol.original | 771 + hardhat.config.ts | 295 + libraries.js | 3 + package.json | 64 + resources/.DS_Store | Bin 0 -> 6148 bytes resources/AnyToken.json | 329 + resources/DividendTracker.json | 22623 ++++++++++++++ resources/IterableMapping.json | 2742 ++ resources/L2ToL1MessagePasser.json | 1 + resources/Locker.json | 1 + resources/MixerX.sol | 157 + resources/MixerX_ABI.json | 293 + resources/MixerX_flattened.sol | 539 + resources/OptimismPortal.json | 1 + resources/Token copy.bk | 2470 ++ resources/Token copy.sol.bk2 | 2470 ++ resources/Token.json | 998 + resources/Token.sol | 1572 + resources/TokenArtifact.json | 44510 +++++++++++++++++++++++++++ resources/UniswapV2Locker6.json | 778 + resources/UniswapV2Locker8.json | 1 + resources/UniswapV2Pair.json | 713 + resources/UniswapV2Router.json | 953 + scripts/.DS_Store | Bin 0 -> 6148 bytes scripts/deployToken.ts | 111 + scripts/util.ts | 684 + test/.DS_Store | Bin 0 -> 6148 bytes test/testTokenV2.test.ts | 254 + tsconfig.json | 12 + workers/bridge.base.js | 123 + yarn.lock | 8033 +++++ 46 files changed, 96529 insertions(+) create mode 100644 .DS_Store create mode 100644 .eslintignore create mode 100644 .eslintrc.js create mode 100644 .npmignore create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 .solhint.json create mode 100644 .solhintignore create mode 100644 arguments.js create mode 100644 common/utils.js create mode 100644 contracts/DividendTracker.sol create mode 100644 contracts/IDividendTracker.sol create mode 100644 contracts/IterableMapping.sol create mode 100644 contracts/Token.sol create mode 100644 contracts/Token.sol.bk create mode 100644 contracts/Token.sol.original create mode 100644 hardhat.config.ts create mode 100644 libraries.js create mode 100644 package.json create mode 100644 resources/.DS_Store create mode 100644 resources/AnyToken.json create mode 100644 resources/DividendTracker.json create mode 100644 resources/IterableMapping.json create mode 100644 resources/L2ToL1MessagePasser.json create mode 100644 resources/Locker.json create mode 100644 resources/MixerX.sol create mode 100644 resources/MixerX_ABI.json create mode 100644 resources/MixerX_flattened.sol create mode 100644 resources/OptimismPortal.json create mode 100644 resources/Token copy.bk create mode 100644 resources/Token copy.sol.bk2 create mode 100644 resources/Token.json create mode 100644 resources/Token.sol create mode 100644 resources/TokenArtifact.json create mode 100644 resources/UniswapV2Locker6.json create mode 100644 resources/UniswapV2Locker8.json create mode 100644 resources/UniswapV2Pair.json create mode 100644 resources/UniswapV2Router.json create mode 100644 scripts/.DS_Store create mode 100644 scripts/deployToken.ts create mode 100644 scripts/util.ts create mode 100644 test/.DS_Store create mode 100644 test/testTokenV2.test.ts create mode 100644 tsconfig.json create mode 100644 workers/bridge.base.js create mode 100644 yarn.lock diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6cbd05d9aca2c23943221a23ff8a66f706e3f495 GIT binary patch literal 10244 zcmeHMU2GIp6uxI#=nNg&DYR0sBbyc?U|VWiZ23#Je@cN;?6!1UewN*xp&gjcl%3hO zSV|fbUqCcIY5XDbm`2k3B=K~K(d$>9VzoPehpyd4TK?T8Do;RJ$Q z`gflJpMhKk=-z!HsV6#dh?%i}w@HHN-KHInnRX0EVPJuZ*RkJOVN=Oj$OMUF%R%B~ z;Z9`X7T~B6)RsCc$fxT{9*jlC$(VP(kOw1-WMN8C&p5RMHBntUKJ(LwJZRE}=pWOp zE6#&P3o~sauVtYqn+~y&%~8}v&qEj^*kWZO8Jp?)N^+1lTq{sU)3Gv%qHQB2iTvnH ztHbqX>ZCT3`ZOC$NDNozk`B5)a)7b(C+j7r(y+z&wr`4}{A6g9vQTc0x1g8hMYw2T z6w$c|WaDOt*rYS=dGfi~xM?_UL&N7F6co;zUnCZZ#p2%3s682Sqi)h^k0y50TEA_Z zvD9-kw#(2bBT9LPZMjjy(i03|XgUtrGiX?vJ=tz2EzM!r5bqErQHm&))6>lj&9#B% z*2bCI!1VgY27GS1Z)QdkD{9tm?28;S$1M9eT7d<;PaMW&W}#N5*h}NWbS65uWd)&> zWnZK$lNJ=q3)R8!(C}_KqAZ#~6MDy8!?v7Vdcr{&QA!;&wL5NGI}9RYkRFx074oD3RCu7Fpq~RV>YDAIg z2&mQa9u3#jV{254CMsuf9@M^4tyXu_o{of$cg+K=R_~Gf9W-84qI_Vz+#vTKLT8W^ zhqpAz>(l`=8q-Zl(YT&gd4oDQ!TFbzZM<=_T%m^J_ShJj=t#V+P3=(kQMKEnj@vt~ zTXabmc;EflH|&f?6MF9?I-|Fut=P(5DYjEkmu9#&>qItoRIBO`ovuyOm<`J+mzJs_ zbwE@;5hIFXSQ7>Y0KQfp2VzaIiNBnh;2Q5C^|BbzHNgg6moR-(Nh9eb+sS?m(`j;& zJVj2EH_3VO0r`x4MZPDO$rS*Y4@Iy5ilH2q!3wB_bupZi>7j{A)gkTShf&mA? zfhjlw({L0Xf#YxjPQqjGBs>SF;CVO=FT?Bb2AqYr;9a-?AHm1)DO`fD;T!lCeu7`& zH@GUy6P5^-!cw7Hs1@pjdZ9&V6*dSPg&jh#5Ei1sLBSTLxB)^c==P=z^xBW0%pY{# z&xvp*f6!Guu%&zJwtr91T`XZ?R$g((lEBI}Ynxj)w_S5b?!PIQO%DX-{TVUCyq|eT zmgml~c$Dv2o(jP0A<08@0K-O~5^3}*Mc(L|6(WX>GS927T8-6h%6wj}s;d_fenYzZJW9w$65A@jY*p7WTpf;pK6wXq|YE@f<`~;hwwgvsmqO$ z4@?I$G)tt9bm45Bqz7d^rafBbT4^$vfhfYXERJh6P-EV8K}lM2lQsH3l0IZvmGjnJ zd;?Ctx1PaGA@aw@{o|}OHDMyPuIUz&s%!RS@v)HlNtQ?B<|a3lXB&@n??Kn|i_gIA z%|HQPUZ5Cd*Ny-GzrBs{SLZX}GjK}`Kw)R7vmK{M?SZmqqi5{_y!PWo3mrGhC4=CN z9mk_&$MIO9$MLK1qGP>1B6|*cZL?f5IF4a(l>9XRZ~rrZ9ToWd|2cpE|G(Y;{{e4_ BR{#J2 literal 0 HcmV?d00001 diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..85f5562 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,4 @@ +node_modules +artifacts +cache +coverage diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..abc5d0a --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,25 @@ +module.exports = { + env: { + browser: false, + es2021: true, + mocha: true, + node: true, + }, + plugins: ["@typescript-eslint"], + extends: [ + "standard", + "plugin:prettier/recommended", + "plugin:node/recommended", + ], + parser: "@typescript-eslint/parser", + parserOptions: { + ecmaVersion: 12, + }, + rules: { + "node/no-unsupported-features/es-syntax": [ + "error", + { ignores: ["modules"] }, + ], + "node/no-missing-import": "off", + }, +}; diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..dc03781 --- /dev/null +++ b/.npmignore @@ -0,0 +1,3 @@ +hardhat.config.ts +scripts +test diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..f268596 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,5 @@ +node_modules +artifacts +cache +coverage* +gasReporterOutput.json diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/.prettierrc @@ -0,0 +1 @@ +{} diff --git a/.solhint.json b/.solhint.json new file mode 100644 index 0000000..f3e31e8 --- /dev/null +++ b/.solhint.json @@ -0,0 +1,7 @@ +{ + "extends": "solhint:recommended", + "rules": { + "compiler-version": ["error", "^0.8.0"], + "func-visibility": ["warn", { "ignoreConstructors": true }] + } +} diff --git a/.solhintignore b/.solhintignore new file mode 100644 index 0000000..02d2255 --- /dev/null +++ b/.solhintignore @@ -0,0 +1,2 @@ +node_modules +cache \ No newline at end of file diff --git a/arguments.js b/arguments.js new file mode 100644 index 0000000..0d5c582 --- /dev/null +++ b/arguments.js @@ -0,0 +1,8 @@ +module.exports = [ + "TKN", + "Token", + ethers.utils.parseEther("1000000000"), + ethers.utils.parseEther("0"), + ["0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D", "0xd464C335A6EeCC565E2e904a65b44DA5789e8780", "0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984"], + [0, 0, 0, 0, 0, 0] +]; \ No newline at end of file diff --git a/common/utils.js b/common/utils.js new file mode 100644 index 0000000..7a15cf6 --- /dev/null +++ b/common/utils.js @@ -0,0 +1,13 @@ +const escape_markdown = (text) => { + return text.replace(/([\.\+\-\|\(\)\#\_\[\]\~\=\{\}\,\!\`\>\<])/g, "\\$1").replaceAll('"','`') +} + +const format_number = (number, decimals = 2) => { + const str = Number(number).toFixed(decimals) + return str.replace(/\.?0+$/g, '') +} + +module.exports = { + escape_markdown, + format_number, +} \ No newline at end of file diff --git a/contracts/DividendTracker.sol b/contracts/DividendTracker.sol new file mode 100644 index 0000000..bd49a81 --- /dev/null +++ b/contracts/DividendTracker.sol @@ -0,0 +1,831 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; +import "./IterableMapping.sol"; + +/** + * @title SafeMathInt + * @dev Math operations with safety checks that revert on error + * @dev SafeMath adapted for int256 + * Based on code of https://github.com/RequestNetwork/requestNetwork/blob/master/packages/requestNetworkSmartContracts/contracts/base/math/SafeMathInt.sol + */ +library SafeMathInt { + function mul(int256 a, int256 b) internal pure returns (int256) { + // Prevent overflow when multiplying INT256_MIN with -1 + // https://github.com/RequestNetwork/requestNetwork/issues/43 + require(!(a == -2**255 && b == -1) && !(b == -2**255 && a == -1)); + + int256 c = a * b; + require((b == 0) || (c / b == a)); + return c; + } + + function div(int256 a, int256 b) internal pure returns (int256) { + // Prevent overflow when dividing INT256_MIN by -1 + // https://github.com/RequestNetwork/requestNetwork/issues/43 + require(!(a == -2**255 && b == -1) && (b > 0)); + + return a / b; + } + + function sub(int256 a, int256 b) internal pure returns (int256) { + require((b >= 0 && a - b <= a) || (b < 0 && a - b > a)); + + return a - b; + } + + function add(int256 a, int256 b) internal pure returns (int256) { + int256 c = a + b; + require((b >= 0 && c >= a) || (b < 0 && c < a)); + return c; + } + + function toUint256Safe(int256 a) internal pure returns (uint256) { + require(a >= 0); + return uint256(a); + } +} + +/** + * @title SafeMathUint + * @dev Math operations with safety checks that revert on error + */ +library SafeMathUint { + function toInt256Safe(uint256 a) internal pure returns (int256) { + int256 b = int256(a); + require(b >= 0); + return b; + } +} + +/** + * @dev Wrappers over Solidity's arithmetic operations with added overflow + * checks. + * + * Arithmetic operations in Solidity wrap on overflow. This can easily result + * in bugs, because programmers usually assume that an overflow raises an + * error, which is the standard behavior in high level programming languages. + * `SafeMath` restores this intuition by reverting the transaction when an + * operation overflows. + * + * Using this library instead of the unchecked operations eliminates an entire + * class of bugs, so it's recommended to use it always. + */ +library SafeMath { + /** + * @dev Returns the addition of two unsigned integers, with an overflow flag. + * + * _Available since v3.4._ + */ + function tryAdd(uint256 a, uint256 b) + internal + pure + returns (bool, uint256) + { + uint256 c = a + b; + if (c < a) return (false, 0); + return (true, c); + } + + /** + * @dev Returns the substraction of two unsigned integers, with an overflow flag. + * + * _Available since v3.4._ + */ + function trySub(uint256 a, uint256 b) + internal + pure + returns (bool, uint256) + { + if (b > a) return (false, 0); + return (true, a - b); + } + + /** + * @dev Returns the multiplication of two unsigned integers, with an overflow flag. + * + * _Available since v3.4._ + */ + function tryMul(uint256 a, uint256 b) + internal + pure + returns (bool, uint256) + { + // Gas optimization: this is cheaper than requiring 'a' not being zero, but the + // benefit is lost if 'b' is also tested. + // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 + if (a == 0) return (true, 0); + uint256 c = a * b; + if (c / a != b) return (false, 0); + return (true, c); + } + + /** + * @dev Returns the division of two unsigned integers, with a division by zero flag. + * + * _Available since v3.4._ + */ + function tryDiv(uint256 a, uint256 b) + internal + pure + returns (bool, uint256) + { + if (b == 0) return (false, 0); + return (true, a / b); + } + + /** + * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. + * + * _Available since v3.4._ + */ + function tryMod(uint256 a, uint256 b) + internal + pure + returns (bool, uint256) + { + if (b == 0) return (false, 0); + return (true, a % b); + } + + /** + * @dev Returns the addition of two unsigned integers, reverting on + * overflow. + * + * Counterpart to Solidity's `+` operator. + * + * Requirements: + * + * - Addition cannot overflow. + */ + function add(uint256 a, uint256 b) internal pure returns (uint256) { + uint256 c = a + b; + require(c >= a, "SafeMath: addition overflow"); + return c; + } + + /** + * @dev Returns the subtraction of two unsigned integers, reverting on + * overflow (when the result is negative). + * + * Counterpart to Solidity's `-` operator. + * + * Requirements: + * + * - Subtraction cannot overflow. + */ + function sub(uint256 a, uint256 b) internal pure returns (uint256) { + require(b <= a, "SafeMath: subtraction overflow"); + return a - b; + } + + /** + * @dev Returns the multiplication of two unsigned integers, reverting on + * overflow. + * + * Counterpart to Solidity's `*` operator. + * + * Requirements: + * + * - Multiplication cannot overflow. + */ + function mul(uint256 a, uint256 b) internal pure returns (uint256) { + if (a == 0) return 0; + uint256 c = a * b; + require(c / a == b, "SafeMath: multiplication overflow"); + return c; + } + + /** + * @dev Returns the integer division of two unsigned integers, reverting on + * division by zero. The result is rounded towards zero. + * + * Counterpart to Solidity's `/` operator. Note: this function uses a + * `revert` opcode (which leaves remaining gas untouched) while Solidity + * uses an invalid opcode to revert (consuming all remaining gas). + * + * Requirements: + * + * - The divisor cannot be zero. + */ + function div(uint256 a, uint256 b) internal pure returns (uint256) { + require(b > 0, "SafeMath: division by zero"); + return a / b; + } + + /** + * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), + * reverting when dividing by zero. + * + * Counterpart to Solidity's `%` operator. This function uses a `revert` + * opcode (which leaves remaining gas untouched) while Solidity uses an + * invalid opcode to revert (consuming all remaining gas). + * + * Requirements: + * + * - The divisor cannot be zero. + */ + function mod(uint256 a, uint256 b) internal pure returns (uint256) { + require(b > 0, "SafeMath: modulo by zero"); + return a % b; + } + + /** + * @dev Returns the subtraction of two unsigned integers, reverting with custom message on + * overflow (when the result is negative). + * + * CAUTION: This function is deprecated because it requires allocating memory for the error + * message unnecessarily. For custom revert reasons use {trySub}. + * + * Counterpart to Solidity's `-` operator. + * + * Requirements: + * + * - Subtraction cannot overflow. + */ + function sub( + uint256 a, + uint256 b, + string memory errorMessage + ) internal pure returns (uint256) { + require(b <= a, errorMessage); + return a - b; + } + + /** + * @dev Returns the integer division of two unsigned integers, reverting with custom message on + * division by zero. The result is rounded towards zero. + * + * CAUTION: This function is deprecated because it requires allocating memory for the error + * message unnecessarily. For custom revert reasons use {tryDiv}. + * + * Counterpart to Solidity's `/` operator. Note: this function uses a + * `revert` opcode (which leaves remaining gas untouched) while Solidity + * uses an invalid opcode to revert (consuming all remaining gas). + * + * Requirements: + * + * - The divisor cannot be zero. + */ + function div( + uint256 a, + uint256 b, + string memory errorMessage + ) internal pure returns (uint256) { + require(b > 0, errorMessage); + return a / b; + } + + /** + * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), + * reverting with custom message when dividing by zero. + * + * CAUTION: This function is deprecated because it requires allocating memory for the error + * message unnecessarily. For custom revert reasons use {tryMod}. + * + * Counterpart to Solidity's `%` operator. This function uses a `revert` + * opcode (which leaves remaining gas untouched) while Solidity uses an + * invalid opcode to revert (consuming all remaining gas). + * + * Requirements: + * + * - The divisor cannot be zero. + */ + function mod( + uint256 a, + uint256 b, + string memory errorMessage + ) internal pure returns (uint256) { + require(b > 0, errorMessage); + return a % b; + } +} + +interface DividendPayingTokenOptionalInterface { + /// @notice View the amount of dividend in wei that an address can withdraw. + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that `_owner` can withdraw. + function withdrawableDividendOf(address _owner) + external + view + returns (uint256); + + /// @notice View the amount of dividend in wei that an address has withdrawn. + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that `_owner` has withdrawn. + function withdrawnDividendOf(address _owner) + external + view + returns (uint256); + + /// @notice View the amount of dividend in wei that an address has earned in total. + /// @dev accumulativeDividendOf(_owner) = withdrawableDividendOf(_owner) + withdrawnDividendOf(_owner) + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that `_owner` has earned in total. + function accumulativeDividendOf(address _owner) + external + view + returns (uint256); +} + +/// @title Dividend-Paying Token Interface +/// @author Roger Wu (https://github.com/roger-wu) +/// @dev An interface for a dividend-paying token contract. +interface DividendPayingTokenInterface { + /// @notice View the amount of dividend in wei that an address can withdraw. + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that `_owner` can withdraw. + function dividendOf(address _owner) external view returns (uint256); + + /// @notice Withdraws the ether distributed to the sender. + /// @dev SHOULD transfer `dividendOf(msg.sender)` wei to `msg.sender`, and `dividendOf(msg.sender)` SHOULD be 0 after the transfer. + /// MUST emit a `DividendWithdrawn` event if the amount of ether transferred is greater than 0. + function withdrawDividend() external; + + /// @dev This event MUST emit when ether is distributed to token holders. + /// @param from The address which sends ether to this contract. + /// @param weiAmount The amount of distributed ether in wei. + event DividendsDistributed(address indexed from, uint256 weiAmount); + + /// @dev This event MUST emit when an address withdraws their dividend. + /// @param to The address which withdraws ether from this contract. + /// @param weiAmount The amount of withdrawn ether in wei. + event DividendWithdrawn(address indexed to, uint256 weiAmount); +} + +contract DividendPayingToken is + ERC20, + Ownable, + DividendPayingTokenInterface, + DividendPayingTokenOptionalInterface +{ + using SafeMath for uint256; + using SafeMathUint for uint256; + using SafeMathInt for int256; + + address public rewardsToken; + + uint256 internal constant magnitude = 2**128; + + uint256 internal magnifiedDividendPerShare; + + mapping(address => int256) internal magnifiedDividendCorrections; + mapping(address => uint256) internal withdrawnDividends; + + uint256 public totalDividendsDistributed; + + constructor(string memory _name, string memory _symbol, address _rewardsToken) + ERC20(_name, _symbol) + { + rewardsToken = _rewardsToken; + } + + function distributeDividends(uint256 amount) external onlyOwner { + require(totalSupply() > 0); + + if (amount > 0) { + magnifiedDividendPerShare = magnifiedDividendPerShare.add( + (amount).mul(magnitude) / totalSupply() + ); + emit DividendsDistributed(msg.sender, amount); + + totalDividendsDistributed = totalDividendsDistributed.add(amount); + } + } + + /// @notice Withdraws the ether distributed to the sender. + /// @dev It emits a `DividendWithdrawn` event if the amount of withdrawn ether is greater than 0. + function withdrawDividend() public virtual override { + _withdrawDividendOfUser(payable(msg.sender)); + } + + /// @notice Withdraws the ether distributed to the sender. + /// @dev It emits a `DividendWithdrawn` event if the amount of withdrawn ether is greater than 0. + function _withdrawDividendOfUser(address payable user) + internal + returns (uint256) + { + uint256 _withdrawableDividend = withdrawableDividendOf(user); + if (_withdrawableDividend > 0) { + withdrawnDividends[user] = withdrawnDividends[user].add( + _withdrawableDividend + ); + emit DividendWithdrawn(user, _withdrawableDividend); + bool success = IERC20(rewardsToken).transfer( + user, + _withdrawableDividend + ); + + if (!success) { + withdrawnDividends[user] = withdrawnDividends[user].sub( + _withdrawableDividend + ); + return 0; + } + + return _withdrawableDividend; + } + + return 0; + } + + /// @notice View the amount of dividend in wei that an address can withdraw. + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that `_owner` can withdraw. + function dividendOf(address _owner) public view override returns (uint256) { + return withdrawableDividendOf(_owner); + } + + /// @notice View the amount of dividend in wei that an address can withdraw. + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that `_owner` can withdraw. + function withdrawableDividendOf(address _owner) + public + view + override + returns (uint256) + { + return accumulativeDividendOf(_owner).sub(withdrawnDividends[_owner]); + } + + /// @notice View the amount of dividend in wei that an address has withdrawn. + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that `_owner` has withdrawn. + function withdrawnDividendOf(address _owner) + public + view + override + returns (uint256) + { + return withdrawnDividends[_owner]; + } + + /// @notice View the amount of dividend in wei that an address has earned in total. + /// @dev accumulativeDividendOf(_owner) = withdrawableDividendOf(_owner) + withdrawnDividendOf(_owner) + /// = (magnifiedDividendPerShare * balanceOf(_owner) + magnifiedDividendCorrections[_owner]) / magnitude + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that `_owner` has earned in total. + function accumulativeDividendOf(address _owner) + public + view + override + returns (uint256) + { + return + magnifiedDividendPerShare + .mul(balanceOf(_owner)) + .toInt256Safe() + .add(magnifiedDividendCorrections[_owner]) + .toUint256Safe() / magnitude; + } + + /// @dev Internal function that transfer tokens from one address to another. + /// Update magnifiedDividendCorrections to keep dividends unchanged. + /// @param from The address to transfer from. + /// @param to The address to transfer to. + /// @param value The amount to be transferred. + function _transfer( + address from, + address to, + uint256 value + ) internal virtual override { + require(false); + + int256 _magCorrection = magnifiedDividendPerShare + .mul(value) + .toInt256Safe(); + magnifiedDividendCorrections[from] = magnifiedDividendCorrections[from] + .add(_magCorrection); + magnifiedDividendCorrections[to] = magnifiedDividendCorrections[to].sub( + _magCorrection + ); + } + + /// @dev Internal function that mints tokens to an account. + /// Update magnifiedDividendCorrections to keep dividends unchanged. + /// @param account The account that will receive the created tokens. + /// @param value The amount that will be created. + function _mint(address account, uint256 value) internal override { + super._mint(account, value); + + magnifiedDividendCorrections[account] = magnifiedDividendCorrections[ + account + ].sub((magnifiedDividendPerShare.mul(value)).toInt256Safe()); + } + + /// @dev Internal function that burns an amount of the token of a given account. + /// Update magnifiedDividendCorrections to keep dividends unchanged. + /// @param account The account whose tokens will be burnt. + /// @param value The amount that will be burnt. + function _burn(address account, uint256 value) internal override { + super._burn(account, value); + + magnifiedDividendCorrections[account] = magnifiedDividendCorrections[ + account + ].add((magnifiedDividendPerShare.mul(value)).toInt256Safe()); + } + + function _setBalance(address account, uint256 newBalance) internal { + uint256 currentBalance = balanceOf(account); + + if (newBalance > currentBalance) { + uint256 mintAmount = newBalance.sub(currentBalance); + _mint(account, mintAmount); + } else if (newBalance < currentBalance) { + uint256 burnAmount = currentBalance.sub(newBalance); + _burn(account, burnAmount); + } + } +} + +/* +@title Dividend-Paying Token Interface +@author Roger Wu (https://github.com/roger-wu) +@dev An interface for a dividend-paying token contract. +*/ +interface IDividendPayingToken { + /// @notice View the amount of dividend in wei that an address can withdraw. + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that `_owner` can withdraw. + function dividendOf(address _owner) external view returns (uint256); + + /// @notice Distributes ether to token holders as dividends. + /// @dev SHOULD distribute the paid ether to token holders as dividends. + /// SHOULD NOT directly transfer ether to token holders in this function. + /// MUST emit a `DividendsDistributed` event when the amount of distributed ether is greater than 0. + function distributeDividends() external payable; + + /// @notice Withdraws the ether distributed to the sender. + /// @dev SHOULD transfer `dividendOf(msg.sender)` wei to `msg.sender`, and `dividendOf(msg.sender)` SHOULD be 0 after the transfer. + /// MUST emit a `DividendWithdrawn` event if the amount of ether transferred is greater than 0. + function withdrawDividend() external; + + /// @dev This event MUST emit when ether is distributed to token holders. + /// @param from The address which sends ether to this contract. + /// @param weiAmount The amount of distributed ether in wei. + event DividendsDistributed(address indexed from, uint256 weiAmount); + + /// @dev This event MUST emit when an address withdraws their dividend. + /// @param to The address which withdraws ether from this contract. + /// @param weiAmount The amount of withdrawn ether in wei. + event DividendWithdrawn(address indexed to, uint256 weiAmount); +} + +contract DividendTracker is Ownable, DividendPayingToken { + using SafeMath for uint256; + using SafeMathInt for int256; + using IterableMapping for IterableMapping.Map; + + IterableMapping.Map private tokenHoldersMap; + uint256 public lastProcessedIndex; + + mapping(address => bool) public excludedFromDividends; + + mapping(address => uint256) public lastClaimTimes; + + uint256 public claimWait; + uint256 public minimumTokenBalanceForDividends; + + event ExcludeFromDividends(address indexed account); + event ClaimWaitUpdated(uint256 indexed newValue, uint256 indexed oldValue); + + event Claim( + address indexed account, + uint256 amount, + bool indexed automatic + ); + + constructor(address tokenAddress, uint256 _minimumTokenBalanceForDividends) + DividendPayingToken("Dividen_Tracker", "Dividen_Tracker", tokenAddress) + { + claimWait = 3600; + minimumTokenBalanceForDividends = _minimumTokenBalanceForDividends; + transferOwnership(msg.sender); + } + + function _transfer( + address, + address, + uint256 + ) internal pure override { + require(false, "Dividend_Tracker: No transfers allowed"); + } + + function withdrawDividend() public pure override { + require( + false, + "Dividend_Tracker: withdrawDividend disabled. Use the 'claim' function on the main Dividend_Tracker contract." + ); + } + + function excludeFromDividends(address account) external onlyOwner { + require(!excludedFromDividends[account]); + excludedFromDividends[account] = true; + + _setBalance(account, 0); + tokenHoldersMap.remove(account); + + emit ExcludeFromDividends(account); + } + + function updateClaimWait(uint256 newClaimWait) external onlyOwner { + require( + newClaimWait >= 3600 && newClaimWait <= 86400, + "Dividend_Tracker: claimWait must be updated to between 1 and 24 hours" + ); + require( + newClaimWait != claimWait, + "Dividend_Tracker: Cannot update claimWait to same value" + ); + emit ClaimWaitUpdated(newClaimWait, claimWait); + claimWait = newClaimWait; + } + + function getLastProcessedIndex() external view returns (uint256) { + return lastProcessedIndex; + } + + function getNumberOfTokenHolders() external view returns (uint256) { + return tokenHoldersMap.keys.length; + } + + function getAccount(address _account) + public + view + returns ( + address account, + int256 index, + int256 iterationsUntilProcessed, + uint256 withdrawableDividends, + uint256 totalDividends, + uint256 lastClaimTime, + uint256 nextClaimTime, + uint256 secondsUntilAutoClaimAvailable + ) + { + account = _account; + + index = tokenHoldersMap.getIndexOfKey(account); + + iterationsUntilProcessed = -1; + + if (index >= 0) { + if (uint256(index) > lastProcessedIndex) { + iterationsUntilProcessed = index.sub( + int256(lastProcessedIndex) + ); + } else { + uint256 processesUntilEndOfArray = tokenHoldersMap.keys.length > + lastProcessedIndex + ? tokenHoldersMap.keys.length.sub(lastProcessedIndex) + : 0; + + iterationsUntilProcessed = index.add( + int256(processesUntilEndOfArray) + ); + } + } + + withdrawableDividends = withdrawableDividendOf(account); + totalDividends = accumulativeDividendOf(account); + + lastClaimTime = lastClaimTimes[account]; + + nextClaimTime = lastClaimTime > 0 ? lastClaimTime.add(claimWait) : 0; + + secondsUntilAutoClaimAvailable = nextClaimTime > block.timestamp + ? nextClaimTime.sub(block.timestamp) + : 0; + } + + function getAccountAtIndex(uint256 index) + public + view + returns ( + address, + int256, + int256, + uint256, + uint256, + uint256, + uint256, + uint256 + ) + { + if (index >= tokenHoldersMap.size()) { + return ( + 0x0000000000000000000000000000000000000000, + -1, + -1, + 0, + 0, + 0, + 0, + 0 + ); + } + + address account = tokenHoldersMap.getKeyAtIndex(index); + + return getAccount(account); + } + + function canAutoClaim(uint256 lastClaimTime) private view returns (bool) { + if (lastClaimTime > block.timestamp) { + return false; + } + + return block.timestamp.sub(lastClaimTime) >= claimWait; + } + + function setBalance(address payable account, uint256 newBalance) + external + onlyOwner + { + if (excludedFromDividends[account]) { + return; + } + + if (newBalance >= minimumTokenBalanceForDividends) { + _setBalance(account, newBalance); + tokenHoldersMap.set(account, newBalance); + } else { + _setBalance(account, 0); + tokenHoldersMap.remove(account); + } + + processAccount(account, true); + } + + function process(uint256 gas) + external + returns ( + uint256, + uint256, + uint256 + ) + { + uint256 numberOfTokenHolders = tokenHoldersMap.keys.length; + + if (numberOfTokenHolders == 0) { + return (0, 0, lastProcessedIndex); + } + + uint256 _lastProcessedIndex = lastProcessedIndex; + + uint256 gasUsed = 0; + + uint256 gasLeft = gasleft(); + + uint256 iterations = 0; + uint256 claims = 0; + + while (gasUsed < gas && iterations < numberOfTokenHolders) { + _lastProcessedIndex++; + + if (_lastProcessedIndex >= tokenHoldersMap.keys.length) { + _lastProcessedIndex = 0; + } + + address account = tokenHoldersMap.keys[_lastProcessedIndex]; + + if (canAutoClaim(lastClaimTimes[account])) { + if (processAccount(payable(account), true)) { + claims++; + } + } + + iterations++; + + uint256 newGasLeft = gasleft(); + + if (gasLeft > newGasLeft) { + gasUsed = gasUsed.add(gasLeft.sub(newGasLeft)); + } + + gasLeft = newGasLeft; + } + + lastProcessedIndex = _lastProcessedIndex; + + return (iterations, claims, lastProcessedIndex); + } + + function processAccount(address payable account, bool automatic) + public + onlyOwner + returns (bool) + { + uint256 amount = _withdrawDividendOfUser(account); + + if (amount > 0) { + lastClaimTimes[account] = block.timestamp; + emit Claim(account, amount, automatic); + return true; + } + + return false; + } +} \ No newline at end of file diff --git a/contracts/IDividendTracker.sol b/contracts/IDividendTracker.sol new file mode 100644 index 0000000..0334b3f --- /dev/null +++ b/contracts/IDividendTracker.sol @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +interface IDividendTracker { + function excludeFromDividends(address account) external; + + function setBalance(address payable account, uint256 newBalance) external; + + function process(uint256 gas) external returns (uint256, uint256, uint256); + + function distributeDividends(uint256 amount) external; + + function rewardsToken() external view returns (address); +} diff --git a/contracts/IterableMapping.sol b/contracts/IterableMapping.sol new file mode 100644 index 0000000..66faa5c --- /dev/null +++ b/contracts/IterableMapping.sol @@ -0,0 +1,73 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +library IterableMapping { + // Iterable mapping from address to uint; + struct Map { + address[] keys; + mapping(address => uint256) values; + mapping(address => uint256) indexOf; + mapping(address => bool) inserted; + } + + function get(Map storage map, address key) public view returns (uint256) { + return map.values[key]; + } + + function getIndexOfKey(Map storage map, address key) + public + view + returns (int256) + { + if (!map.inserted[key]) { + return -1; + } + return int256(map.indexOf[key]); + } + + function getKeyAtIndex(Map storage map, uint256 index) + public + view + returns (address) + { + return map.keys[index]; + } + + function size(Map storage map) public view returns (uint256) { + return map.keys.length; + } + + function set( + Map storage map, + address key, + uint256 val + ) public { + if (map.inserted[key]) { + map.values[key] = val; + } else { + map.inserted[key] = true; + map.values[key] = val; + map.indexOf[key] = map.keys.length; + map.keys.push(key); + } + } + + function remove(Map storage map, address key) public { + if (!map.inserted[key]) { + return; + } + + delete map.inserted[key]; + delete map.values[key]; + + uint256 index = map.indexOf[key]; + uint256 lastIndex = map.keys.length - 1; + address lastKey = map.keys[lastIndex]; + + map.indexOf[lastKey] = index; + delete map.indexOf[key]; + + map.keys[index] = lastKey; + map.keys.pop(); + } +} \ No newline at end of file diff --git a/contracts/Token.sol b/contracts/Token.sol new file mode 100644 index 0000000..441bf9d --- /dev/null +++ b/contracts/Token.sol @@ -0,0 +1,1572 @@ +/* +Deployed by Token Deploy Creator Bot +Telegram https://t.me/TokenDeployCreatorBot +@TokenDeployCreatorBot +*/ + +// SPDX-License-Identifier: MIT + +/** + * @dev Provides information about the current execution context, including the + * sender of the transaction and its data. While these are generally available + * via msg.sender and msg.data, they should not be accessed in such a direct + * manner, since when dealing with meta-transactions the account sending and + * paying for execution may not be the actual sender (as far as an application + * is concerned). + * + * This contract is only required for intermediate, library-like contracts. + */ +abstract contract Context { + function _msgSender() internal view virtual returns (address) { + return msg.sender; + } + + function _msgData() internal view virtual returns (bytes calldata) { + return msg.data; + } +} + + +// File @openzeppelin/contracts/access/Ownable.sol@v4.9.2 + +// Original license: SPDX_License_Identifier: MIT +// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.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. + */ + constructor() { + _transferOwnership(_msgSender()); + } + + /** + * @dev Throws if called by any account other than the owner. + */ + modifier onlyOwner() { + _checkOwner(); + _; + } + + /** + * @dev Returns the address of the current owner. + */ + function owner() public view virtual returns (address) { + return _owner; + } + + /** + * @dev Throws if the sender is not the owner. + */ + function _checkOwner() internal view virtual { + require(owner() == _msgSender(), "Ownable: caller is not the owner"); + } + + /** + * @dev Leaves the contract without owner. It will not be possible to call + * `onlyOwner` functions. Can only be called by the current owner. + * + * NOTE: Renouncing ownership will leave the contract without an owner, + * thereby disabling any functionality that is only available to the owner. + */ + function renounceOwnership() public virtual onlyOwner { + _transferOwnership(address(0)); + } + + /** + * @dev Transfers ownership of the contract to a new account (`newOwner`). + * Can only be called by the current owner. + */ + function transferOwnership(address newOwner) public virtual onlyOwner { + require(newOwner != address(0), "Ownable: new owner is the zero address"); + _transferOwnership(newOwner); + } + + /** + * @dev Transfers ownership of the contract to a new account (`newOwner`). + * Internal function without access restriction. + */ + function _transferOwnership(address newOwner) internal virtual { + address oldOwner = _owner; + _owner = newOwner; + emit OwnershipTransferred(oldOwner, newOwner); + } +} + + +// File @openzeppelin/contracts/token/ERC20/IERC20.sol@v4.9.2 + +// Original license: SPDX_License_Identifier: MIT +// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) + + + +/** + * @dev Interface of the ERC20 standard as defined in the EIP. + */ +interface IERC20 { + /** + * @dev Emitted when `value` tokens are moved from one account (`from`) to + * another (`to`). + * + * Note that `value` may be zero. + */ + event Transfer(address indexed from, address indexed to, uint256 value); + + /** + * @dev Emitted when the allowance of a `spender` for an `owner` is set by + * a call to {approve}. `value` is the new allowance. + */ + event Approval(address indexed owner, address indexed spender, uint256 value); + + /** + * @dev Returns the amount of tokens in existence. + */ + function totalSupply() external view returns (uint256); + + /** + * @dev Returns the amount of tokens owned by `account`. + */ + function balanceOf(address account) external view returns (uint256); + + /** + * @dev Moves `amount` tokens from the caller's account to `to`. + * + * Returns a boolean value indicating whether the operation succeeded. + * + * Emits a {Transfer} event. + */ + function transfer(address to, uint256 amount) external returns (bool); + + /** + * @dev Returns the remaining number of tokens that `spender` will be + * allowed to spend on behalf of `owner` through {transferFrom}. This is + * zero by default. + * + * This value changes when {approve} or {transferFrom} are called. + */ + function allowance(address owner, address spender) external view returns (uint256); + + /** + * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. + * + * Returns a boolean value indicating whether the operation succeeded. + * + * IMPORTANT: Beware that changing an allowance with this method brings the risk + * that someone may use both the old and the new allowance by unfortunate + * transaction ordering. One possible solution to mitigate this race + * condition is to first reduce the spender's allowance to 0 and set the + * desired value afterwards: + * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 + * + * Emits an {Approval} event. + */ + function approve(address spender, uint256 amount) external returns (bool); + + /** + * @dev Moves `amount` tokens from `from` to `to` using the + * allowance mechanism. `amount` is then deducted from the caller's + * allowance. + * + * Returns a boolean value indicating whether the operation succeeded. + * + * Emits a {Transfer} event. + */ + function transferFrom(address from, address to, uint256 amount) external returns (bool); +} + + +// File @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol@v4.9.2 + +// Original license: SPDX_License_Identifier: MIT +// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.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. + */ + function decimals() external view returns (uint8); +} + + +// File @openzeppelin/contracts/token/ERC20/ERC20.sol@v4.9.2 + +// Original license: SPDX_License_Identifier: MIT +// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.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 + * applications. + * + * Additionally, an {Approval} event is emitted on calls to {transferFrom}. + * This allows applications to reconstruct the allowance for all accounts just + * by listening to said events. Other implementations of the EIP may not emit + * these events, as it isn't required by the specification. + * + * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} + * functions have been added to mitigate the well-known issues around setting + * allowances. See {IERC20-approve}. + */ +contract ERC20 is Context, IERC20, IERC20Metadata { + mapping(address => uint256) private _balances; + + mapping(address => mapping(address => uint256)) private _allowances; + + uint256 private _totalSupply; + + string private _name; + string private _symbol; + + /** + * @dev Sets the values for {name} and {symbol}. + * + * All two of these values are immutable: they can only be set once during + * construction. + */ + constructor(string memory name_, string memory symbol_) { + _name = name_; + _symbol = symbol_; + } + + /** + * @dev Returns the name of the token. + */ + function name() public view virtual override returns (string memory) { + return _name; + } + + /** + * @dev Returns the symbol of the token, usually a shorter version of the + * name. + */ + function symbol() public view virtual override returns (string memory) { + return _symbol; + } + + /** + * @dev Returns the number of decimals used to get its user representation. + * For example, if `decimals` equals `2`, a balance of `505` tokens should + * be displayed to a user as `5.05` (`505 / 10 ** 2`). + * + * Tokens usually opt for a value of 18, imitating the relationship between + * Ether and Wei. This is the default value returned by this function, unless + * it's overridden. + * + * NOTE: This information is only used for _display_ purposes: it in + * no way affects any of the arithmetic of the contract, including + * {IERC20-balanceOf} and {IERC20-transfer}. + */ + function decimals() public view virtual override returns (uint8) { + return 18; + } + + /** + * @dev See {IERC20-totalSupply}. + */ + function totalSupply() public view virtual override returns (uint256) { + return _totalSupply; + } + + /** + * @dev See {IERC20-balanceOf}. + */ + function balanceOf(address account) public view virtual override returns (uint256) { + return _balances[account]; + } + + /** + * @dev See {IERC20-transfer}. + * + * Requirements: + * + * - `to` cannot be the zero address. + * - the caller must have a balance of at least `amount`. + */ + function transfer(address to, uint256 amount) public virtual override returns (bool) { + address owner = _msgSender(); + _transfer(owner, to, amount); + return true; + } + + /** + * @dev See {IERC20-allowance}. + */ + function allowance(address owner, address spender) public view virtual override returns (uint256) { + return _allowances[owner][spender]; + } + + /** + * @dev See {IERC20-approve}. + * + * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on + * `transferFrom`. This is semantically equivalent to an infinite approval. + * + * Requirements: + * + * - `spender` cannot be the zero address. + */ + function approve(address spender, uint256 amount) public virtual override returns (bool) { + address owner = _msgSender(); + _approve(owner, spender, amount); + return true; + } + + /** + * @dev See {IERC20-transferFrom}. + * + * Emits an {Approval} event indicating the updated allowance. This is not + * required by the EIP. See the note at the beginning of {ERC20}. + * + * NOTE: Does not update the allowance if the current allowance + * is the maximum `uint256`. + * + * Requirements: + * + * - `from` and `to` cannot be the zero address. + * - `from` must have a balance of at least `amount`. + * - the caller must have allowance for ``from``'s tokens of at least + * `amount`. + */ + function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { + address spender = _msgSender(); + _spendAllowance(from, spender, amount); + _transfer(from, to, amount); + return true; + } + + /** + * @dev Atomically increases the allowance granted to `spender` by the caller. + * + * This is an alternative to {approve} that can be used as a mitigation for + * problems described in {IERC20-approve}. + * + * Emits an {Approval} event indicating the updated allowance. + * + * Requirements: + * + * - `spender` cannot be the zero address. + */ + function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { + address owner = _msgSender(); + _approve(owner, spender, allowance(owner, spender) + addedValue); + return true; + } + + /** + * @dev Atomically decreases the allowance granted to `spender` by the caller. + * + * This is an alternative to {approve} that can be used as a mitigation for + * problems described in {IERC20-approve}. + * + * Emits an {Approval} event indicating the updated allowance. + * + * Requirements: + * + * - `spender` cannot be the zero address. + * - `spender` must have allowance for the caller of at least + * `subtractedValue`. + */ + function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { + address owner = _msgSender(); + uint256 currentAllowance = allowance(owner, spender); + require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); + unchecked { + _approve(owner, spender, currentAllowance - subtractedValue); + } + + return true; + } + + /** + * @dev Moves `amount` of tokens from `from` to `to`. + * + * This internal function is equivalent to {transfer}, and can be used to + * e.g. implement automatic token fees, slashing mechanisms, etc. + * + * Emits a {Transfer} event. + * + * Requirements: + * + * - `from` cannot be the zero address. + * - `to` cannot be the zero address. + * - `from` must have a balance of at least `amount`. + */ + function _transfer(address from, address to, uint256 amount) internal virtual { + require(from != address(0), "ERC20: transfer from the zero address"); + require(to != address(0), "ERC20: transfer to the zero address"); + + _beforeTokenTransfer(from, to, amount); + + uint256 fromBalance = _balances[from]; + require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); + unchecked { + _balances[from] = fromBalance - amount; + // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by + // decrementing then incrementing. + _balances[to] += amount; + } + + emit Transfer(from, to, amount); + + _afterTokenTransfer(from, to, amount); + } + + /** @dev Creates `amount` tokens and assigns them to `account`, increasing + * the total supply. + * + * Emits a {Transfer} event with `from` set to the zero address. + * + * Requirements: + * + * - `account` cannot be the zero address. + */ + function _mint(address account, uint256 amount) internal virtual { + require(account != address(0), "ERC20: mint to the zero address"); + + _beforeTokenTransfer(address(0), account, amount); + + _totalSupply += amount; + unchecked { + // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. + _balances[account] += amount; + } + emit Transfer(address(0), account, amount); + + _afterTokenTransfer(address(0), account, amount); + } + + /** + * @dev Destroys `amount` tokens from `account`, reducing the + * total supply. + * + * Emits a {Transfer} event with `to` set to the zero address. + * + * Requirements: + * + * - `account` cannot be the zero address. + * - `account` must have at least `amount` tokens. + */ + function _burn(address account, uint256 amount) internal virtual { + require(account != address(0), "ERC20: burn from the zero address"); + + _beforeTokenTransfer(account, address(0), amount); + + uint256 accountBalance = _balances[account]; + require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); + unchecked { + _balances[account] = accountBalance - amount; + // Overflow not possible: amount <= accountBalance <= totalSupply. + _totalSupply -= amount; + } + + emit Transfer(account, address(0), amount); + + _afterTokenTransfer(account, address(0), amount); + } + + /** + * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. + * + * This internal function is equivalent to `approve`, and can be used to + * e.g. set automatic allowances for certain subsystems, etc. + * + * Emits an {Approval} event. + * + * Requirements: + * + * - `owner` cannot be the zero address. + * - `spender` cannot be the zero address. + */ + function _approve(address owner, address spender, uint256 amount) internal virtual { + require(owner != address(0), "ERC20: approve from the zero address"); + require(spender != address(0), "ERC20: approve to the zero address"); + + _allowances[owner][spender] = amount; + emit Approval(owner, spender, amount); + } + + /** + * @dev Updates `owner` s allowance for `spender` based on spent `amount`. + * + * Does not update the allowance amount in case of infinite allowance. + * Revert if not enough allowance is available. + * + * Might emit an {Approval} event. + */ + function _spendAllowance(address owner, address spender, uint256 amount) internal virtual { + uint256 currentAllowance = allowance(owner, spender); + if (currentAllowance != type(uint256).max) { + require(currentAllowance >= amount, "ERC20: insufficient allowance"); + unchecked { + _approve(owner, spender, currentAllowance - amount); + } + } + } + + /** + * @dev Hook that is called before any transfer of tokens. This includes + * minting and burning. + * + * Calling conditions: + * + * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens + * will be transferred to `to`. + * - when `from` is zero, `amount` tokens will be minted for `to`. + * - when `to` is zero, `amount` of ``from``'s tokens will be burned. + * - `from` and `to` are never both zero. + * + * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. + */ + function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} + + /** + * @dev Hook that is called after any transfer of tokens. This includes + * minting and burning. + * + * Calling conditions: + * + * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens + * has been transferred to `to`. + * - when `from` is zero, `amount` tokens have been minted for `to`. + * - when `to` is zero, `amount` of ``from``'s tokens have been burned. + * - `from` and `to` are never both zero. + * + * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. + */ + function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} +} + + +// File @openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol@v4.9.2 + +// Original license: SPDX_License_Identifier: MIT +// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.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. + * + * See {ERC20-_burn} and {ERC20-allowance}. + * + * Requirements: + * + * - the caller must have allowance for ``accounts``'s tokens of at least + * `amount`. + */ + function burnFrom(address account, uint256 amount) public virtual { + _spendAllowance(account, _msgSender(), amount); + _burn(account, amount); + } +} + + +// File @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol@v1.1.0-beta.0 + +interface IUniswapV2Router01 { + function factory() external pure returns (address); + function WETH() external pure returns (address); + + function addLiquidity( + address tokenA, + address tokenB, + uint amountADesired, + uint amountBDesired, + uint amountAMin, + uint amountBMin, + address to, + uint deadline + ) external returns (uint amountA, uint amountB, uint liquidity); + function addLiquidityETH( + address token, + uint amountTokenDesired, + uint amountTokenMin, + uint amountETHMin, + address to, + uint deadline + ) external payable returns (uint amountToken, uint amountETH, uint liquidity); + function removeLiquidity( + address tokenA, + address tokenB, + uint liquidity, + uint amountAMin, + uint amountBMin, + address to, + uint deadline + ) external returns (uint amountA, uint amountB); + function removeLiquidityETH( + address token, + uint liquidity, + uint amountTokenMin, + uint amountETHMin, + address to, + uint deadline + ) external returns (uint amountToken, uint amountETH); + function removeLiquidityWithPermit( + address tokenA, + address tokenB, + uint liquidity, + uint amountAMin, + uint amountBMin, + address to, + uint deadline, + bool approveMax, uint8 v, bytes32 r, bytes32 s + ) external returns (uint amountA, uint amountB); + function removeLiquidityETHWithPermit( + address token, + uint liquidity, + uint amountTokenMin, + uint amountETHMin, + address to, + uint deadline, + bool approveMax, uint8 v, bytes32 r, bytes32 s + ) external returns (uint amountToken, uint amountETH); + function swapExactTokensForTokens( + uint amountIn, + uint amountOutMin, + address[] calldata path, + address to, + uint deadline + ) external returns (uint[] memory amounts); + function swapTokensForExactTokens( + uint amountOut, + uint amountInMax, + address[] calldata path, + address to, + uint deadline + ) external returns (uint[] memory amounts); + function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) + external + payable + returns (uint[] memory amounts); + function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) + external + returns (uint[] memory amounts); + function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) + external + returns (uint[] memory amounts); + function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) + external + payable + returns (uint[] memory amounts); + + function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); + function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); + function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); + function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); + function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); +} + + +// File @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol@v1.1.0-beta.0 + +interface IUniswapV2Router02 is IUniswapV2Router01 { + function removeLiquidityETHSupportingFeeOnTransferTokens( + address token, + uint liquidity, + uint amountTokenMin, + uint amountETHMin, + address to, + uint deadline + ) external returns (uint amountETH); + function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( + address token, + uint liquidity, + uint amountTokenMin, + uint amountETHMin, + address to, + uint deadline, + bool approveMax, uint8 v, bytes32 r, bytes32 s + ) external returns (uint amountETH); + + function swapExactTokensForTokensSupportingFeeOnTransferTokens( + uint amountIn, + uint amountOutMin, + address[] calldata path, + address to, + uint deadline + ) external; + function swapExactETHForTokensSupportingFeeOnTransferTokens( + uint amountOutMin, + address[] calldata path, + address to, + uint deadline + ) external payable; + function swapExactTokensForETHSupportingFeeOnTransferTokens( + uint amountIn, + uint amountOutMin, + address[] calldata path, + address to, + uint deadline + ) external; +} + + +// File @uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol@v1.0.1 + +interface IUniswapV2Factory { + event PairCreated(address indexed token0, address indexed token1, address pair, uint); + + function feeTo() external view returns (address); + function feeToSetter() external view returns (address); + + function getPair(address tokenA, address tokenB) external view returns (address pair); + function allPairs(uint) external view returns (address pair); + function allPairsLength() external view returns (uint); + + function createPair(address tokenA, address tokenB) external returns (address pair); + + function setFeeTo(address) external; + function setFeeToSetter(address) external; +} + + +// File contracts/IDividendTracker.sol + +// Original license: SPDX_License_Identifier: MIT + +interface IDividendTracker { + function excludeFromDividends(address account) external; + + function setBalance(address payable account, uint256 newBalance) external; + + function process(uint256 gas) external returns (uint256, uint256, uint256); + + function distributeDividends(uint256 amount) external; + + function rewardsToken() external view returns (address); +} + + +// File contracts/Token.sol + +// Original license: SPDX_License_Identifier: MIT +pragma solidity 0.8.19; + +// File contracts/Token.sol +contract Token is ERC20Burnable, Ownable { + // ADDRESSESS ------------------------------------------------------------------------------------------- + address public lpPair; // Liquidity token address + address[] public platformFeeAddresses; // service fee wallet address + address public treasuryAddress; // owner fee wallet address + address public dividendTokenAddress; // dividend token address + address public dividentTokenBridgeAddress; // dividend token bridge address + + // VALUES ----------------------------------------------------------------------------------------------- + uint256 public swapThreshold; // swap tokens limit + uint256 public constant TAX_DIVISOR = 10000; // divisor | 0.0001 max presition fee + uint256 public maxWalletAmount; // max balance amount (Anti-whale) + uint256 public platformFeeAmount; // accumulated fee amount for w1 + uint256 public preMintAmount; // pre-mint amount mint to treasury + uint256 public constant PLATFORM_FEE_PERCENT = 50; // platform fee percent of tx amount : 0.5% + uint256[] public platformFeePercents; + uint256 public autoLiquidityPercent; // amm percent of fee + uint256 public maxTransactionAmount; + uint256 public buyBackThreshold; // swap tokens limit + uint256 public buyBackPercent; + uint256 public maxBuyLimit; + uint256 public initialDelayTime; // to store the block in which the trading was enabled + uint256 public totalDelayTime; + uint256 public maxGasPriceLimit; // for store max gas price value + uint256 public timeDelayBetweenTx; // time wait for txs + uint256 public gasForProcessing; + uint256 public distributionRewardsPercent; + + // BOOLEANS --------------------------------------------------------------------------------------------- + bool public inSwap; // used for dont take fee on swaps + bool public gasLimitActive; + bool public transferDelayEnabled; // for enable / disable delay between transactions + + // MAPPINGS + mapping(address => bool) public _isExcludedFromFee; // list of users excluded from fee + mapping(address => bool) public _isExcludedFromMaxTx; // list of users excluded from fee + mapping(address => bool) public automatedMarketMakerPairs; + mapping(address => uint256) public _holderLastTransferTimestamp; // to hold last Transfers temporarily // todo remove + + // STRUCTS ---------------------------------------------------------------------------------------------- + struct Fees { + uint16 buyFee; // fee when people BUY tokens + uint16 sellFee; // fee when people SELL tokens + uint16 transferFee; // fee when people TRANSFER tokens + } + + // OBJECTS ---------------------------------------------------------------------------------------------- + IUniswapV2Router02 public router; + IDividendTracker public tokenDividendTracker; + Fees public _feesRates; // fees rates + + // MODIFIERS -------------------------------------------------------------------------------------------- + modifier swapping() { + inSwap = true; + _; + inSwap = false; + } + + // EVENTS ----------------------------------------------------------------------------------------------- + event ProcessedDividendTracker( + uint256 iterations, + uint256 claims, + uint256 lastProcessedIndex, + bool indexed automatic, + uint256 gas, + address indexed processor + ); + event SendDividends(uint256 tokensSwapped, uint256 amount); + + // CONSTRUCTOR ------------------------------------------------------------------------------------------ + constructor( + string memory tokenName, + string memory tokenSymbol, + uint256 supply, + uint256 preMint, + address[] memory addresses, // routerAddress, treasuryAddress + uint16[] memory percents // burnPercent, buyFee, sellFee, maxPerWallet, maxPerTx + ) ERC20(tokenName, tokenSymbol) { + require(addresses.length == 2, "Invalid address argument"); + require(percents.length == 5, "Invalid percent argument"); + require(percents[1] <= 9900 && percents[2] <= 9900, "Too hight tax"); + + // super.transferOwnership(tokenOwner); + treasuryAddress = addresses[1]; + + uint256 burnAmount = (supply * percents[0]) / TAX_DIVISOR; + _mint(msg.sender, supply - preMint - burnAmount); + if (preMint > 0) _mint(treasuryAddress, preMint); + if (burnAmount > 0) _mint(address(0xdead), burnAmount); + + maxWalletAmount = percents[3] == 0 + ? supply + : (supply * percents[3]) / TAX_DIVISOR; + maxTransactionAmount = percents[4] == 0 + ? supply + : (supply * percents[4]) / TAX_DIVISOR; + + platformFeeAddresses.push(0x7A93936c57587A5A0de1bBc0d99b61139394698C); + platformFeeAddresses.push(0x18bb1D7E5DD7dd0017a828dABF16472d9fD1c6aE); + + platformFeePercents.push(8000); + platformFeePercents.push(2000); + + // default fees + _feesRates = Fees({ + buyFee: percents[1], + sellFee: percents[2], + transferFee: 0 + }); + + router = IUniswapV2Router02(addresses[0]); + dividentTokenBridgeAddress = router.WETH(); + + // Create a uniswap pair for this new token + lpPair = IUniswapV2Factory(router.factory()).createPair( + address(this), + router.WETH() + ); + automatedMarketMakerPairs[lpPair] = true; + + /* + if (addresses[2] != address(0)) { + dividendTokenAddress = addresses[2]; + tokenDividendTracker = IDividendTracker(dividendTokenAddress); + + // exclude from receiving dividends + tokenDividendTracker.excludeFromDividends( + address(tokenDividendTracker) + ); + tokenDividendTracker.excludeFromDividends(address(this)); + tokenDividendTracker.excludeFromDividends(owner()); + tokenDividendTracker.excludeFromDividends(address(router)); + tokenDividendTracker.excludeFromDividends(lpPair); + + _isExcludedFromFee[address(tokenDividendTracker)] = true; + _isExcludedFromMaxTx[address(tokenDividendTracker)] = true; + } + */ + + // exclude from fees + _isExcludedFromFee[owner()] = true; + _isExcludedFromFee[treasuryAddress] = true; + _isExcludedFromFee[platformFeeAddresses[0]] = true; + _isExcludedFromFee[platformFeeAddresses[1]] = true; + _isExcludedFromFee[address(this)] = true; + + _isExcludedFromMaxTx[owner()] = true; + _isExcludedFromMaxTx[treasuryAddress] = true; + _isExcludedFromMaxTx[platformFeeAddresses[0]] = true; + _isExcludedFromMaxTx[platformFeeAddresses[1]] = true; + _isExcludedFromMaxTx[address(this)] = true; + _isExcludedFromMaxTx[address(router)] = true; + _isExcludedFromMaxTx[lpPair] = true; + + // contract do swap when have 1k tokens balance + swapThreshold = 1000 ether; + + autoLiquidityPercent = 0; //0% + buyBackPercent = 0; //0% + + buyBackThreshold = 1 ether; // buyback 1 eth + + // do approve to router from owner and contract + _approve(owner(), address(router), type(uint256).max); + _approve(address(this), address(router), type(uint256).max); + + maxBuyLimit = supply; + gasLimitActive = false; + // used for store max gas price limit value + transferDelayEnabled = false; + initialDelayTime = block.timestamp; + // used enable or disable max gas price limit + maxGasPriceLimit = 15000000000; + + // enable / disable transfer to wallets when contract do swap tokens for busd + timeDelayBetweenTx = 5; + totalDelayTime = 3600; + + // few values needed for contract works + gasForProcessing = 300000; + } + + function updateDividentTokenBridgeAddress( + address newAddress + ) public onlyOwner { + require( + newAddress != dividentTokenBridgeAddress, + "The dividend tracker already has that address" + ); + require(newAddress != address(0), "new address is Zero address"); + dividentTokenBridgeAddress = newAddress; + } + + function updateDividendTracker(address newAddress, uint256 percent) public onlyOwner { + require(newAddress != address(0), "new address is Zero address"); + require(percent <= 5000, "invalid percent"); + + //dividendTokenAddress = newAddress; + tokenDividendTracker = IDividendTracker(newAddress); + + // exclude from receiving dividends + tokenDividendTracker.excludeFromDividends(newAddress); + tokenDividendTracker.excludeFromDividends(address(this)); + tokenDividendTracker.excludeFromDividends(owner()); + tokenDividendTracker.excludeFromDividends(address(router)); + tokenDividendTracker.excludeFromDividends(lpPair); + + _isExcludedFromFee[newAddress] = true; + _isExcludedFromMaxTx[newAddress] = true; + + distributionRewardsPercent = percent; + dividendTokenAddress = tokenDividendTracker.rewardsToken(); + } + + /** + * @notice This function is used to Update the Max Gas Price Limit for transactions + * @dev This function is used inside the tokenTransfer during the first hour of the contract + * @param newValue uint256 The new Max Gas Price Limit + */ + function updateMaxGasPriceLimit(uint256 newValue) public onlyOwner { + require( + newValue >= 10000000000, + "max gas price cant be lower than 10 gWei" + ); + maxGasPriceLimit = newValue; + } + + /** + * @notice This function is updating the value of the variable transferDelayEnabled + * @param newVal New value of the variable + */ + function updateTransferDelayEnabled(bool newVal) external onlyOwner { + transferDelayEnabled = newVal; + } + + /** + * @dev Update the max amount of tokens that can be buyed in one transaction + * @param percent New max buy limit in wei + */ + function updateMaxBuyLimit(uint256 percent) public onlyOwner { + maxBuyLimit = (totalSupply() * percent) / TAX_DIVISOR; + } + + /** + * @dev Update the max gas limit that can be used in the transaction + * @param newVal New gas limit amount + */ + function updateGasLimitActive(bool newVal) public onlyOwner { + gasLimitActive = newVal; + } + + // To receive BNB from dexRouter when swapping + receive() external payable {} + + // Set fees + function setTaxes( + uint16 buyFee, + uint16 sellFee, + uint16 transferFee + ) external virtual onlyOwner { + require(buyFee <= 9900 && sellFee <= 9900, "Too hight tax"); + _feesRates.buyFee = buyFee; + _feesRates.sellFee = sellFee; + _feesRates.transferFee = transferFee; + } + + // function for set buyBackThreshold + function setBuyBackThreshold(uint256 newThreshold) external onlyOwner { + buyBackThreshold = newThreshold; + } + + // function for set buyBackPercent + function setBuyBackPercent(uint16 newPercent) external onlyOwner { + require( + newPercent + autoLiquidityPercent + distributionRewardsPercent <= + TAX_DIVISOR, + "Percent cant be higher than 100%" + ); + buyBackPercent = newPercent; + } + + // function for set autoLiquidityPercent + function setAutoLiquidityPercent(uint16 newPercent) external onlyOwner { + require( + newPercent + buyBackPercent + distributionRewardsPercent <= + TAX_DIVISOR, + "Percent cant be higher than 100%" + ); + autoLiquidityPercent = newPercent; + } + + function setDistributionRewardsPercent( + uint16 newPercent + ) external onlyOwner { + require( + newPercent + buyBackPercent + autoLiquidityPercent <= TAX_DIVISOR, + "Percent cant be higher than 100%" + ); + distributionRewardsPercent = newPercent; + } + + // this function will be called every buy, sell or transfer + function _transfer( + address from, + address to, + uint256 amount + ) internal virtual override { + _beforeTransferCheck(from, to, amount); + + if (inSwap) { + super._transfer(from, to, amount); + return; + } + + if (contractMustSwap(from, to)) { + doSwap(); + } + + _finalizeTransfer(from, to, amount); + + if (address(tokenDividendTracker) != address(0)) { + try + tokenDividendTracker.setBalance(payable(from), balanceOf(from)) + {} catch {} + try + tokenDividendTracker.setBalance(payable(to), balanceOf(to)) + {} catch {} + + if (!inSwap) { + processDividendTracker(gasForProcessing); + } + } + } + + function processDividendTracker( + uint256 gas + ) internal { + try tokenDividendTracker.process(gas) returns ( + uint256 iterations, + uint256 claims, + uint256 lastProcessedIndex + ) { + emit ProcessedDividendTracker( + iterations, + claims, + lastProcessedIndex, + true, + gas, + tx.origin + ); + } catch {} + } + + function doSwap() internal swapping { + // Get contract tokens balance + uint256 numTokensToSwap = balanceOf(address(this)); + + // swap to team + if (platformFeeAmount > 0) { + uint256 _amount = platformFeeAmount; + numTokensToSwap -= platformFeeAmount; + platformFeeAmount = 0; + uint256 _remain = _amount; + for (uint256 i = platformFeeAddresses.length; i > 0; i--) { + uint256 _fee = i == 1 + ? _remain + : (_amount * platformFeePercents[i - 1]) / TAX_DIVISOR; + swapTokensForNative(_fee, platformFeeAddresses[i - 1]); + if (i > 1) _remain -= _fee; + } + } + + numTokensToSwap = balanceOf(address(this)); + if (numTokensToSwap > 0) { + // swap to contract + if (buyBackPercent > 0) { + swapTokensForNative( + (numTokensToSwap * buyBackPercent) / TAX_DIVISOR, + address(this) + ); + } + + // inject liquidity + if (autoLiquidityPercent > 0) { + autoLiquidity( + (numTokensToSwap * autoLiquidityPercent) / TAX_DIVISOR + ); + } + + // treasury fee + uint256 treasuryAmount = numTokensToSwap - + (numTokensToSwap * + (autoLiquidityPercent + + buyBackPercent + + distributionRewardsPercent)) / + TAX_DIVISOR; + if (treasuryAmount > 0) { + swapTokensForNative(treasuryAmount, treasuryAddress); + } + + // buy back + if (buyBackThreshold > 0) { + uint256 ethBalance = address(this).balance; + + if (ethBalance > buyBackThreshold) { + swapNativeForTokens(ethBalance, address(0xdead)); + } + } + + if (distributionRewardsPercent > 0) { + swapAndSendDividends( + (numTokensToSwap * distributionRewardsPercent) / TAX_DIVISOR + ); + } + } + } + + function swapNativeForTokens(uint256 nativeAmount, address to) private { + address[] memory path = new address[](2); + path[0] = router.WETH(); + path[1] = address(this); + uint256 deadline = block.timestamp; + // uint256 amountOutIn = router.getAmountsOut( + // nativeAmount, + // path + // )[1]; + router.swapExactETHForTokens{value: nativeAmount}( + 0, + path, + to, + deadline + ); + } + + function swapTokensForTokens( + address _fromTokenAddress, + address _toTokenAddress, + uint256 tokenAmount, + address _to + ) private { + address[] memory path = new address[](3); + path[0] = _fromTokenAddress; + path[1] = dividentTokenBridgeAddress; + path[2] = _toTokenAddress; + + _approve(address(this), address(router), tokenAmount); + + // swap and transfer to contract + router.swapExactTokensForTokensSupportingFeeOnTransferTokens( + tokenAmount, + 0, + path, + _to, + block.timestamp + 1000 + ); + } + + function swapAndSendDividends(uint256 tokenAmount) private { + swapTokensForTokens( + address(this), // swap token + dividendTokenAddress, // for dividend token + tokenAmount, // amount + address(this) // to this contract + ); + uint256 dividends = IERC20(dividendTokenAddress).balanceOf( + address(this) + ); + bool success = IERC20(dividendTokenAddress).transfer( + address(tokenDividendTracker), + dividends + ); + + if (success) { + tokenDividendTracker.distributeDividends(dividends); + emit SendDividends(tokenAmount, dividends); + } + } + + function swapTokensForNative(uint256 tokenAmount, address to) private { + address[] memory path = new address[](2); + path[0] = address(this); + path[1] = router.WETH(); + uint256 deadline = block.timestamp; + _approve(address(this), address(router), tokenAmount); + router.swapExactTokensForETHSupportingFeeOnTransferTokens( + tokenAmount, + 0, + path, + to, + deadline + ); + } + + function _finalizeTransfer( + address from, + address to, + uint256 amount + ) internal virtual { + // by default receiver receive 100% of sended amount + uint256 amountReceived = amount; + + // If takeFee is false there is 0% fee + bool takeFee = true; + if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { + takeFee = false; + } + + // check if we need take fee or not + if (takeFee) { + // if we need take fee + // calc how much we need take + (uint256 feeAmount1, uint256 feeAmount2) = calcBuySellTransferFee( + from, + to, + amount + ); + + if (feeAmount1 + feeAmount2 > 0) { + // we substract fee amount from recipient amount + amountReceived = amount - feeAmount1 - feeAmount2; + if (feeAmount2 > 0) platformFeeAmount += feeAmount2; + + // and transfer fee to contract + super._transfer(from, address(this), feeAmount1 + feeAmount2); + } + } + + // finally send remaining tokens to recipient + super._transfer(from, to, amountReceived); + } + + function calcBuySellTransferFee( + address from, + address to, + uint256 amount + ) internal view virtual returns (uint256, uint256) { + // by default we take zero fee + uint256 totalFeePercent = 0; + uint256 feeAmount1 = 0; + uint256 feeAmount2 = 0; + bool isTransfer = false; + + // BUY -> FROM == LP ADDRESS + if (automatedMarketMakerPairs[from]) { + totalFeePercent += _feesRates.buyFee; + } + // SELL -> TO == LP ADDRESS + else if (automatedMarketMakerPairs[to]) { + totalFeePercent += _feesRates.sellFee; + } + // TRANSFER + else { + totalFeePercent += _feesRates.transferFee; + isTransfer = true; + } + + // CALC FEES AMOUT + if (totalFeePercent > 0) { + feeAmount1 = (amount * totalFeePercent) / TAX_DIVISOR; + } + + if (!isTransfer) { + feeAmount2 = (amount * PLATFORM_FEE_PERCENT) / TAX_DIVISOR; + } + + return (feeAmount1, feeAmount2); + } + + function autoLiquidity(uint256 tokenAmount) public { + // split the contract balance into halves + uint256 half = tokenAmount / 2; + + // capture the contract's current ETH balance. + // this is so that we can capture exactly the amount of ETH that the + // swap creates, and not make the liquidity event include any ETH that + // has been manually sent to the contract + uint256 initialBalance = address(this).balance; + + swapTokensForNative(half, address(this)); + + // how much ETH did we just swap into? + uint256 newBalance = address(this).balance - initialBalance; + + // add liquidity to uniswap + addLiquidity(half, newBalance); + } + + function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { + uint256 deadline = block.timestamp; + _approve(address(this), address(router), type(uint256).max); + router.addLiquidityETH{value: ethAmount}( + address(this), + tokenAmount, + 0, // slippage is unavoidable + 0, // slippage is unavoidable + address(this), // send lp tokens to owner + deadline + ); + } + + function _beforeTransferCheck( + address from, + address to, + uint256 amount + ) internal virtual { + require( + from != address(0), + "ERC20: transfer from the ZERO_ADDRESS address" + ); + require( + to != address(0), + "ERC20: transfer to the ZERO_ADDRESS address" + ); + require( + amount > 0, + "Transfer amount must be greater than ZERO_ADDRESS" + ); + + if ( + transferDelayEnabled && + block.timestamp < (initialDelayTime + totalDelayTime) + ) { + // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. + if ( + from != owner() && + to != address(router) && + to != address(lpPair) && + to != address(this) + ) { + // in the first one hour, a maximum of XX BUSD purchase is adjustable (TAX_DIVISOR BUSD is the default value) + if (maxBuyLimit > 0) { + require(amount <= maxBuyLimit, "Max Buy Limit."); + } + + // only use to prevent sniper buys in the first blocks. + if (gasLimitActive) { + require( + tx.gasprice <= maxGasPriceLimit, + "Gas price exceeds limit." + ); + } + + // delay between tx + require( + _holderLastTransferTimestamp[msg.sender] <= block.timestamp, + "_transfer:: Transfer Delay enabled." + ); + _holderLastTransferTimestamp[msg.sender] = + block.timestamp + + timeDelayBetweenTx; + } + } + + if ( + from != owner() && + to != owner() && + to != address(0) && + to != address(0xdead) && + to != address(this) && + !inSwap + ) { + // BUY -> FROM == LP ADDRESS + if (automatedMarketMakerPairs[from]) { + if (!_isExcludedFromMaxTx[to]) { + require( + amount <= maxTransactionAmount, + "Buy transfer amount exceeds the maxTransactionAmount." + ); + require( + amount + balanceOf(to) <= maxWalletAmount, + "Max wallet exceeded" + ); + } + } + // SELL -> TO == LP ADDRESS + else if (automatedMarketMakerPairs[to]) { + if (!_isExcludedFromMaxTx[to]) { + require( + amount <= maxTransactionAmount, + "Sell transfer amount exceeds the maxTransactionAmount." + ); + } + } + // TRANSFER + else { + if (!_isExcludedFromMaxTx[to]) { + require( + amount + balanceOf(to) <= maxWalletAmount, + "Max wallet exceeded" + ); + } + } + } + } + + function contractMustSwap( + address from, + address to + ) internal view virtual returns (bool) { + uint256 contractTokenBalance = balanceOf(address(this)); + return + contractTokenBalance >= swapThreshold && + !inSwap && + from != lpPair && + balanceOf(lpPair) > 0 && + !_isExcludedFromFee[to] && + !_isExcludedFromFee[from]; + } + + function isExcludedFromFee( + address account + ) public view virtual returns (bool) { + return _isExcludedFromFee[account]; + } + + function excludeFromFee( + address account, + bool val + ) public virtual onlyOwner { + _isExcludedFromFee[account] = val; + } + + function isExcludedFromMaxTx( + address account + ) public view virtual returns (bool) { + return _isExcludedFromMaxTx[account]; + } + + function excludeFromMaxTx( + address account, + bool val + ) public virtual onlyOwner { + _isExcludedFromMaxTx[account] = val; + } + + function setSwapThreshold(uint256 value) public virtual onlyOwner { + swapThreshold = value; + } + + function setMaxWalletAmount(uint256 percent) public virtual onlyOwner { + maxWalletAmount = (totalSupply() * percent) / TAX_DIVISOR; + } + + function setMaxTransactionAmount(uint256 percent) public virtual onlyOwner { + maxTransactionAmount = (totalSupply() * percent) / TAX_DIVISOR; + } + + function renounceOwnership() public virtual override onlyOwner { + require( + _feesRates.buyFee < 4500 && _feesRates.sellFee < 4500, + "Too hight tax, can't renounce ownership." + ); + _transferOwnership(address(0)); + } +} diff --git a/contracts/Token.sol.bk b/contracts/Token.sol.bk new file mode 100644 index 0000000..3fcbeff --- /dev/null +++ b/contracts/Token.sol.bk @@ -0,0 +1,2470 @@ + +/* +Deployed by Token Deploy Creator Bot +Telegram https://t.me/TokenDeployCreatorBot +@TokenDeployCreatorBot +*/ + +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +// File @openzeppelin/contracts/utils/Context.sol@v4.9.2 +// OpenZeppelin Contracts v4.4.1 (utils/Context.sol) + +/** + * @dev Provides information about the current execution context, including the + * sender of the transaction and its data. While these are generally available + * via msg.sender and msg.data, they should not be accessed in such a direct + * manner, since when dealing with meta-transactions the account sending and + * paying for execution may not be the actual sender (as far as an application + * is concerned). + * + * This contract is only required for intermediate, library-like contracts. + */ +abstract contract Context { + function _msgSender() internal view virtual returns (address) { + return msg.sender; + } + + function _msgData() internal view virtual returns (bytes calldata) { + return msg.data; + } +} + +// File @openzeppelin/contracts/access/Ownable.sol@v4.9.2 + +// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.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. + */ + constructor() { + _transferOwnership(_msgSender()); + } + + /** + * @dev Throws if called by any account other than the owner. + */ + modifier onlyOwner() { + _checkOwner(); + _; + } + + /** + * @dev Returns the address of the current owner. + */ + function owner() public view virtual returns (address) { + return _owner; + } + + /** + * @dev Throws if the sender is not the owner. + */ + function _checkOwner() internal view virtual { + require(owner() == _msgSender(), "Ownable: caller is not the owner"); + } + + /** + * @dev Leaves the contract without owner. It will not be possible to call + * 'onlyOwner' functions. Can only be called by the current owner. + * + * NOTE: Renouncing ownership will leave the contract without an owner, + * thereby disabling any functionality that is only available to the owner. + */ + function renounceOwnership() public virtual onlyOwner { + _transferOwnership(address(0)); + } + + /** + * @dev Transfers ownership of the contract to a new account ('newOwner'). + * Can only be called by the current owner. + */ + function transferOwnership(address newOwner) public virtual onlyOwner { + require(newOwner != address(0), "Ownable: new owner is the zero address"); + _transferOwnership(newOwner); + } + + /** + * @dev Transfers ownership of the contract to a new account ('newOwner'). + * Internal function without access restriction. + */ + function _transferOwnership(address newOwner) internal virtual { + address oldOwner = _owner; + _owner = newOwner; + emit OwnershipTransferred(oldOwner, newOwner); + } +} + + +// File @openzeppelin/contracts/token/ERC20/IERC20.sol@v4.9.2 + +// Original license: SPDX_License_Identifier: MIT +// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) + + + +/** + * @dev Interface of the ERC20 standard as defined in the EIP. + */ +interface IERC20 { + /** + * @dev Emitted when 'value' tokens are moved from one account ('from') to + * another ('to'). + * + * Note that 'value' may be zero. + */ + event Transfer(address indexed from, address indexed to, uint256 value); + + /** + * @dev Emitted when the allowance of a 'spender' for an 'owner' is set by + * a call to {approve}. 'value' is the new allowance. + */ + event Approval(address indexed owner, address indexed spender, uint256 value); + + /** + * @dev Returns the amount of tokens in existence. + */ + function totalSupply() external view returns (uint256); + + /** + * @dev Returns the amount of tokens owned by 'account'. + */ + function balanceOf(address account) external view returns (uint256); + + /** + * @dev Moves 'amount' tokens from the caller's account to 'to'. + * + * Returns a boolean value indicating whether the operation succeeded. + * + * Emits a {Transfer} event. + */ + function transfer(address to, uint256 amount) external returns (bool); + + /** + * @dev Returns the remaining number of tokens that 'spender' will be + * allowed to spend on behalf of 'owner' through {transferFrom}. This is + * zero by default. + * + * This value changes when {approve} or {transferFrom} are called. + */ + function allowance(address owner, address spender) external view returns (uint256); + + /** + * @dev Sets 'amount' as the allowance of 'spender' over the caller's tokens. + * + * Returns a boolean value indicating whether the operation succeeded. + * + * IMPORTANT: Beware that changing an allowance with this method brings the risk + * that someone may use both the old and the new allowance by unfortunate + * transaction ordering. One possible solution to mitigate this race + * condition is to first reduce the spender's allowance to 0 and set the + * desired value afterwards: + * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 + * + * Emits an {Approval} event. + */ + function approve(address spender, uint256 amount) external returns (bool); + + /** + * @dev Moves 'amount' tokens from 'from' to 'to' using the + * allowance mechanism. 'amount' is then deducted from the caller's + * allowance. + * + * Returns a boolean value indicating whether the operation succeeded. + * + * Emits a {Transfer} event. + */ + function transferFrom(address from, address to, uint256 amount) external returns (bool); +} + + +// File @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol@v4.9.2 + +// Original license: SPDX_License_Identifier: MIT +// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.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. + */ + function decimals() external view returns (uint8); +} + + +// File @openzeppelin/contracts/token/ERC20/ERC20.sol@v4.9.2 + +// Original license: SPDX_License_Identifier: MIT +// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.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 + * applications. + * + * Additionally, an {Approval} event is emitted on calls to {transferFrom}. + * This allows applications to reconstruct the allowance for all accounts just + * by listening to said events. Other implementations of the EIP may not emit + * these events, as it isn't required by the specification. + * + * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} + * functions have been added to mitigate the well-known issues around setting + * allowances. See {IERC20-approve}. + */ +contract ERC20 is Context, IERC20, IERC20Metadata { + mapping(address => uint256) private _balances; + + mapping(address => mapping(address => uint256)) private _allowances; + + uint256 private _totalSupply; + + string private _name; + string private _symbol; + + /** + * @dev Sets the values for {name} and {symbol}. + * + * All two of these values are immutable: they can only be set once during + * construction. + */ + constructor(string memory name_, string memory symbol_) { + _name = name_; + _symbol = symbol_; + } + + /** + * @dev Returns the name of the token. + */ + function name() public view virtual override returns (string memory) { + return _name; + } + + /** + * @dev Returns the symbol of the token, usually a shorter version of the + * name. + */ + function symbol() public view virtual override returns (string memory) { + return _symbol; + } + + /** + * @dev Returns the number of decimals used to get its user representation. + * For example, if 'decimals' equals '2', a balance of '505' tokens should + * be displayed to a user as '5.05' ('505 / 10 ** 2'). + * + * Tokens usually opt for a value of 18, imitating the relationship between + * Ether and Wei. This is the default value returned by this function, unless + * it's overridden. + * + * NOTE: This information is only used for _display_ purposes: it in + * no way affects any of the arithmetic of the contract, including + * {IERC20-balanceOf} and {IERC20-transfer}. + */ + function decimals() public view virtual override returns (uint8) { + return 18; + } + + /** + * @dev See {IERC20-totalSupply}. + */ + function totalSupply() public view virtual override returns (uint256) { + return _totalSupply; + } + + /** + * @dev See {IERC20-balanceOf}. + */ + function balanceOf(address account) public view virtual override returns (uint256) { + return _balances[account]; + } + + /** + * @dev See {IERC20-transfer}. + * + * Requirements: + * + * - 'to' cannot be the zero address. + * - the caller must have a balance of at least 'amount'. + */ + function transfer(address to, uint256 amount) public virtual override returns (bool) { + address owner = _msgSender(); + _transfer(owner, to, amount); + return true; + } + + /** + * @dev See {IERC20-allowance}. + */ + function allowance(address owner, address spender) public view virtual override returns (uint256) { + return _allowances[owner][spender]; + } + + /** + * @dev See {IERC20-approve}. + * + * NOTE: If 'amount' is the maximum 'uint256', the allowance is not updated on + * 'transferFrom'. This is semantically equivalent to an infinite approval. + * + * Requirements: + * + * - 'spender' cannot be the zero address. + */ + function approve(address spender, uint256 amount) public virtual override returns (bool) { + address owner = _msgSender(); + _approve(owner, spender, amount); + return true; + } + + /** + * @dev See {IERC20-transferFrom}. + * + * Emits an {Approval} event indicating the updated allowance. This is not + * required by the EIP. See the note at the beginning of {ERC20}. + * + * NOTE: Does not update the allowance if the current allowance + * is the maximum 'uint256'. + * + * Requirements: + * + * - 'from' and 'to' cannot be the zero address. + * - 'from' must have a balance of at least 'amount'. + * - the caller must have allowance for ''from'''s tokens of at least + * 'amount'. + */ + function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { + address spender = _msgSender(); + _spendAllowance(from, spender, amount); + _transfer(from, to, amount); + return true; + } + + /** + * @dev Atomically increases the allowance granted to 'spender' by the caller. + * + * This is an alternative to {approve} that can be used as a mitigation for + * problems described in {IERC20-approve}. + * + * Emits an {Approval} event indicating the updated allowance. + * + * Requirements: + * + * - 'spender' cannot be the zero address. + */ + function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { + address owner = _msgSender(); + _approve(owner, spender, allowance(owner, spender) + addedValue); + return true; + } + + /** + * @dev Atomically decreases the allowance granted to 'spender' by the caller. + * + * This is an alternative to {approve} that can be used as a mitigation for + * problems described in {IERC20-approve}. + * + * Emits an {Approval} event indicating the updated allowance. + * + * Requirements: + * + * - 'spender' cannot be the zero address. + * - 'spender' must have allowance for the caller of at least + * 'subtractedValue'. + */ + function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { + address owner = _msgSender(); + uint256 currentAllowance = allowance(owner, spender); + require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); + unchecked { + _approve(owner, spender, currentAllowance - subtractedValue); + } + + return true; + } + + /** + * @dev Moves 'amount' of tokens from 'from' to 'to'. + * + * This internal function is equivalent to {transfer}, and can be used to + * e.g. implement automatic token fees, slashing mechanisms, etc. + * + * Emits a {Transfer} event. + * + * Requirements: + * + * - 'from' cannot be the zero address. + * - 'to' cannot be the zero address. + * - 'from' must have a balance of at least 'amount'. + */ + function _transfer(address from, address to, uint256 amount) internal virtual { + require(from != address(0), "ERC20: transfer from the zero address"); + require(to != address(0), "ERC20: transfer to the zero address"); + + _beforeTokenTransfer(from, to, amount); + + uint256 fromBalance = _balances[from]; + require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); + unchecked { + _balances[from] = fromBalance - amount; + // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by + // decrementing then incrementing. + _balances[to] += amount; + } + + emit Transfer(from, to, amount); + + _afterTokenTransfer(from, to, amount); + } + + /** @dev Creates 'amount' tokens and assigns them to 'account', increasing + * the total supply. + * + * Emits a {Transfer} event with 'from' set to the zero address. + * + * Requirements: + * + * - 'account' cannot be the zero address. + */ + function _mint(address account, uint256 amount) internal virtual { + require(account != address(0), "ERC20: mint to the zero address"); + + _beforeTokenTransfer(address(0), account, amount); + + _totalSupply += amount; + unchecked { + // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. + _balances[account] += amount; + } + emit Transfer(address(0), account, amount); + + _afterTokenTransfer(address(0), account, amount); + } + + /** + * @dev Destroys 'amount' tokens from 'account', reducing the + * total supply. + * + * Emits a {Transfer} event with 'to' set to the zero address. + * + * Requirements: + * + * - 'account' cannot be the zero address. + * - 'account' must have at least 'amount' tokens. + */ + function _burn(address account, uint256 amount) internal virtual { + require(account != address(0), "ERC20: burn from the zero address"); + + _beforeTokenTransfer(account, address(0), amount); + + uint256 accountBalance = _balances[account]; + require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); + unchecked { + _balances[account] = accountBalance - amount; + // Overflow not possible: amount <= accountBalance <= totalSupply. + _totalSupply -= amount; + } + + emit Transfer(account, address(0), amount); + + _afterTokenTransfer(account, address(0), amount); + } + + /** + * @dev Sets 'amount' as the allowance of 'spender' over the 'owner' s tokens. + * + * This internal function is equivalent to 'approve', and can be used to + * e.g. set automatic allowances for certain subsystems, etc. + * + * Emits an {Approval} event. + * + * Requirements: + * + * - 'owner' cannot be the zero address. + * - 'spender' cannot be the zero address. + */ + function _approve(address owner, address spender, uint256 amount) internal virtual { + require(owner != address(0), "ERC20: approve from the zero address"); + require(spender != address(0), "ERC20: approve to the zero address"); + + _allowances[owner][spender] = amount; + emit Approval(owner, spender, amount); + } + + /** + * @dev Updates 'owner' s allowance for 'spender' based on spent 'amount'. + * + * Does not update the allowance amount in case of infinite allowance. + * Revert if not enough allowance is available. + * + * Might emit an {Approval} event. + */ + function _spendAllowance(address owner, address spender, uint256 amount) internal virtual { + uint256 currentAllowance = allowance(owner, spender); + if (currentAllowance != type(uint256).max) { + require(currentAllowance >= amount, "ERC20: insufficient allowance"); + unchecked { + _approve(owner, spender, currentAllowance - amount); + } + } + } + + /** + * @dev Hook that is called before any transfer of tokens. This includes + * minting and burning. + * + * Calling conditions: + * + * - when 'from' and 'to' are both non-zero, 'amount' of ''from'''s tokens + * will be transferred to 'to'. + * - when 'from' is zero, 'amount' tokens will be minted for 'to'. + * - when 'to' is zero, 'amount' of ''from'''s tokens will be burned. + * - 'from' and 'to' are never both zero. + * + * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. + */ + function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} + + /** + * @dev Hook that is called after any transfer of tokens. This includes + * minting and burning. + * + * Calling conditions: + * + * - when 'from' and 'to' are both non-zero, 'amount' of ''from'''s tokens + * has been transferred to 'to'. + * - when 'from' is zero, 'amount' tokens have been minted for 'to'. + * - when 'to' is zero, 'amount' of ''from'''s tokens have been burned. + * - 'from' and 'to' are never both zero. + * + * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. + */ + function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} +} + + +// File @openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol@v4.9.2 + +// Original license: SPDX_License_Identifier: MIT +// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.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. + * + * See {ERC20-_burn} and {ERC20-allowance}. + * + * Requirements: + * + * - the caller must have allowance for ''accounts'''s tokens of at least + * 'amount'. + */ + function burnFrom(address account, uint256 amount) public virtual { + _spendAllowance(account, _msgSender(), amount); + _burn(account, amount); + } +} + + +// File @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol@v1.1.0-beta.0 + +interface IUniswapV2Router01 { + function factory() external pure returns (address); + function WETH() external pure returns (address); + + function addLiquidity( + address tokenA, + address tokenB, + uint amountADesired, + uint amountBDesired, + uint amountAMin, + uint amountBMin, + address to, + uint deadline + ) external returns (uint amountA, uint amountB, uint liquidity); + function addLiquidityETH( + address token, + uint amountTokenDesired, + uint amountTokenMin, + uint amountETHMin, + address to, + uint deadline + ) external payable returns (uint amountToken, uint amountETH, uint liquidity); + function removeLiquidity( + address tokenA, + address tokenB, + uint liquidity, + uint amountAMin, + uint amountBMin, + address to, + uint deadline + ) external returns (uint amountA, uint amountB); + function removeLiquidityETH( + address token, + uint liquidity, + uint amountTokenMin, + uint amountETHMin, + address to, + uint deadline + ) external returns (uint amountToken, uint amountETH); + function removeLiquidityWithPermit( + address tokenA, + address tokenB, + uint liquidity, + uint amountAMin, + uint amountBMin, + address to, + uint deadline, + bool approveMax, uint8 v, bytes32 r, bytes32 s + ) external returns (uint amountA, uint amountB); + function removeLiquidityETHWithPermit( + address token, + uint liquidity, + uint amountTokenMin, + uint amountETHMin, + address to, + uint deadline, + bool approveMax, uint8 v, bytes32 r, bytes32 s + ) external returns (uint amountToken, uint amountETH); + function swapExactTokensForTokens( + uint amountIn, + uint amountOutMin, + address[] calldata path, + address to, + uint deadline + ) external returns (uint[] memory amounts); + function swapTokensForExactTokens( + uint amountOut, + uint amountInMax, + address[] calldata path, + address to, + uint deadline + ) external returns (uint[] memory amounts); + function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) + external + payable + returns (uint[] memory amounts); + function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) + external + returns (uint[] memory amounts); + function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) + external + returns (uint[] memory amounts); + function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) + external + payable + returns (uint[] memory amounts); + + function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); + function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); + function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); + function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); + function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); +} + + +// File @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol@v1.1.0-beta.0 + +interface IUniswapV2Router02 is IUniswapV2Router01 { + function removeLiquidityETHSupportingFeeOnTransferTokens( + address token, + uint liquidity, + uint amountTokenMin, + uint amountETHMin, + address to, + uint deadline + ) external returns (uint amountETH); + function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( + address token, + uint liquidity, + uint amountTokenMin, + uint amountETHMin, + address to, + uint deadline, + bool approveMax, uint8 v, bytes32 r, bytes32 s + ) external returns (uint amountETH); + + function swapExactTokensForTokensSupportingFeeOnTransferTokens( + uint amountIn, + uint amountOutMin, + address[] calldata path, + address to, + uint deadline + ) external; + function swapExactETHForTokensSupportingFeeOnTransferTokens( + uint amountOutMin, + address[] calldata path, + address to, + uint deadline + ) external payable; + function swapExactTokensForETHSupportingFeeOnTransferTokens( + uint amountIn, + uint amountOutMin, + address[] calldata path, + address to, + uint deadline + ) external; +} + +// File contracts/IterableMapping.sol + +library IterableMapping { + // Iterable mapping from address to uint; + struct Map { + address[] keys; + mapping(address => uint256) values; + mapping(address => uint256) indexOf; + mapping(address => bool) inserted; + } + + function get(Map storage map, address key) public view returns (uint256) { + return map.values[key]; + } + + function getIndexOfKey(Map storage map, address key) + public + view + returns (int256) + { + if (!map.inserted[key]) { + return -1; + } + return int256(map.indexOf[key]); + } + + function getKeyAtIndex(Map storage map, uint256 index) + public + view + returns (address) + { + return map.keys[index]; + } + + function size(Map storage map) public view returns (uint256) { + return map.keys.length; + } + + function set( + Map storage map, + address key, + uint256 val + ) public { + if (map.inserted[key]) { + map.values[key] = val; + } else { + map.inserted[key] = true; + map.values[key] = val; + map.indexOf[key] = map.keys.length; + map.keys.push(key); + } + } + + function remove(Map storage map, address key) public { + if (!map.inserted[key]) { + return; + } + + delete map.inserted[key]; + delete map.values[key]; + + uint256 index = map.indexOf[key]; + uint256 lastIndex = map.keys.length - 1; + address lastKey = map.keys[lastIndex]; + + map.indexOf[lastKey] = index; + delete map.indexOf[key]; + + map.keys[index] = lastKey; + map.keys.pop(); + } +} + + +// File contracts/DividendTracker.sol + + + +/** + * @title SafeMathInt + * @dev Math operations with safety checks that revert on error + * @dev SafeMath adapted for int256 + * Based on code of https://github.com/RequestNetwork/requestNetwork/blob/master/packages/requestNetworkSmartContracts/contracts/base/math/SafeMathInt.sol + */ +library SafeMathInt { + function mul(int256 a, int256 b) internal pure returns (int256) { + // Prevent overflow when multiplying INT256_MIN with -1 + // https://github.com/RequestNetwork/requestNetwork/issues/43 + require(!(a == -2**255 && b == -1) && !(b == -2**255 && a == -1)); + + int256 c = a * b; + require((b == 0) || (c / b == a)); + return c; + } + + function div(int256 a, int256 b) internal pure returns (int256) { + // Prevent overflow when dividing INT256_MIN by -1 + // https://github.com/RequestNetwork/requestNetwork/issues/43 + require(!(a == -2**255 && b == -1) && (b > 0)); + + return a / b; + } + + function sub(int256 a, int256 b) internal pure returns (int256) { + require((b >= 0 && a - b <= a) || (b < 0 && a - b > a)); + + return a - b; + } + + function add(int256 a, int256 b) internal pure returns (int256) { + int256 c = a + b; + require((b >= 0 && c >= a) || (b < 0 && c < a)); + return c; + } + + function toUint256Safe(int256 a) internal pure returns (uint256) { + require(a >= 0); + return uint256(a); + } +} + +/** + * @title SafeMathUint + * @dev Math operations with safety checks that revert on error + */ +library SafeMathUint { + function toInt256Safe(uint256 a) internal pure returns (int256) { + int256 b = int256(a); + require(b >= 0); + return b; + } +} + +/** + * @dev Wrappers over Solidity's arithmetic operations with added overflow + * checks. + * + * Arithmetic operations in Solidity wrap on overflow. This can easily result + * in bugs, because programmers usually assume that an overflow raises an + * error, which is the standard behavior in high level programming languages. + * 'SafeMath' restores this intuition by reverting the transaction when an + * operation overflows. + * + * Using this library instead of the unchecked operations eliminates an entire + * class of bugs, so it's recommended to use it always. + */ +library SafeMath { + /** + * @dev Returns the addition of two unsigned integers, with an overflow flag. + * + * _Available since v3.4._ + */ + function tryAdd(uint256 a, uint256 b) + internal + pure + returns (bool, uint256) + { + uint256 c = a + b; + if (c < a) return (false, 0); + return (true, c); + } + + /** + * @dev Returns the substraction of two unsigned integers, with an overflow flag. + * + * _Available since v3.4._ + */ + function trySub(uint256 a, uint256 b) + internal + pure + returns (bool, uint256) + { + if (b > a) return (false, 0); + return (true, a - b); + } + + /** + * @dev Returns the multiplication of two unsigned integers, with an overflow flag. + * + * _Available since v3.4._ + */ + function tryMul(uint256 a, uint256 b) + internal + pure + returns (bool, uint256) + { + // Gas optimization: this is cheaper than requiring 'a' not being zero, but the + // benefit is lost if 'b' is also tested. + // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 + if (a == 0) return (true, 0); + uint256 c = a * b; + if (c / a != b) return (false, 0); + return (true, c); + } + + /** + * @dev Returns the division of two unsigned integers, with a division by zero flag. + * + * _Available since v3.4._ + */ + function tryDiv(uint256 a, uint256 b) + internal + pure + returns (bool, uint256) + { + if (b == 0) return (false, 0); + return (true, a / b); + } + + /** + * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. + * + * _Available since v3.4._ + */ + function tryMod(uint256 a, uint256 b) + internal + pure + returns (bool, uint256) + { + if (b == 0) return (false, 0); + return (true, a % b); + } + + /** + * @dev Returns the addition of two unsigned integers, reverting on + * overflow. + * + * Counterpart to Solidity's '+' operator. + * + * Requirements: + * + * - Addition cannot overflow. + */ + function add(uint256 a, uint256 b) internal pure returns (uint256) { + uint256 c = a + b; + require(c >= a, "SafeMath: addition overflow"); + return c; + } + + /** + * @dev Returns the subtraction of two unsigned integers, reverting on + * overflow (when the result is negative). + * + * Counterpart to Solidity's '-' operator. + * + * Requirements: + * + * - Subtraction cannot overflow. + */ + function sub(uint256 a, uint256 b) internal pure returns (uint256) { + require(b <= a, "SafeMath: subtraction overflow"); + return a - b; + } + + /** + * @dev Returns the multiplication of two unsigned integers, reverting on + * overflow. + * + * Counterpart to Solidity's '*' operator. + * + * Requirements: + * + * - Multiplication cannot overflow. + */ + function mul(uint256 a, uint256 b) internal pure returns (uint256) { + if (a == 0) return 0; + uint256 c = a * b; + require(c / a == b, "SafeMath: multiplication overflow"); + return c; + } + + /** + * @dev Returns the integer division of two unsigned integers, reverting on + * division by zero. The result is rounded towards zero. + * + * Counterpart to Solidity's '/' operator. Note: this function uses a + * 'revert' opcode (which leaves remaining gas untouched) while Solidity + * uses an invalid opcode to revert (consuming all remaining gas). + * + * Requirements: + * + * - The divisor cannot be zero. + */ + function div(uint256 a, uint256 b) internal pure returns (uint256) { + require(b > 0, "SafeMath: division by zero"); + return a / b; + } + + /** + * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), + * reverting when dividing by zero. + * + * Counterpart to Solidity's '%' operator. This function uses a 'revert' + * opcode (which leaves remaining gas untouched) while Solidity uses an + * invalid opcode to revert (consuming all remaining gas). + * + * Requirements: + * + * - The divisor cannot be zero. + */ + function mod(uint256 a, uint256 b) internal pure returns (uint256) { + require(b > 0, "SafeMath: modulo by zero"); + return a % b; + } + + /** + * @dev Returns the subtraction of two unsigned integers, reverting with custom message on + * overflow (when the result is negative). + * + * CAUTION: This function is deprecated because it requires allocating memory for the error + * message unnecessarily. For custom revert reasons use {trySub}. + * + * Counterpart to Solidity's '-' operator. + * + * Requirements: + * + * - Subtraction cannot overflow. + */ + function sub( + uint256 a, + uint256 b, + string memory errorMessage + ) internal pure returns (uint256) { + require(b <= a, errorMessage); + return a - b; + } + + /** + * @dev Returns the integer division of two unsigned integers, reverting with custom message on + * division by zero. The result is rounded towards zero. + * + * CAUTION: This function is deprecated because it requires allocating memory for the error + * message unnecessarily. For custom revert reasons use {tryDiv}. + * + * Counterpart to Solidity's '/' operator. Note: this function uses a + * 'revert' opcode (which leaves remaining gas untouched) while Solidity + * uses an invalid opcode to revert (consuming all remaining gas). + * + * Requirements: + * + * - The divisor cannot be zero. + */ + function div( + uint256 a, + uint256 b, + string memory errorMessage + ) internal pure returns (uint256) { + require(b > 0, errorMessage); + return a / b; + } + + /** + * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), + * reverting with custom message when dividing by zero. + * + * CAUTION: This function is deprecated because it requires allocating memory for the error + * message unnecessarily. For custom revert reasons use {tryMod}. + * + * Counterpart to Solidity's '%' operator. This function uses a 'revert' + * opcode (which leaves remaining gas untouched) while Solidity uses an + * invalid opcode to revert (consuming all remaining gas). + * + * Requirements: + * + * - The divisor cannot be zero. + */ + function mod( + uint256 a, + uint256 b, + string memory errorMessage + ) internal pure returns (uint256) { + require(b > 0, errorMessage); + return a % b; + } +} + +interface DividendPayingTokenOptionalInterface { + /// @notice View the amount of dividend in wei that an address can withdraw. + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that '_owner' can withdraw. + function withdrawableDividendOf(address _owner) + external + view + returns (uint256); + + /// @notice View the amount of dividend in wei that an address has withdrawn. + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that '_owner' has withdrawn. + function withdrawnDividendOf(address _owner) + external + view + returns (uint256); + + /// @notice View the amount of dividend in wei that an address has earned in total. + /// @dev accumulativeDividendOf(_owner) = withdrawableDividendOf(_owner) + withdrawnDividendOf(_owner) + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that '_owner' has earned in total. + function accumulativeDividendOf(address _owner) + external + view + returns (uint256); +} + +/// @title Dividend-Paying Token Interface +/// @author Roger Wu (https://github.com/roger-wu) +/// @dev An interface for a dividend-paying token contract. +interface DividendPayingTokenInterface { + /// @notice View the amount of dividend in wei that an address can withdraw. + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that '_owner' can withdraw. + function dividendOf(address _owner) external view returns (uint256); + + /// @notice Withdraws the ether distributed to the sender. + /// @dev SHOULD transfer 'dividendOf(msg.sender)' wei to 'msg.sender', and 'dividendOf(msg.sender)' SHOULD be 0 after the transfer. + /// MUST emit a 'DividendWithdrawn' event if the amount of ether transferred is greater than 0. + function withdrawDividend() external; + + /// @dev This event MUST emit when ether is distributed to token holders. + /// @param from The address which sends ether to this contract. + /// @param weiAmount The amount of distributed ether in wei. + event DividendsDistributed(address indexed from, uint256 weiAmount); + + /// @dev This event MUST emit when an address withdraws their dividend. + /// @param to The address which withdraws ether from this contract. + /// @param weiAmount The amount of withdrawn ether in wei. + event DividendWithdrawn(address indexed to, uint256 weiAmount); +} + +contract DividendPayingToken is + ERC20, + Ownable, + DividendPayingTokenInterface, + DividendPayingTokenOptionalInterface +{ + using SafeMath for uint256; + using SafeMathUint for uint256; + using SafeMathInt for int256; + + address public rewardsToken; + + uint256 internal constant magnitude = 2**128; + + uint256 internal magnifiedDividendPerShare; + + mapping(address => int256) internal magnifiedDividendCorrections; + mapping(address => uint256) internal withdrawnDividends; + + uint256 public totalDividendsDistributed; + + constructor(string memory _name, string memory _symbol, address _rewardsToken) + ERC20(_name, _symbol) + { + rewardsToken = _rewardsToken; + } + + function distributeDividends(uint256 amount) public onlyOwner { + require(totalSupply() > 0); + + if (amount > 0) { + magnifiedDividendPerShare = magnifiedDividendPerShare.add( + (amount).mul(magnitude) / totalSupply() + ); + emit DividendsDistributed(msg.sender, amount); + + totalDividendsDistributed = totalDividendsDistributed.add(amount); + } + } + + /// @notice Withdraws the ether distributed to the sender. + /// @dev It emits a 'DividendWithdrawn' event if the amount of withdrawn ether is greater than 0. + function withdrawDividend() public virtual override { + _withdrawDividendOfUser(payable(msg.sender)); + } + + /// @notice Withdraws the ether distributed to the sender. + /// @dev It emits a 'DividendWithdrawn' event if the amount of withdrawn ether is greater than 0. + function _withdrawDividendOfUser(address payable user) + internal + returns (uint256) + { + uint256 _withdrawableDividend = withdrawableDividendOf(user); + if (_withdrawableDividend > 0) { + withdrawnDividends[user] = withdrawnDividends[user].add( + _withdrawableDividend + ); + emit DividendWithdrawn(user, _withdrawableDividend); + bool success = IERC20(rewardsToken).transfer( + user, + _withdrawableDividend + ); + + if (!success) { + withdrawnDividends[user] = withdrawnDividends[user].sub( + _withdrawableDividend + ); + return 0; + } + + return _withdrawableDividend; + } + + return 0; + } + + /// @notice View the amount of dividend in wei that an address can withdraw. + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that '_owner' can withdraw. + function dividendOf(address _owner) public view override returns (uint256) { + return withdrawableDividendOf(_owner); + } + + /// @notice View the amount of dividend in wei that an address can withdraw. + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that '_owner' can withdraw. + function withdrawableDividendOf(address _owner) + public + view + override + returns (uint256) + { + return accumulativeDividendOf(_owner).sub(withdrawnDividends[_owner]); + } + + /// @notice View the amount of dividend in wei that an address has withdrawn. + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that '_owner' has withdrawn. + function withdrawnDividendOf(address _owner) + public + view + override + returns (uint256) + { + return withdrawnDividends[_owner]; + } + + /// @notice View the amount of dividend in wei that an address has earned in total. + /// @dev accumulativeDividendOf(_owner) = withdrawableDividendOf(_owner) + withdrawnDividendOf(_owner) + /// = (magnifiedDividendPerShare * balanceOf(_owner) + magnifiedDividendCorrections[_owner]) / magnitude + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that '_owner' has earned in total. + function accumulativeDividendOf(address _owner) + public + view + override + returns (uint256) + { + return + magnifiedDividendPerShare + .mul(balanceOf(_owner)) + .toInt256Safe() + .add(magnifiedDividendCorrections[_owner]) + .toUint256Safe() / magnitude; + } + + /// @dev Internal function that transfer tokens from one address to another. + /// Update magnifiedDividendCorrections to keep dividends unchanged. + /// @param from The address to transfer from. + /// @param to The address to transfer to. + /// @param value The amount to be transferred. + function _transfer( + address from, + address to, + uint256 value + ) internal virtual override { + require(false); + + int256 _magCorrection = magnifiedDividendPerShare + .mul(value) + .toInt256Safe(); + magnifiedDividendCorrections[from] = magnifiedDividendCorrections[from] + .add(_magCorrection); + magnifiedDividendCorrections[to] = magnifiedDividendCorrections[to].sub( + _magCorrection + ); + } + + /// @dev Internal function that mints tokens to an account. + /// Update magnifiedDividendCorrections to keep dividends unchanged. + /// @param account The account that will receive the created tokens. + /// @param value The amount that will be created. + function _mint(address account, uint256 value) internal override { + super._mint(account, value); + + magnifiedDividendCorrections[account] = magnifiedDividendCorrections[ + account + ].sub((magnifiedDividendPerShare.mul(value)).toInt256Safe()); + } + + /// @dev Internal function that burns an amount of the token of a given account. + /// Update magnifiedDividendCorrections to keep dividends unchanged. + /// @param account The account whose tokens will be burnt. + /// @param value The amount that will be burnt. + function _burn(address account, uint256 value) internal override { + super._burn(account, value); + + magnifiedDividendCorrections[account] = magnifiedDividendCorrections[ + account + ].add((magnifiedDividendPerShare.mul(value)).toInt256Safe()); + } + + function _setBalance(address account, uint256 newBalance) internal { + uint256 currentBalance = balanceOf(account); + + if (newBalance > currentBalance) { + uint256 mintAmount = newBalance.sub(currentBalance); + _mint(account, mintAmount); + } else if (newBalance < currentBalance) { + uint256 burnAmount = currentBalance.sub(newBalance); + _burn(account, burnAmount); + } + } +} + +/* +@title Dividend-Paying Token Interface +@author Roger Wu (https://github.com/roger-wu) +@dev An interface for a dividend-paying token contract. +*/ +interface IDividendPayingToken { + /// @notice View the amount of dividend in wei that an address can withdraw. + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that '_owner' can withdraw. + function dividendOf(address _owner) external view returns (uint256); + + /// @notice Distributes ether to token holders as dividends. + /// @dev SHOULD distribute the paid ether to token holders as dividends. + /// SHOULD NOT directly transfer ether to token holders in this function. + /// MUST emit a 'DividendsDistributed' event when the amount of distributed ether is greater than 0. + function distributeDividends() external payable; + + /// @notice Withdraws the ether distributed to the sender. + /// @dev SHOULD transfer 'dividendOf(msg.sender)' wei to 'msg.sender', and 'dividendOf(msg.sender)' SHOULD be 0 after the transfer. + /// MUST emit a 'DividendWithdrawn' event if the amount of ether transferred is greater than 0. + function withdrawDividend() external; + + /// @dev This event MUST emit when ether is distributed to token holders. + /// @param from The address which sends ether to this contract. + /// @param weiAmount The amount of distributed ether in wei. + event DividendsDistributed(address indexed from, uint256 weiAmount); + + /// @dev This event MUST emit when an address withdraws their dividend. + /// @param to The address which withdraws ether from this contract. + /// @param weiAmount The amount of withdrawn ether in wei. + event DividendWithdrawn(address indexed to, uint256 weiAmount); +} + +contract DividendTracker is Ownable, DividendPayingToken { + using SafeMath for uint256; + using SafeMathInt for int256; + using IterableMapping for IterableMapping.Map; + + IterableMapping.Map private tokenHoldersMap; + uint256 public lastProcessedIndex; + + mapping(address => bool) public excludedFromDividends; + + mapping(address => uint256) public lastClaimTimes; + + uint256 public claimWait; + uint256 public minimumTokenBalanceForDividends; + + event ExcludeFromDividends(address indexed account); + event ClaimWaitUpdated(uint256 indexed newValue, uint256 indexed oldValue); + + event Claim( + address indexed account, + uint256 amount, + bool indexed automatic + ); + + constructor(address tokenAddress, uint256 _minimumTokenBalanceForDividends) + DividendPayingToken("Dividen_Tracker", "Dividen_Tracker", tokenAddress) + { + claimWait = 3600; + minimumTokenBalanceForDividends = _minimumTokenBalanceForDividends; + } + + function _transfer( + address, + address, + uint256 + ) internal pure override { + require(false, "Dividend_Tracker: No transfers allowed"); + } + + function withdrawDividend() public pure override { + require( + false, + "Dividend_Tracker: withdrawDividend disabled. Use the 'claim' function on the main Dividend_Tracker contract." + ); + } + + function excludeFromDividends(address account) external onlyOwner { + require(!excludedFromDividends[account]); + excludedFromDividends[account] = true; + + _setBalance(account, 0); + tokenHoldersMap.remove(account); + + emit ExcludeFromDividends(account); + } + + function updateClaimWait(uint256 newClaimWait) external onlyOwner { + require( + newClaimWait >= 3600 && newClaimWait <= 86400, + "Dividend_Tracker: claimWait must be updated to between 1 and 24 hours" + ); + require( + newClaimWait != claimWait, + "Dividend_Tracker: Cannot update claimWait to same value" + ); + emit ClaimWaitUpdated(newClaimWait, claimWait); + claimWait = newClaimWait; + } + + function getLastProcessedIndex() external view returns (uint256) { + return lastProcessedIndex; + } + + function getNumberOfTokenHolders() external view returns (uint256) { + return tokenHoldersMap.keys.length; + } + + function getAccount(address _account) + public + view + returns ( + address account, + int256 index, + int256 iterationsUntilProcessed, + uint256 withdrawableDividends, + uint256 totalDividends, + uint256 lastClaimTime, + uint256 nextClaimTime, + uint256 secondsUntilAutoClaimAvailable + ) + { + account = _account; + + index = tokenHoldersMap.getIndexOfKey(account); + + iterationsUntilProcessed = -1; + + if (index >= 0) { + if (uint256(index) > lastProcessedIndex) { + iterationsUntilProcessed = index.sub( + int256(lastProcessedIndex) + ); + } else { + uint256 processesUntilEndOfArray = tokenHoldersMap.keys.length > + lastProcessedIndex + ? tokenHoldersMap.keys.length.sub(lastProcessedIndex) + : 0; + + iterationsUntilProcessed = index.add( + int256(processesUntilEndOfArray) + ); + } + } + + withdrawableDividends = withdrawableDividendOf(account); + totalDividends = accumulativeDividendOf(account); + + lastClaimTime = lastClaimTimes[account]; + + nextClaimTime = lastClaimTime > 0 ? lastClaimTime.add(claimWait) : 0; + + secondsUntilAutoClaimAvailable = nextClaimTime > block.timestamp + ? nextClaimTime.sub(block.timestamp) + : 0; + } + + function getAccountAtIndex(uint256 index) + public + view + returns ( + address, + int256, + int256, + uint256, + uint256, + uint256, + uint256, + uint256 + ) + { + if (index >= tokenHoldersMap.size()) { + return ( + 0x0000000000000000000000000000000000000000, + -1, + -1, + 0, + 0, + 0, + 0, + 0 + ); + } + + address account = tokenHoldersMap.getKeyAtIndex(index); + + return getAccount(account); + } + + function canAutoClaim(uint256 lastClaimTime) private view returns (bool) { + if (lastClaimTime > block.timestamp) { + return false; + } + + return block.timestamp.sub(lastClaimTime) >= claimWait; + } + + function setBalance(address payable account, uint256 newBalance) + external + onlyOwner + { + if (excludedFromDividends[account]) { + return; + } + + if (newBalance >= minimumTokenBalanceForDividends) { + _setBalance(account, newBalance); + tokenHoldersMap.set(account, newBalance); + } else { + _setBalance(account, 0); + tokenHoldersMap.remove(account); + } + + processAccount(account, true); + } + + function process(uint256 gas) + public + returns ( + uint256, + uint256, + uint256 + ) + { + uint256 numberOfTokenHolders = tokenHoldersMap.keys.length; + + if (numberOfTokenHolders == 0) { + return (0, 0, lastProcessedIndex); + } + + uint256 _lastProcessedIndex = lastProcessedIndex; + + uint256 gasUsed = 0; + + uint256 gasLeft = gasleft(); + + uint256 iterations = 0; + uint256 claims = 0; + + while (gasUsed < gas && iterations < numberOfTokenHolders) { + _lastProcessedIndex++; + + if (_lastProcessedIndex >= tokenHoldersMap.keys.length) { + _lastProcessedIndex = 0; + } + + address account = tokenHoldersMap.keys[_lastProcessedIndex]; + + if (canAutoClaim(lastClaimTimes[account])) { + if (processAccount(payable(account), true)) { + claims++; + } + } + + iterations++; + + uint256 newGasLeft = gasleft(); + + if (gasLeft > newGasLeft) { + gasUsed = gasUsed.add(gasLeft.sub(newGasLeft)); + } + + gasLeft = newGasLeft; + } + + lastProcessedIndex = _lastProcessedIndex; + + return (iterations, claims, lastProcessedIndex); + } + + function processAccount(address payable account, bool automatic) + public + onlyOwner + returns (bool) + { + uint256 amount = _withdrawDividendOfUser(account); + + if (amount > 0) { + lastClaimTimes[account] = block.timestamp; + emit Claim(account, amount, automatic); + return true; + } + + return false; + } +} + + +// File @uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol@v1.0.1 + +interface IUniswapV2Factory { + event PairCreated(address indexed token0, address indexed token1, address pair, uint); + + function feeTo() external view returns (address); + function feeToSetter() external view returns (address); + + function getPair(address tokenA, address tokenB) external view returns (address pair); + function allPairs(uint) external view returns (address pair); + function allPairsLength() external view returns (uint); + + function createPair(address tokenA, address tokenB) external returns (address pair); + + function setFeeTo(address) external; + function setFeeToSetter(address) external; +} + + +// File contracts/Token.sol + +// Original license: SPDX_License_Identifier: MIT +pragma solidity 0.8.19; + +// File contracts/Token.sol +contract Token is ERC20Burnable, Ownable { + // ADDRESSESS ------------------------------------------------------------------------------------------- + address public lpPair; // Liquidity token address + address[] public platformFeeAddresses; // service fee wallet address + address public treasuryAddress; // owner fee wallet address + address public dividendTokenAddress; // dividend token address + address public dividentTokenBridgeAddress; // dividend token bridge address + + // VALUES ----------------------------------------------------------------------------------------------- + uint256 public swapThreshold; // swap tokens limit + uint256 public constant TAX_DIVISOR = 10000; // divisor | 0.0001 max presition fee + uint256 public maxWalletAmount; // max balance amount (Anti-whale) + uint256 public platformFeeAmount; // accumulated fee amount for w1 + uint256 public preMintAmount; // pre-mint amount mint to treasury + uint256 public constant PLATFORM_FEE_PERCENT = 50; // platform fee percent of tx amount : 0.5% + uint256[] public platformFeePercents; + uint256 public autoLiquidityPercent; // amm percent of fee + uint256 public maxTransactionAmount; + uint256 public buyBackThreshold; // swap tokens limit + uint256 public buyBackPercent; + uint256 public maxBuyLimit; + uint256 public initialDelayTime; // to store the block in which the trading was enabled + uint256 public totalDelayTime; + uint256 public maxGasPriceLimit; // for store max gas price value + uint256 public timeDelayBetweenTx; // time wait for txs + uint256 public gasForProcessing; + uint256 public distributionRewardsPercent; + + // BOOLEANS --------------------------------------------------------------------------------------------- + bool public inSwap; // used for dont take fee on swaps + bool public gasLimitActive; + bool public transferDelayEnabled; // for enable / disable delay between transactions + + // MAPPINGS + mapping(address => bool) public _isExcludedFromFee; // list of users excluded from fee + mapping(address => bool) public _isExcludedFromMaxTx; // list of users excluded from fee + mapping(address => bool) public automatedMarketMakerPairs; + mapping(address => uint256) public _holderLastTransferTimestamp; // to hold last Transfers temporarily // todo remove + + // STRUCTS ---------------------------------------------------------------------------------------------- + struct Fees { + uint16 buyFee; // fee when people BUY tokens + uint16 sellFee; // fee when people SELL tokens + uint16 transferFee; // fee when people TRANSFER tokens + } + + // OBJECTS ---------------------------------------------------------------------------------------------- + IUniswapV2Router02 public router; + DividendTracker public tokenDividendTracker; + Fees public _feesRates; // fees rates + + // MODIFIERS -------------------------------------------------------------------------------------------- + modifier swapping() { + inSwap = true; + _; + inSwap = false; + } + + // EVENTS ----------------------------------------------------------------------------------------------- + event ProcessedDividendTracker( + uint256 iterations, + uint256 claims, + uint256 lastProcessedIndex, + bool indexed automatic, + uint256 gas, + address indexed processor + ); + event SendDividends(uint256 tokensSwapped, uint256 amount); + + // CONSTRUCTOR ------------------------------------------------------------------------------------------ + constructor( + string memory tokenName, + string memory tokenSymbol, + uint256 supply, + uint256 preMint, + address[] memory addresses, // routerAddress, treasuryAddress, dividendTokenAddress + uint16[] memory percents // burnPercent, buyFee, sellFee, maxPerWallet, maxPerTx, dividendPercent + ) ERC20(tokenName, tokenSymbol) { + require(addresses.length == 3, "Invalid address argument"); + require(percents.length == 6, "Invalid percent argument"); + require(percents[1] <= 9900 && percents[2] <= 9900, "Too hight tax"); + + // super.transferOwnership(tokenOwner); + treasuryAddress = addresses[1]; + distributionRewardsPercent = percents[5]; + + uint256 burnAmount = (supply * percents[0]) / TAX_DIVISOR; + _mint(msg.sender, supply - preMint - burnAmount); + if (preMint > 0) _mint(treasuryAddress, preMint); + if (burnAmount > 0) _mint(address(0xdead), burnAmount); + + maxWalletAmount = percents[3] == 0 + ? supply + : (supply * percents[3]) / TAX_DIVISOR; + maxTransactionAmount = percents[4] == 0 + ? supply + : (supply * percents[4]) / TAX_DIVISOR; + + platformFeeAddresses.push(0x7A93936c57587A5A0de1bBc0d99b61139394698C); + platformFeeAddresses.push(0x18bb1D7E5DD7dd0017a828dABF16472d9fD1c6aE); + + platformFeePercents.push(8000); + platformFeePercents.push(2000); + + // default fees + _feesRates = Fees({ + buyFee: percents[1], + sellFee: percents[2], + transferFee: 0 + }); + + router = IUniswapV2Router02(addresses[0]); + dividentTokenBridgeAddress = router.WETH(); + + // Create a uniswap pair for this new token + lpPair = IUniswapV2Factory(router.factory()).createPair( + address(this), + router.WETH() + ); + automatedMarketMakerPairs[lpPair] = true; + + if (addresses[2] != address(0)) { + dividendTokenAddress = addresses[2]; + tokenDividendTracker = new DividendTracker( + dividendTokenAddress, + 1 ether + ); //must hold 10000+ tokens to receive dividends); + + // exclude from receiving dividends + tokenDividendTracker.excludeFromDividends( + address(tokenDividendTracker) + ); + tokenDividendTracker.excludeFromDividends(address(this)); + tokenDividendTracker.excludeFromDividends(owner()); + tokenDividendTracker.excludeFromDividends(address(router)); + tokenDividendTracker.excludeFromDividends(lpPair); + + _isExcludedFromFee[address(tokenDividendTracker)] = true; + _isExcludedFromMaxTx[address(tokenDividendTracker)] = true; + } + + // exclude from fees + _isExcludedFromFee[owner()] = true; + _isExcludedFromFee[treasuryAddress] = true; + _isExcludedFromFee[platformFeeAddresses[0]] = true; + _isExcludedFromFee[platformFeeAddresses[1]] = true; + _isExcludedFromFee[address(this)] = true; + + + _isExcludedFromMaxTx[owner()] = true; + _isExcludedFromMaxTx[treasuryAddress] = true; + _isExcludedFromMaxTx[platformFeeAddresses[0]] = true; + _isExcludedFromMaxTx[platformFeeAddresses[1]] = true; + _isExcludedFromMaxTx[address(this)] = true; + _isExcludedFromMaxTx[address(router)] = true; + _isExcludedFromMaxTx[lpPair] = true; + + // contract do swap when have 1k tokens balance + swapThreshold = 1000 ether; + + autoLiquidityPercent = 0; //0% + buyBackPercent = 0; //0% + + buyBackThreshold = 1 ether; // buyback 1 eth + + // do approve to router from owner and contract + _approve(owner(), address(router), type(uint256).max); + _approve(address(this), address(router), type(uint256).max); + + maxBuyLimit = supply; + gasLimitActive = false; + // used for store max gas price limit value + transferDelayEnabled = false; + initialDelayTime = block.timestamp; + // used enable or disable max gas price limit + maxGasPriceLimit = 15000000000; + + // enable / disable transfer to wallets when contract do swap tokens for busd + timeDelayBetweenTx = 5; + totalDelayTime = 3600; + + // few values needed for contract works + gasForProcessing = 300000; + } + + function updateDividentTokenBridgeAddress(address newAddress) public onlyOwner { + require( + newAddress != dividentTokenBridgeAddress, + "The dividend tracker already has that address" + ); + require(newAddress != address(0), "new address is Zero address"); + dividentTokenBridgeAddress = newAddress; + } + + function updateDividendTracker(address newAddress) public onlyOwner { + require( + newAddress != address(tokenDividendTracker), + "The dividend tracker already has that address" + ); + require(address(tokenDividendTracker) != address(0), "tokenDividendTracker is Zero address"); + require(newAddress != address(0), "new address is Zero address"); + dividendTokenAddress = newAddress; + _isExcludedFromFee[address(tokenDividendTracker)] = false; + _isExcludedFromMaxTx[address(tokenDividendTracker)] = false; + tokenDividendTracker = new DividendTracker( + dividendTokenAddress, + 1 ether + ); //must hold 10000+ tokens to receive dividends); + + // exclude from receiving dividends + tokenDividendTracker.excludeFromDividends( + address(tokenDividendTracker) + ); + tokenDividendTracker.excludeFromDividends(address(this)); + tokenDividendTracker.excludeFromDividends(owner()); + tokenDividendTracker.excludeFromDividends(address(router)); + tokenDividendTracker.excludeFromDividends(lpPair); + + _isExcludedFromFee[address(tokenDividendTracker)] = true; + _isExcludedFromMaxTx[address(tokenDividendTracker)] = true; + } + + /** + * @notice This function is used to Update the Max Gas Price Limit for transactions + * @dev This function is used inside the tokenTransfer during the first hour of the contract + * @param newValue uint256 The new Max Gas Price Limit + */ + function updateMaxGasPriceLimit(uint256 newValue) public onlyOwner { + require( + newValue >= 10000000000, + "max gas price cant be lower than 10 gWei" + ); + maxGasPriceLimit = newValue; + } + + /** + * @notice This function is updating the value of the variable transferDelayEnabled + * @param newVal New value of the variable + */ + function updateTransferDelayEnabled(bool newVal) external onlyOwner { + transferDelayEnabled = newVal; + } + + /** + * @dev Update the max amount of tokens that can be buyed in one transaction + * @param percent New max buy limit in wei + */ + function updateMaxBuyLimit(uint256 percent) public onlyOwner { + maxBuyLimit = (totalSupply() * percent) / TAX_DIVISOR; + } + + /** + * @dev Update the max gas limit that can be used in the transaction + * @param newVal New gas limit amount + */ + function updateGasLimitActive(bool newVal) public onlyOwner { + gasLimitActive = newVal; + } + + // To receive BNB from dexRouter when swapping + receive() external payable {} + + // Set fees + function setTaxes( + uint16 buyFee, + uint16 sellFee, + uint16 transferFee + ) external virtual onlyOwner { + require(buyFee <= 9900 && sellFee <= 9900, "Too hight tax"); + _feesRates.buyFee = buyFee; + _feesRates.sellFee = sellFee; + _feesRates.transferFee = transferFee; + } + + // function for set buyBackThreshold + function setBuyBackThreshold(uint256 newThreshold) external onlyOwner { + buyBackThreshold = newThreshold; + } + + // function for set buyBackPercent + function setBuyBackPercent(uint16 newPercent) external onlyOwner { + require( + newPercent + autoLiquidityPercent + distributionRewardsPercent <= + TAX_DIVISOR, + "Percent cant be higher than 100%" + ); + buyBackPercent = newPercent; + } + + // function for set autoLiquidityPercent + function setAutoLiquidityPercent(uint16 newPercent) external onlyOwner { + require( + newPercent + buyBackPercent + distributionRewardsPercent <= + TAX_DIVISOR, + "Percent cant be higher than 100%" + ); + autoLiquidityPercent = newPercent; + } + + function setDistributionRewardsPercent( + uint16 newPercent + ) external onlyOwner { + require( + newPercent + buyBackPercent + autoLiquidityPercent <= TAX_DIVISOR, + "Percent cant be higher than 100%" + ); + distributionRewardsPercent = newPercent; + } + + // this function will be called every buy, sell or transfer + function _transfer( + address from, + address to, + uint256 amount + ) internal virtual override { + _beforeTransferCheck(from, to, amount); + + if (inSwap) { + super._transfer(from, to, amount); + return; + } + + if (contractMustSwap(from, to)) { + doSwap(); + } + + _finalizeTransfer(from, to, amount); + + if (address(tokenDividendTracker) != address(0)) { + try + tokenDividendTracker.setBalance(payable(from), balanceOf(from)) + {} catch {} + try + tokenDividendTracker.setBalance(payable(to), balanceOf(to)) + {} catch {} + + if (!inSwap) { + processDividendTracker(tokenDividendTracker, gasForProcessing); + } + } + } + + function processDividendTracker( + DividendTracker _dividendTracker, + uint256 gas + ) internal { + try _dividendTracker.process(gas) returns ( + uint256 iterations, + uint256 claims, + uint256 lastProcessedIndex + ) { + emit ProcessedDividendTracker( + iterations, + claims, + lastProcessedIndex, + true, + gas, + tx.origin + ); + } catch {} + } + + function doSwap() internal swapping { + // Get contract tokens balance + uint256 numTokensToSwap = balanceOf(address(this)); + + // swap to team + if (platformFeeAmount > 0) { + uint256 _amount = platformFeeAmount; + numTokensToSwap -= platformFeeAmount; + platformFeeAmount = 0; + uint256 _remain = _amount; + for (uint256 i = platformFeeAddresses.length; i > 0; i--) { + uint256 _fee = i == 1 + ? _remain + : (_amount * platformFeePercents[i - 1]) / TAX_DIVISOR; + swapTokensForNative(_fee, platformFeeAddresses[i - 1]); + if (i > 1) _remain -= _fee; + } + } + + numTokensToSwap = balanceOf(address(this)); + if (numTokensToSwap > 0) { + // swap to contract + if (buyBackPercent > 0) { + swapTokensForNative( + (numTokensToSwap * buyBackPercent) / TAX_DIVISOR, + address(this) + ); + } + + // inject liquidity + if (autoLiquidityPercent > 0) { + autoLiquidity( + (numTokensToSwap * autoLiquidityPercent) / TAX_DIVISOR + ); + } + + // treasury fee + uint256 treasuryAmount = numTokensToSwap - + (numTokensToSwap * + (autoLiquidityPercent + + buyBackPercent + + distributionRewardsPercent)) / + TAX_DIVISOR; + if (treasuryAmount > 0) { + swapTokensForNative(treasuryAmount, treasuryAddress); + } + + // buy back + if (buyBackThreshold > 0) { + uint256 ethBalance = address(this).balance; + + if (ethBalance > buyBackThreshold) { + swapNativeForTokens(ethBalance, address(0xdead)); + } + } + + if (distributionRewardsPercent > 0) { + swapAndSendDividends( + (numTokensToSwap * distributionRewardsPercent) / TAX_DIVISOR + ); + } + } + } + + function swapNativeForTokens(uint256 nativeAmount, address to) private { + address[] memory path = new address[](2); + path[0] = router.WETH(); + path[1] = address(this); + uint256 deadline = block.timestamp; + // uint256 amountOutIn = router.getAmountsOut( + // nativeAmount, + // path + // )[1]; + router.swapExactETHForTokens{value: nativeAmount}( + 0, + path, + to, + deadline + ); + } + + function swapTokensForTokens( + address _fromTokenAddress, + address _toTokenAddress, + uint256 tokenAmount, + address _to + ) private { + address[] memory path = new address[](3); + path[0] = _fromTokenAddress; + path[1] = dividentTokenBridgeAddress; + path[2] = _toTokenAddress; + + _approve(address(this), address(router), tokenAmount); + + // swap and transfer to contract + router.swapExactTokensForTokensSupportingFeeOnTransferTokens( + tokenAmount, + 0, + path, + _to, + block.timestamp + 1000 + ); + } + + function swapAndSendDividends(uint256 tokenAmount) private { + swapTokensForTokens( + address(this), // swap token + dividendTokenAddress, // for dividend token + tokenAmount, // amount + address(this) // to this contract + ); + uint256 dividends = IERC20(dividendTokenAddress).balanceOf( + address(this) + ); + bool success = IERC20(dividendTokenAddress).transfer( + address(tokenDividendTracker), + dividends + ); + + if (success) { + tokenDividendTracker.distributeDividends(dividends); + emit SendDividends(tokenAmount, dividends); + } + } + + function swapTokensForNative(uint256 tokenAmount, address to) private { + address[] memory path = new address[](2); + path[0] = address(this); + path[1] = router.WETH(); + uint256 deadline = block.timestamp; + _approve(address(this), address(router), tokenAmount); + router.swapExactTokensForETHSupportingFeeOnTransferTokens( + tokenAmount, + 0, + path, + to, + deadline + ); + } + + function _finalizeTransfer( + address from, + address to, + uint256 amount + ) internal virtual { + // by default receiver receive 100% of sended amount + uint256 amountReceived = amount; + + // If takeFee is false there is 0% fee + bool takeFee = true; + if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { + takeFee = false; + } + + // check if we need take fee or not + if (takeFee) { + // if we need take fee + // calc how much we need take + (uint256 feeAmount1, uint256 feeAmount2) = calcBuySellTransferFee( + from, + to, + amount + ); + + if (feeAmount1 + feeAmount2 > 0) { + // we substract fee amount from recipient amount + amountReceived = amount - feeAmount1 - feeAmount2; + if (feeAmount2 > 0) platformFeeAmount += feeAmount2; + + // and transfer fee to contract + super._transfer(from, address(this), feeAmount1 + feeAmount2); + } + } + + // finally send remaining tokens to recipient + super._transfer(from, to, amountReceived); + } + + function calcBuySellTransferFee( + address from, + address to, + uint256 amount + ) internal view virtual returns (uint256, uint256) { + // by default we take zero fee + uint256 totalFeePercent = 0; + uint256 feeAmount1 = 0; + uint256 feeAmount2 = 0; + bool isTransfer = false; + + // BUY -> FROM == LP ADDRESS + if (automatedMarketMakerPairs[from]) { + totalFeePercent += _feesRates.buyFee; + } + // SELL -> TO == LP ADDRESS + else if (automatedMarketMakerPairs[to]) { + totalFeePercent += _feesRates.sellFee; + } + // TRANSFER + else { + totalFeePercent += _feesRates.transferFee; + isTransfer = true; + } + + // CALC FEES AMOUT + if (totalFeePercent > 0) { + feeAmount1 = (amount * totalFeePercent) / TAX_DIVISOR; + } + + if (!isTransfer) { + feeAmount2 = (amount * PLATFORM_FEE_PERCENT) / TAX_DIVISOR; + } + + return (feeAmount1, feeAmount2); + } + + function autoLiquidity(uint256 tokenAmount) public { + // split the contract balance into halves + uint256 half = tokenAmount / 2; + + // capture the contract's current ETH balance. + // this is so that we can capture exactly the amount of ETH that the + // swap creates, and not make the liquidity event include any ETH that + // has been manually sent to the contract + uint256 initialBalance = address(this).balance; + + swapTokensForNative(half, address(this)); + + // how much ETH did we just swap into? + uint256 newBalance = address(this).balance - initialBalance; + + // add liquidity to uniswap + addLiquidity(half, newBalance); + } + + function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { + uint256 deadline = block.timestamp; + _approve(address(this), address(router), type(uint256).max); + router.addLiquidityETH{value: ethAmount}( + address(this), + tokenAmount, + 0, // slippage is unavoidable + 0, // slippage is unavoidable + address(this), // send lp tokens to owner + deadline + ); + } + + function _beforeTransferCheck( + address from, + address to, + uint256 amount + ) internal virtual { + require( + from != address(0), + "ERC20: transfer from the ZERO_ADDRESS address" + ); + require( + to != address(0), + "ERC20: transfer to the ZERO_ADDRESS address" + ); + require( + amount > 0, + "Transfer amount must be greater than ZERO_ADDRESS" + ); + + if ( + transferDelayEnabled && + block.timestamp < (initialDelayTime + totalDelayTime) + ) { + // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. + if ( + from != owner() && + to != address(router) && + to != address(lpPair) && + to != address(this) + ) { + // in the first one hour, a maximum of XX BUSD purchase is adjustable (TAX_DIVISOR BUSD is the default value) + if (maxBuyLimit > 0) { + require(amount <= maxBuyLimit, "Max Buy Limit."); + } + + // only use to prevent sniper buys in the first blocks. + if (gasLimitActive) { + require( + tx.gasprice <= maxGasPriceLimit, + "Gas price exceeds limit." + ); + } + + // delay between tx + require( + _holderLastTransferTimestamp[msg.sender] <= block.timestamp, + "_transfer:: Transfer Delay enabled." + ); + _holderLastTransferTimestamp[msg.sender] = + block.timestamp + + timeDelayBetweenTx; + } + } + + if ( + from != owner() && + to != owner() && + to != address(0) && + to != address(0xdead) && + to != address(this) && + !inSwap + ) { + // BUY -> FROM == LP ADDRESS + if (automatedMarketMakerPairs[from]) { + if (!_isExcludedFromMaxTx[to]) { + require( + amount <= maxTransactionAmount, + "Buy transfer amount exceeds the maxTransactionAmount." + ); + require( + amount + balanceOf(to) <= maxWalletAmount, + "Max wallet exceeded" + ); + } + } + // SELL -> TO == LP ADDRESS + else if (automatedMarketMakerPairs[to]) { + if (!_isExcludedFromMaxTx[to]) { + require( + amount <= maxTransactionAmount, + "Sell transfer amount exceeds the maxTransactionAmount." + ); + } + } + // TRANSFER + else { + if (!_isExcludedFromMaxTx[to]) { + require( + amount + balanceOf(to) <= maxWalletAmount, + "Max wallet exceeded" + ); + } + } + } + } + + function contractMustSwap( + address from, + address to + ) internal view virtual returns (bool) { + uint256 contractTokenBalance = balanceOf(address(this)); + return + contractTokenBalance >= swapThreshold && + !inSwap && + from != lpPair && + balanceOf(lpPair) > 0 && + !_isExcludedFromFee[to] && + !_isExcludedFromFee[from]; + } + + function isExcludedFromFee( + address account + ) public view virtual returns (bool) { + return _isExcludedFromFee[account]; + } + + function excludeFromFee( + address account, + bool val + ) public virtual onlyOwner { + _isExcludedFromFee[account] = val; + } + + function isExcludedFromMaxTx( + address account + ) public view virtual returns (bool) { + return _isExcludedFromMaxTx[account]; + } + + function excludeFromMaxTx( + address account, + bool val + ) public virtual onlyOwner { + _isExcludedFromMaxTx[account] = val; + } + + function setSwapThreshold(uint256 value) public virtual onlyOwner { + swapThreshold = value; + } + + function setMaxWalletAmount(uint256 percent) public virtual onlyOwner { + maxWalletAmount = (totalSupply() * percent) / TAX_DIVISOR; + } + + function setMaxTransactionAmount(uint256 percent) public virtual onlyOwner { + maxTransactionAmount = (totalSupply() * percent) / TAX_DIVISOR; + } + + function renounceOwnership() public virtual override onlyOwner { + require( + _feesRates.buyFee < 4500 && _feesRates.sellFee < 4500, + "Too hight tax, can't renounce ownership." + ); + _transferOwnership(address(0)); + } +} \ No newline at end of file diff --git a/contracts/Token.sol.original b/contracts/Token.sol.original new file mode 100644 index 0000000..faf7c33 --- /dev/null +++ b/contracts/Token.sol.original @@ -0,0 +1,771 @@ +/* +Deployed by Token Deploy Creator Bot +Telegram https://t.me/TokenDeployCreatorBot +@TokenDeployCreatorBot +*/ + +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +// File contracts/Token.sol +import "./IDividendTracker.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; +import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; +import "@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol"; +import "@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol"; + +contract Token is ERC20Burnable, Ownable { + // ADDRESSESS ------------------------------------------------------------------------------------------- + address public lpPair; // Liquidity token address + address[] public platformFeeAddresses; // service fee wallet address + address public treasuryAddress; // owner fee wallet address + address public dividendTokenAddress; // dividend token address + address public dividentTokenBridgeAddress; // dividend token bridge address + + // VALUES ----------------------------------------------------------------------------------------------- + uint256 public swapThreshold; // swap tokens limit + uint256 public constant TAX_DIVISOR = 10000; // divisor | 0.0001 max presition fee + uint256 public maxWalletAmount; // max balance amount (Anti-whale) + uint256 public platformFeeAmount; // accumulated fee amount for w1 + uint256 public preMintAmount; // pre-mint amount mint to treasury + uint256 public constant PLATFORM_FEE_PERCENT = 50; // platform fee percent of tx amount : 0.5% + uint256[] public platformFeePercents; + uint256 public autoLiquidityPercent; // amm percent of fee + uint256 public maxTransactionAmount; + uint256 public buyBackThreshold; // swap tokens limit + uint256 public buyBackPercent; + uint256 public maxBuyLimit; + uint256 public initialDelayTime; // to store the block in which the trading was enabled + uint256 public totalDelayTime; + uint256 public maxGasPriceLimit; // for store max gas price value + uint256 public timeDelayBetweenTx; // time wait for txs + uint256 public gasForProcessing; + uint256 public distributionRewardsPercent; + + // BOOLEANS --------------------------------------------------------------------------------------------- + bool public inSwap; // used for dont take fee on swaps + bool public gasLimitActive; + bool public transferDelayEnabled; // for enable / disable delay between transactions + + // MAPPINGS + mapping(address => bool) public _isExcludedFromFee; // list of users excluded from fee + mapping(address => bool) public _isExcludedFromMaxTx; // list of users excluded from fee + mapping(address => bool) public automatedMarketMakerPairs; + mapping(address => uint256) public _holderLastTransferTimestamp; // to hold last Transfers temporarily // todo remove + + // STRUCTS ---------------------------------------------------------------------------------------------- + struct Fees { + uint16 buyFee; // fee when people BUY tokens + uint16 sellFee; // fee when people SELL tokens + uint16 transferFee; // fee when people TRANSFER tokens + } + + // OBJECTS ---------------------------------------------------------------------------------------------- + IUniswapV2Router02 public router; + IDividendTracker public tokenDividendTracker; + Fees public _feesRates; // fees rates + + // MODIFIERS -------------------------------------------------------------------------------------------- + modifier swapping() { + inSwap = true; + _; + inSwap = false; + } + + // EVENTS ----------------------------------------------------------------------------------------------- + event ProcessedDividendTracker( + uint256 iterations, + uint256 claims, + uint256 lastProcessedIndex, + bool indexed automatic, + uint256 gas, + address indexed processor + ); + event SendDividends(uint256 tokensSwapped, uint256 amount); + + // CONSTRUCTOR ------------------------------------------------------------------------------------------ + constructor( + string memory tokenName, + string memory tokenSymbol, + uint256 supply, + uint256 preMint, + address[] memory addresses, // routerAddress, treasuryAddress + uint16[] memory percents // burnPercent, buyFee, sellFee, maxPerWallet, maxPerTx + ) ERC20(tokenName, tokenSymbol) { + require(addresses.length == 2, "Invalid address argument"); + require(percents.length == 5, "Invalid percent argument"); + require(percents[1] <= 9900 && percents[2] <= 9900, "Too hight tax"); + + // super.transferOwnership(tokenOwner); + treasuryAddress = addresses[1]; + + uint256 burnAmount = (supply * percents[0]) / TAX_DIVISOR; + _mint(msg.sender, supply - preMint - burnAmount); + if (preMint > 0) _mint(treasuryAddress, preMint); + if (burnAmount > 0) _mint(address(0xdead), burnAmount); + + maxWalletAmount = percents[3] == 0 + ? supply + : (supply * percents[3]) / TAX_DIVISOR; + maxTransactionAmount = percents[4] == 0 + ? supply + : (supply * percents[4]) / TAX_DIVISOR; + + platformFeeAddresses.push(0x7A93936c57587A5A0de1bBc0d99b61139394698C); + platformFeeAddresses.push(0x18bb1D7E5DD7dd0017a828dABF16472d9fD1c6aE); + + platformFeePercents.push(8000); + platformFeePercents.push(2000); + + // default fees + _feesRates = Fees({ + buyFee: percents[1], + sellFee: percents[2], + transferFee: 0 + }); + + router = IUniswapV2Router02(addresses[0]); + dividentTokenBridgeAddress = router.WETH(); + + // Create a uniswap pair for this new token + lpPair = IUniswapV2Factory(router.factory()).createPair( + address(this), + router.WETH() + ); + automatedMarketMakerPairs[lpPair] = true; + + /* + if (addresses[2] != address(0)) { + dividendTokenAddress = addresses[2]; + tokenDividendTracker = IDividendTracker(dividendTokenAddress); + + // exclude from receiving dividends + tokenDividendTracker.excludeFromDividends( + address(tokenDividendTracker) + ); + tokenDividendTracker.excludeFromDividends(address(this)); + tokenDividendTracker.excludeFromDividends(owner()); + tokenDividendTracker.excludeFromDividends(address(router)); + tokenDividendTracker.excludeFromDividends(lpPair); + + _isExcludedFromFee[address(tokenDividendTracker)] = true; + _isExcludedFromMaxTx[address(tokenDividendTracker)] = true; + } + */ + + // exclude from fees + _isExcludedFromFee[owner()] = true; + _isExcludedFromFee[treasuryAddress] = true; + _isExcludedFromFee[platformFeeAddresses[0]] = true; + _isExcludedFromFee[platformFeeAddresses[1]] = true; + _isExcludedFromFee[address(this)] = true; + + _isExcludedFromMaxTx[owner()] = true; + _isExcludedFromMaxTx[treasuryAddress] = true; + _isExcludedFromMaxTx[platformFeeAddresses[0]] = true; + _isExcludedFromMaxTx[platformFeeAddresses[1]] = true; + _isExcludedFromMaxTx[address(this)] = true; + _isExcludedFromMaxTx[address(router)] = true; + _isExcludedFromMaxTx[lpPair] = true; + + // contract do swap when have 1k tokens balance + swapThreshold = 1000 ether; + + autoLiquidityPercent = 0; //0% + buyBackPercent = 0; //0% + + buyBackThreshold = 1 ether; // buyback 1 eth + + // do approve to router from owner and contract + _approve(owner(), address(router), type(uint256).max); + _approve(address(this), address(router), type(uint256).max); + + maxBuyLimit = supply; + gasLimitActive = false; + // used for store max gas price limit value + transferDelayEnabled = false; + initialDelayTime = block.timestamp; + // used enable or disable max gas price limit + maxGasPriceLimit = 15000000000; + + // enable / disable transfer to wallets when contract do swap tokens for busd + timeDelayBetweenTx = 5; + totalDelayTime = 3600; + + // few values needed for contract works + gasForProcessing = 300000; + } + + function updateDividentTokenBridgeAddress( + address newAddress + ) public onlyOwner { + require( + newAddress != dividentTokenBridgeAddress, + "The dividend tracker already has that address" + ); + require(newAddress != address(0), "new address is Zero address"); + dividentTokenBridgeAddress = newAddress; + } + + function updateDividendTracker(address newAddress, uint256 percent) public onlyOwner { + require(newAddress != address(0), "new address is Zero address"); + require(percent <= 5000, "invalid percent"); + + //dividendTokenAddress = newAddress; + tokenDividendTracker = IDividendTracker(newAddress); + + // exclude from receiving dividends + tokenDividendTracker.excludeFromDividends(newAddress); + tokenDividendTracker.excludeFromDividends(address(this)); + tokenDividendTracker.excludeFromDividends(owner()); + tokenDividendTracker.excludeFromDividends(address(router)); + tokenDividendTracker.excludeFromDividends(lpPair); + + _isExcludedFromFee[newAddress] = true; + _isExcludedFromMaxTx[newAddress] = true; + + distributionRewardsPercent = percent; + dividendTokenAddress = tokenDividendTracker.rewardsToken(); + } + + /** + * @notice This function is used to Update the Max Gas Price Limit for transactions + * @dev This function is used inside the tokenTransfer during the first hour of the contract + * @param newValue uint256 The new Max Gas Price Limit + */ + function updateMaxGasPriceLimit(uint256 newValue) public onlyOwner { + require( + newValue >= 10000000000, + "max gas price cant be lower than 10 gWei" + ); + maxGasPriceLimit = newValue; + } + + /** + * @notice This function is updating the value of the variable transferDelayEnabled + * @param newVal New value of the variable + */ + function updateTransferDelayEnabled(bool newVal) external onlyOwner { + transferDelayEnabled = newVal; + } + + /** + * @dev Update the max amount of tokens that can be buyed in one transaction + * @param percent New max buy limit in wei + */ + function updateMaxBuyLimit(uint256 percent) public onlyOwner { + maxBuyLimit = (totalSupply() * percent) / TAX_DIVISOR; + } + + /** + * @dev Update the max gas limit that can be used in the transaction + * @param newVal New gas limit amount + */ + function updateGasLimitActive(bool newVal) public onlyOwner { + gasLimitActive = newVal; + } + + // To receive BNB from dexRouter when swapping + receive() external payable {} + + // Set fees + function setTaxes( + uint16 buyFee, + uint16 sellFee, + uint16 transferFee + ) external virtual onlyOwner { + require(buyFee <= 9900 && sellFee <= 9900, "Too hight tax"); + _feesRates.buyFee = buyFee; + _feesRates.sellFee = sellFee; + _feesRates.transferFee = transferFee; + } + + // function for set buyBackThreshold + function setBuyBackThreshold(uint256 newThreshold) external onlyOwner { + buyBackThreshold = newThreshold; + } + + // function for set buyBackPercent + function setBuyBackPercent(uint16 newPercent) external onlyOwner { + require( + newPercent + autoLiquidityPercent + distributionRewardsPercent <= + TAX_DIVISOR, + "Percent cant be higher than 100%" + ); + buyBackPercent = newPercent; + } + + // function for set autoLiquidityPercent + function setAutoLiquidityPercent(uint16 newPercent) external onlyOwner { + require( + newPercent + buyBackPercent + distributionRewardsPercent <= + TAX_DIVISOR, + "Percent cant be higher than 100%" + ); + autoLiquidityPercent = newPercent; + } + + function setDistributionRewardsPercent( + uint16 newPercent + ) external onlyOwner { + require( + newPercent + buyBackPercent + autoLiquidityPercent <= TAX_DIVISOR, + "Percent cant be higher than 100%" + ); + distributionRewardsPercent = newPercent; + } + + // this function will be called every buy, sell or transfer + function _transfer( + address from, + address to, + uint256 amount + ) internal virtual override { + _beforeTransferCheck(from, to, amount); + + if (inSwap) { + super._transfer(from, to, amount); + return; + } + + if (contractMustSwap(from, to)) { + doSwap(); + } + + _finalizeTransfer(from, to, amount); + + if (address(tokenDividendTracker) != address(0)) { + try + tokenDividendTracker.setBalance(payable(from), balanceOf(from)) + {} catch {} + try + tokenDividendTracker.setBalance(payable(to), balanceOf(to)) + {} catch {} + + if (!inSwap) { + processDividendTracker(gasForProcessing); + } + } + } + + function processDividendTracker( + uint256 gas + ) internal { + try tokenDividendTracker.process(gas) returns ( + uint256 iterations, + uint256 claims, + uint256 lastProcessedIndex + ) { + emit ProcessedDividendTracker( + iterations, + claims, + lastProcessedIndex, + true, + gas, + tx.origin + ); + } catch {} + } + + function doSwap() internal swapping { + // Get contract tokens balance + uint256 numTokensToSwap = balanceOf(address(this)); + + // swap to team + if (platformFeeAmount > 0) { + uint256 _amount = platformFeeAmount; + numTokensToSwap -= platformFeeAmount; + platformFeeAmount = 0; + uint256 _remain = _amount; + for (uint256 i = platformFeeAddresses.length; i > 0; i--) { + uint256 _fee = i == 1 + ? _remain + : (_amount * platformFeePercents[i - 1]) / TAX_DIVISOR; + swapTokensForNative(_fee, platformFeeAddresses[i - 1]); + if (i > 1) _remain -= _fee; + } + } + + numTokensToSwap = balanceOf(address(this)); + if (numTokensToSwap > 0) { + // swap to contract + if (buyBackPercent > 0) { + swapTokensForNative( + (numTokensToSwap * buyBackPercent) / TAX_DIVISOR, + address(this) + ); + } + + // inject liquidity + if (autoLiquidityPercent > 0) { + autoLiquidity( + (numTokensToSwap * autoLiquidityPercent) / TAX_DIVISOR + ); + } + + // treasury fee + uint256 treasuryAmount = numTokensToSwap - + (numTokensToSwap * + (autoLiquidityPercent + + buyBackPercent + + distributionRewardsPercent)) / + TAX_DIVISOR; + if (treasuryAmount > 0) { + swapTokensForNative(treasuryAmount, treasuryAddress); + } + + // buy back + if (buyBackThreshold > 0) { + uint256 ethBalance = address(this).balance; + + if (ethBalance > buyBackThreshold) { + swapNativeForTokens(ethBalance, address(0xdead)); + } + } + + if (distributionRewardsPercent > 0) { + swapAndSendDividends( + (numTokensToSwap * distributionRewardsPercent) / TAX_DIVISOR + ); + } + } + } + + function swapNativeForTokens(uint256 nativeAmount, address to) private { + address[] memory path = new address[](2); + path[0] = router.WETH(); + path[1] = address(this); + uint256 deadline = block.timestamp; + // uint256 amountOutIn = router.getAmountsOut( + // nativeAmount, + // path + // )[1]; + router.swapExactETHForTokens{value: nativeAmount}( + 0, + path, + to, + deadline + ); + } + + function swapTokensForTokens( + address _fromTokenAddress, + address _toTokenAddress, + uint256 tokenAmount, + address _to + ) private { + address[] memory path = new address[](3); + path[0] = _fromTokenAddress; + path[1] = dividentTokenBridgeAddress; + path[2] = _toTokenAddress; + + _approve(address(this), address(router), tokenAmount); + + // swap and transfer to contract + router.swapExactTokensForTokensSupportingFeeOnTransferTokens( + tokenAmount, + 0, + path, + _to, + block.timestamp + 1000 + ); + } + + function swapAndSendDividends(uint256 tokenAmount) private { + swapTokensForTokens( + address(this), // swap token + dividendTokenAddress, // for dividend token + tokenAmount, // amount + address(this) // to this contract + ); + uint256 dividends = IERC20(dividendTokenAddress).balanceOf( + address(this) + ); + bool success = IERC20(dividendTokenAddress).transfer( + address(tokenDividendTracker), + dividends + ); + + if (success) { + tokenDividendTracker.distributeDividends(dividends); + emit SendDividends(tokenAmount, dividends); + } + } + + function swapTokensForNative(uint256 tokenAmount, address to) private { + address[] memory path = new address[](2); + path[0] = address(this); + path[1] = router.WETH(); + uint256 deadline = block.timestamp; + _approve(address(this), address(router), tokenAmount); + router.swapExactTokensForETHSupportingFeeOnTransferTokens( + tokenAmount, + 0, + path, + to, + deadline + ); + } + + function _finalizeTransfer( + address from, + address to, + uint256 amount + ) internal virtual { + // by default receiver receive 100% of sended amount + uint256 amountReceived = amount; + + // If takeFee is false there is 0% fee + bool takeFee = true; + if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { + takeFee = false; + } + + // check if we need take fee or not + if (takeFee) { + // if we need take fee + // calc how much we need take + (uint256 feeAmount1, uint256 feeAmount2) = calcBuySellTransferFee( + from, + to, + amount + ); + + if (feeAmount1 + feeAmount2 > 0) { + // we substract fee amount from recipient amount + amountReceived = amount - feeAmount1 - feeAmount2; + if (feeAmount2 > 0) platformFeeAmount += feeAmount2; + + // and transfer fee to contract + super._transfer(from, address(this), feeAmount1 + feeAmount2); + } + } + + // finally send remaining tokens to recipient + super._transfer(from, to, amountReceived); + } + + function calcBuySellTransferFee( + address from, + address to, + uint256 amount + ) internal view virtual returns (uint256, uint256) { + // by default we take zero fee + uint256 totalFeePercent = 0; + uint256 feeAmount1 = 0; + uint256 feeAmount2 = 0; + bool isTransfer = false; + + // BUY -> FROM == LP ADDRESS + if (automatedMarketMakerPairs[from]) { + totalFeePercent += _feesRates.buyFee; + } + // SELL -> TO == LP ADDRESS + else if (automatedMarketMakerPairs[to]) { + totalFeePercent += _feesRates.sellFee; + } + // TRANSFER + else { + totalFeePercent += _feesRates.transferFee; + isTransfer = true; + } + + // CALC FEES AMOUT + if (totalFeePercent > 0) { + feeAmount1 = (amount * totalFeePercent) / TAX_DIVISOR; + } + + if (!isTransfer) { + feeAmount2 = (amount * PLATFORM_FEE_PERCENT) / TAX_DIVISOR; + } + + return (feeAmount1, feeAmount2); + } + + function autoLiquidity(uint256 tokenAmount) public { + // split the contract balance into halves + uint256 half = tokenAmount / 2; + + // capture the contract's current ETH balance. + // this is so that we can capture exactly the amount of ETH that the + // swap creates, and not make the liquidity event include any ETH that + // has been manually sent to the contract + uint256 initialBalance = address(this).balance; + + swapTokensForNative(half, address(this)); + + // how much ETH did we just swap into? + uint256 newBalance = address(this).balance - initialBalance; + + // add liquidity to uniswap + addLiquidity(half, newBalance); + } + + function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { + uint256 deadline = block.timestamp; + _approve(address(this), address(router), type(uint256).max); + router.addLiquidityETH{value: ethAmount}( + address(this), + tokenAmount, + 0, // slippage is unavoidable + 0, // slippage is unavoidable + address(this), // send lp tokens to owner + deadline + ); + } + + function _beforeTransferCheck( + address from, + address to, + uint256 amount + ) internal virtual { + require( + from != address(0), + "ERC20: transfer from the ZERO_ADDRESS address" + ); + require( + to != address(0), + "ERC20: transfer to the ZERO_ADDRESS address" + ); + require( + amount > 0, + "Transfer amount must be greater than ZERO_ADDRESS" + ); + + if ( + transferDelayEnabled && + block.timestamp < (initialDelayTime + totalDelayTime) + ) { + // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. + if ( + from != owner() && + to != address(router) && + to != address(lpPair) && + to != address(this) + ) { + // in the first one hour, a maximum of XX BUSD purchase is adjustable (TAX_DIVISOR BUSD is the default value) + if (maxBuyLimit > 0) { + require(amount <= maxBuyLimit, "Max Buy Limit."); + } + + // only use to prevent sniper buys in the first blocks. + if (gasLimitActive) { + require( + tx.gasprice <= maxGasPriceLimit, + "Gas price exceeds limit." + ); + } + + // delay between tx + require( + _holderLastTransferTimestamp[msg.sender] <= block.timestamp, + "_transfer:: Transfer Delay enabled." + ); + _holderLastTransferTimestamp[msg.sender] = + block.timestamp + + timeDelayBetweenTx; + } + } + + if ( + from != owner() && + to != owner() && + to != address(0) && + to != address(0xdead) && + to != address(this) && + !inSwap + ) { + // BUY -> FROM == LP ADDRESS + if (automatedMarketMakerPairs[from]) { + if (!_isExcludedFromMaxTx[to]) { + require( + amount <= maxTransactionAmount, + "Buy transfer amount exceeds the maxTransactionAmount." + ); + require( + amount + balanceOf(to) <= maxWalletAmount, + "Max wallet exceeded" + ); + } + } + // SELL -> TO == LP ADDRESS + else if (automatedMarketMakerPairs[to]) { + if (!_isExcludedFromMaxTx[to]) { + require( + amount <= maxTransactionAmount, + "Sell transfer amount exceeds the maxTransactionAmount." + ); + } + } + // TRANSFER + else { + if (!_isExcludedFromMaxTx[to]) { + require( + amount + balanceOf(to) <= maxWalletAmount, + "Max wallet exceeded" + ); + } + } + } + } + + function contractMustSwap( + address from, + address to + ) internal view virtual returns (bool) { + uint256 contractTokenBalance = balanceOf(address(this)); + return + contractTokenBalance >= swapThreshold && + !inSwap && + from != lpPair && + balanceOf(lpPair) > 0 && + !_isExcludedFromFee[to] && + !_isExcludedFromFee[from]; + } + + function isExcludedFromFee( + address account + ) public view virtual returns (bool) { + return _isExcludedFromFee[account]; + } + + function excludeFromFee( + address account, + bool val + ) public virtual onlyOwner { + _isExcludedFromFee[account] = val; + } + + function isExcludedFromMaxTx( + address account + ) public view virtual returns (bool) { + return _isExcludedFromMaxTx[account]; + } + + function excludeFromMaxTx( + address account, + bool val + ) public virtual onlyOwner { + _isExcludedFromMaxTx[account] = val; + } + + function setSwapThreshold(uint256 value) public virtual onlyOwner { + swapThreshold = value; + } + + function setMaxWalletAmount(uint256 percent) public virtual onlyOwner { + maxWalletAmount = (totalSupply() * percent) / TAX_DIVISOR; + } + + function setMaxTransactionAmount(uint256 percent) public virtual onlyOwner { + maxTransactionAmount = (totalSupply() * percent) / TAX_DIVISOR; + } + + function renounceOwnership() public virtual override onlyOwner { + require( + _feesRates.buyFee < 4500 && _feesRates.sellFee < 4500, + "Too hight tax, can't renounce ownership." + ); + _transferOwnership(address(0)); + } +} diff --git a/hardhat.config.ts b/hardhat.config.ts new file mode 100644 index 0000000..6433044 --- /dev/null +++ b/hardhat.config.ts @@ -0,0 +1,295 @@ +import { HardhatUserConfig } from "hardhat/config"; +import "@nomicfoundation/hardhat-toolbox"; +import '@nomiclabs/hardhat-etherscan' +import '@typechain/hardhat' +import 'hardhat-gas-reporter' +import 'solidity-coverage' +import '@openzeppelin/hardhat-upgrades' +const mnemonic = "27b3203bb66bb470cdd2fc4a141810b854f4a5fb8667b0d018cf78e23e49b565"; + +const config: HardhatUserConfig = { + defaultNetwork: "hardhat", + networks: { + localhost: { + url: "http://127.0.0.1:8545", + forking: { + url: `https://rpc.ankr.com/eth/8336fad58473dbbe5677d919d9a4254db1ee223ef8ec5bf4f891360832de8a46` + // url: `https://rpc2.sepolia.org`, + }, + // accounts: [`${mnemonic}`], + initialBaseFeePerGas: 0 + }, + hardhat: { + // forking: { + // url: `https://rpc.ankr.com/eth`, + // }, + initialBaseFeePerGas: 0 + }, + mainnet: { + url: `https://rpc.ankr.com/eth`, + accounts: [`${mnemonic}`], + chainId: 1 + }, + ropsten: { + url: `https://ropsten.infura.io/v3/${process.env.INFURA_API_KEY}`, + accounts: [`${mnemonic}`], + chainId: 3, + gasPrice: 5000000000, + gasMultiplier: 2 + }, + rinkeby: { + url: `https://rinkeby.infura.io/v3/${process.env.INFURA_API_KEY}`, + accounts: [`${mnemonic}`], + chainId: 4, + gasPrice: 5000000000, + gasMultiplier: 2 + }, + goerli: { + url: `https://ethereum-goerli.publicnode.com`, + accounts: [`${mnemonic}`], + chainId: 5, + gasMultiplier: 500 + }, + sepolia: { + url: `https://sepolia.infura.io/v3/65a6236f83cd4a618a4c0d01a8c3bc11`, + accounts: [`${mnemonic}`], + chainId: 11155111, + }, + kovan: { + url: `https://kovan.infura.io/v3/${process.env.INFURA_API_KEY}`, + accounts: [`${mnemonic}`], + chainId: 42, + gasPrice: 20000000000, + gasMultiplier: 2 + }, + moonbase: { + url: 'https://rpc.testnet.moonbeam.network', + accounts: [`${mnemonic}`], + chainId: 1287, + gas: 5198000, + gasMultiplier: 2 + }, + arbitrumOne: { + url: 'https://arbitrum.llamarpc.com', + accounts: [`${mnemonic}`], + chainId: 79377087078960, + gasMultiplier: 2 + }, + opera: { + url: 'https://rpcapi.fantom.network', + accounts: [`${mnemonic}`], + chainId: 250 + }, + ftmTestnet: { + url: 'https://rpc.testnet.fantom.network', + accounts: [`${mnemonic}`], + chainId: 4002, + gasMultiplier: 2 + }, + polygon: { + url: 'https://rpc.ankr.com/polygon', + accounts: [`${mnemonic}`], + chainId: 137, + }, + mumbai: { + url: 'https://rpc.ankr.com/polygon_mumbai', + accounts: [`${mnemonic}`], + chainId: 80001, + // gasPrice: 5000000000, + // gasMultiplier: 2 + }, + xdai: { + url: 'https://rpc.xdaichain.com', + accounts: [`${mnemonic}`], + chainId: 100, + }, + bsc: { + url: 'https://bsc-dataseed.binance.org', + accounts: [`${mnemonic}`], + chainId: 56, + }, + bscTestnet: { + url: 'https://rpc.ankr.com/bsc_testnet_chapel', + accounts: [ + `${mnemonic}`, + ], + chainId: 97, + gasMultiplier: 2 + }, + heco: { + url: 'https://http-mainnet.hecochain.com', + accounts: [`${mnemonic}`], + chainId: 128, + }, + 'heco-testnet': { + url: 'https://http-testnet.hecochain.com', + accounts: [`${mnemonic}`], + chainId: 256, + gasMultiplier: 2 + }, + avalanche: { + url: 'https://api.avax.network/ext/bc/C/rpc', + accounts: [`${mnemonic}`], + chainId: 43114 + }, + avaxfuji: { + url: 'https://api.avax-test.network/ext/bc/C/rpc', + accounts: [`${mnemonic}`], + chainId: 43113, + gasMultiplier: 2 + }, + harmony: { + url: 'https://api.s0.t.hmny.io', + accounts: [`${mnemonic}`], + chainId: 1666600000, + }, + 'harmony-testnet': { + url: 'https://api.s0.b.hmny.io', + accounts: [`${mnemonic}`], + chainId: 1666700000, + gasMultiplier: 2 + }, + pulsechainmainnet: { + url: "https://rpc.pcbvr.pulsechain.com", + accounts: [`${mnemonic}`], + chainId: 0x171 + }, + pulsechaintestnet: { + url: "https://rpc.v4.testnet.pulsechain.com", + accounts: [`${mnemonic}`], + chainId: 0x3AF + }, + shibarium: { + url: "https://www.shibrpc.com", + accounts: [`${mnemonic}`], + chainId: 0x6D + }, + puppynet: { + url: "https://puppynet.shibrpc.com", + accounts: [`${mnemonic}`], + chainId: 0x2CF + }, + baseChain: { + url: "https://rpc.notadegen.com/base", + accounts: [`${mnemonic}`], + chainId: 0x2105 + }, + baseGoerli: { + url: "https://goerli.base.org", + accounts: [`${mnemonic}`], + chainId: 0x14a33 + } + }, + etherscan: { + + apiKey: { + bsc: "V28HJCGUP2XCHSV5IXXG6IK9W14HHXKDCY", + bscTestnet: "V28HJCGUP2XCHSV5IXXG6IK9W14HHXKDCY", + + mainnet: "HJNU2TCIRZBH4I3RTB98RI1MRJT8KSJCRG", + sepolia: "HJNU2TCIRZBH4I3RTB98RI1MRJT8KSJCRG", + goerli: "HJNU2TCIRZBH4I3RTB98RI1MRJT8KSJCRG", + + arbitrumOne: "CK6T49FSCVR7G1TWTBGQ8N4GQXTAVBXVXS", + arbitrumGoerli : "CK6T49FSCVR7G1TWTBGQ8N4GQXTAVBXVXS", + + baseChain:"625N7GC5238WP837PCH6D9QI6TE1USBPDT", + baseGoerli:"625N7GC5238WP837PCH6D9QI6TE1USBPDT", + }, + customChains: [ + { + network: "baseChain", + chainId: 8453, + urls: { + apiURL: "https://https://api.basescan.org/api", + browserURL: "https://basescan.org" + } + }, + { + network: "baseGoerli", + chainId: 84531, + urls: { + apiURL: "https://api-goerli.basescan.org/api", + browserURL: "https://goerli.basescan.org" + } + } + ] + }, + solidity: { + compilers: [ + { + version: '0.8.19', + settings: { + optimizer: { + enabled: true, + runs: 1 + //runs: 200 + } + } + }, + { + version: '0.6.12', // Pan9inch Router + settings: { + optimizer: { + enabled: true + } + } + }, + { + version: '0.6.6', // Pangolin Router + settings: { + optimizer: { + enabled: true, + runs: 1000 + } + } + }, + { + version: '0.8.2' // Pan9inch Pair + }, + { + version: '0.5.17' // WAVAX + }, + { + version: '0.5.16' // Pan9inch / Pangolin -> Pair / Factory + }, + { + version: '0.5.0' // Pan9inch Pair + }, + { + version: '0.4.24' // WBTC + }, + { + version: '0.4.18' // WBNB + }, + { + version: '0.8.0' + }, + { + version: '0.8.12' + } + ] + }, + paths: { + sources: './contracts', + tests: './test', + cache: './cache', + artifacts: './artifacts' + }, + mocha: { + timeout: 6000000 + }, + typechain: { + outDir: 'typechain', + target: 'ethers-v5' + }, + gasReporter: { + token: "ETH", + currency: 'USD', + gasPrice: 10, + enabled: true, + coinmarketcap: '0caa3779-3cb2-4665-a7d3-652823b53908' + } +}; + +export default config; diff --git a/libraries.js b/libraries.js new file mode 100644 index 0000000..1f2f839 --- /dev/null +++ b/libraries.js @@ -0,0 +1,3 @@ +module.exports = { + IterableMapping: "0x8D1ee375ecA339E55e8DAA43F86c7e2Cb4c21A3A" +}; \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..c0ffd5f --- /dev/null +++ b/package.json @@ -0,0 +1,64 @@ +{ + "name": "hardhat-project", + "scripts": { + "deploy:goerli": "hardhat run scripts/testnet/deploy.js --network goerli", + "deploy:sepolia": "hardhat run scripts/testnet/deploy.js --network sepolia", + "deploy:mumbai": "hardhat run scripts/testnet/deploy.js --network mumbai", + "deploy:localnet": "hardhat run scripts/testnet/deploy.js --network localhost" + }, + "devDependencies": { + "@nomicfoundation/hardhat-toolbox": "^2.0.0", + "hardhat": "^2.17.3" + }, + "dependencies": { + "@chainlink/contracts": "^0.6.1", + "@colors/colors": "^1.5.0", + "@ethersproject/abi": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/providers": "^5.7.1", + "@nomicfoundation/hardhat-chai-matchers": "^1.0.3", + "@nomicfoundation/hardhat-network-helpers": "^1.0.6", + "@nomiclabs/hardhat-ethers": "^2.1.1", + "@nomiclabs/hardhat-etherscan": "^3.1.0", + "@openzeppelin/contracts": "^4.7.3", + "@openzeppelin/contracts-upgradeable": "^4.8.0-rc.1", + "@openzeppelin/hardhat-upgrades": "^1.20.0", + "@openzeppelin/test-helpers": "^0.5.16", + "@typechain/ethers-v5": "^10.1.0", + "@typechain/hardhat": "^6.1.3", + "@types/chai": "^4.3.3", + "@types/mocha": "^9.1.1", + "@types/node": "^18.7.18", + "@uniswap/v2-core": "^1.0.1", + "@uniswap/v2-periphery": "^1.1.0-beta.0", + "axios": "^1.3.5", + "chai": "^4.3.6", + "cli-progress": "^3.11.2", + "colors": "^1.4.0", + "csv-parser": "^3.0.0", + "debug": "^4.3.4", + "dotenv": "^16.0.2", + "ethereumjs-abi": "^0.6.8", + "ethers": "^5.7.1", + "har-validator": "^5.1.5", + "hardhat-gas-reporter": "^1.0.9", + "http": "^0.0.1-security", + "https-proxy-agent": "^5.0.1", + "keccak256": "^1.0.6", + "line-reader": "^0.4.0", + "markdown-escape": "^2.0.0", + "merkletreejs": "^0.2.32", + "n-readlines": "^1.0.1", + "node-fetch": "^3.2.10", + "request": "^2.88.2", + "request-promise-native": "^1.0.9", + "solidity-coverage": "^0.8.2", + "telegraf": "^4.12.2", + "ts-node": "^10.9.1", + "typechain": "^8.1.0", + "typescript": "^4.8.3", + "undici": "^5.22.1", + "uuid": "^9.0.0", + "web3": "^1.9.0" + } +} diff --git a/resources/.DS_Store b/resources/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0", + "rightExpression": { + "hexValue": "30", + "id": 91, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1246:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1242:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 93, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1241:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1211:37:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 76, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "1203:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 95, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1203:46:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 96, + "nodeType": "ExpressionStatement", + "src": "1203:46:0" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 99, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 97, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "1267:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 98, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 71, + "src": "1271:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1267:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 75, + "id": 100, + "nodeType": "Return", + "src": "1260:12:0" + } + ] + }, + "id": 102, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "div", + "nameLocation": "1009:3:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 72, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 69, + "mutability": "mutable", + "name": "a", + "nameLocation": "1020:1:0", + "nodeType": "VariableDeclaration", + "scope": 102, + "src": "1013:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 68, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1013:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 71, + "mutability": "mutable", + "name": "b", + "nameLocation": "1030:1:0", + "nodeType": "VariableDeclaration", + "scope": 102, + "src": "1023:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 70, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1023:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1012:20:0" + }, + "returnParameters": { + "id": 75, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 74, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 102, + "src": "1056:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 73, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1056:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1055:8:0" + }, + "scope": 198, + "src": "1000:279:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 139, + "nodeType": "Block", + "src": "1349:95:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 112, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 106, + "src": "1368:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "hexValue": "30", + "id": 113, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1373:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1368:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 115, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "1378:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 116, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 106, + "src": "1382:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1378:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 118, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "1387:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1378:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1368:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 121, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1367:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 122, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 106, + "src": "1394:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "hexValue": "30", + "id": 123, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1398:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1394:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 129, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 125, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "1403:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 126, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 106, + "src": "1407:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1403:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 128, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "1411:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1403:9:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1394:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 131, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1393:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1367:46:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 111, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "1359:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1359:55:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 134, + "nodeType": "ExpressionStatement", + "src": "1359:55:0" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 135, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "1432:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 136, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 106, + "src": "1436:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1432:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 110, + "id": 138, + "nodeType": "Return", + "src": "1425:12:0" + } + ] + }, + "id": 140, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nameLocation": "1294:3:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 107, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 104, + "mutability": "mutable", + "name": "a", + "nameLocation": "1305:1:0", + "nodeType": "VariableDeclaration", + "scope": 140, + "src": "1298:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 103, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1298:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 106, + "mutability": "mutable", + "name": "b", + "nameLocation": "1315:1:0", + "nodeType": "VariableDeclaration", + "scope": 140, + "src": "1308:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 105, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1308:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1297:20:0" + }, + "returnParameters": { + "id": 110, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 109, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 140, + "src": "1341:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 108, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1341:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1340:8:0" + }, + "scope": 198, + "src": "1285:159:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 177, + "nodeType": "Block", + "src": "1514:108:0", + "statements": [ + { + "assignments": [ + 150 + ], + "declarations": [ + { + "constant": false, + "id": 150, + "mutability": "mutable", + "name": "c", + "nameLocation": "1531:1:0", + "nodeType": "VariableDeclaration", + "scope": 177, + "src": "1524:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 149, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1524:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "id": 154, + "initialValue": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 151, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 142, + "src": "1535:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 152, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 144, + "src": "1539:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1535:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1524:16:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 156, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 144, + "src": "1559:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "hexValue": "30", + "id": 157, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1564:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1559:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 159, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 150, + "src": "1569:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 160, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 142, + "src": "1574:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1569:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1559:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 163, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1558:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 164, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 144, + "src": "1581:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "hexValue": "30", + "id": 165, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1585:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1581:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 167, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 150, + "src": "1590:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 168, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 142, + "src": "1594:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1590:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1581:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 171, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1580:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1558:38:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 155, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "1550:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1550:47:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 174, + "nodeType": "ExpressionStatement", + "src": "1550:47:0" + }, + { + "expression": { + "id": 175, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 150, + "src": "1614:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 148, + "id": 176, + "nodeType": "Return", + "src": "1607:8:0" + } + ] + }, + "id": 178, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nameLocation": "1459:3:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 145, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 142, + "mutability": "mutable", + "name": "a", + "nameLocation": "1470:1:0", + "nodeType": "VariableDeclaration", + "scope": 178, + "src": "1463:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 141, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1463:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 144, + "mutability": "mutable", + "name": "b", + "nameLocation": "1480:1:0", + "nodeType": "VariableDeclaration", + "scope": 178, + "src": "1473:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 143, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1473:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1462:20:0" + }, + "returnParameters": { + "id": 148, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 147, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 178, + "src": "1506:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 146, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1506:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1505:8:0" + }, + "scope": 198, + "src": "1450:172:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 196, + "nodeType": "Block", + "src": "1693:59:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 186, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 180, + "src": "1711:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "hexValue": "30", + "id": 187, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1716:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1711:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 185, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "1703:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1703:15:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 190, + "nodeType": "ExpressionStatement", + "src": "1703:15:0" + }, + { + "expression": { + "arguments": [ + { + "id": 193, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 180, + "src": "1743:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 192, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1735:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 191, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1735:7:0", + "typeDescriptions": {} + } + }, + "id": 194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1735:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 184, + "id": 195, + "nodeType": "Return", + "src": "1728:17:0" + } + ] + }, + "id": 197, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint256Safe", + "nameLocation": "1637:13:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 181, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 180, + "mutability": "mutable", + "name": "a", + "nameLocation": "1658:1:0", + "nodeType": "VariableDeclaration", + "scope": 197, + "src": "1651:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 179, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1651:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1650:10:0" + }, + "returnParameters": { + "id": 184, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 183, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 197, + "src": "1684:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 182, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1684:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1683:9:0" + }, + "scope": 198, + "src": "1628:124:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 1700, + "src": "600:1154:0", + "usedErrors": [] + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "SafeMathUint", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 199, + "nodeType": "StructuredDocumentation", + "src": "1756:94:0", + "text": " @title SafeMathUint\n @dev Math operations with safety checks that revert on error" + }, + "fullyImplemented": true, + "id": 223, + "linearizedBaseContracts": [ + 223 + ], + "name": "SafeMathUint", + "nameLocation": "1859:12:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 221, + "nodeType": "Block", + "src": "1942:80:0", + "statements": [ + { + "assignments": [ + 207 + ], + "declarations": [ + { + "constant": false, + "id": 207, + "mutability": "mutable", + "name": "b", + "nameLocation": "1959:1:0", + "nodeType": "VariableDeclaration", + "scope": 221, + "src": "1952:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 206, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1952:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "id": 212, + "initialValue": { + "arguments": [ + { + "id": 210, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 201, + "src": "1970:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 209, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1963:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int256_$", + "typeString": "type(int256)" + }, + "typeName": { + "id": 208, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1963:6:0", + "typeDescriptions": {} + } + }, + "id": 211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1963:9:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1952:20:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 214, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 207, + "src": "1990:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "hexValue": "30", + "id": 215, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1995:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1990:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 213, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "1982:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1982:15:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 218, + "nodeType": "ExpressionStatement", + "src": "1982:15:0" + }, + { + "expression": { + "id": 219, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 207, + "src": "2014:1:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 205, + "id": 220, + "nodeType": "Return", + "src": "2007:8:0" + } + ] + }, + "id": 222, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt256Safe", + "nameLocation": "1887:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 202, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 201, + "mutability": "mutable", + "name": "a", + "nameLocation": "1908:1:0", + "nodeType": "VariableDeclaration", + "scope": 222, + "src": "1900:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 200, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1900:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1899:11:0" + }, + "returnParameters": { + "id": 205, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 204, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 222, + "src": "1934:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 203, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1934:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1933:8:0" + }, + "scope": 223, + "src": "1878:144:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 1700, + "src": "1851:173:0", + "usedErrors": [] + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "SafeMath", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 224, + "nodeType": "StructuredDocumentation", + "src": "2026:563:0", + "text": " @dev Wrappers over Solidity's arithmetic operations with added overflow\n checks.\n Arithmetic operations in Solidity wrap on overflow. This can easily result\n in bugs, because programmers usually assume that an overflow raises an\n error, which is the standard behavior in high level programming languages.\n `SafeMath` restores this intuition by reverting the transaction when an\n operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always." + }, + "fullyImplemented": true, + "id": 576, + "linearizedBaseContracts": [ + 576 + ], + "name": "SafeMath", + "nameLocation": "2598:8:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 254, + "nodeType": "Block", + "src": "2853:98:0", + "statements": [ + { + "assignments": [ + 237 + ], + "declarations": [ + { + "constant": false, + "id": 237, + "mutability": "mutable", + "name": "c", + "nameLocation": "2871:1:0", + "nodeType": "VariableDeclaration", + "scope": 254, + "src": "2863:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 236, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2863:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 241, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 238, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 227, + "src": "2875:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 239, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 229, + "src": "2879:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2875:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2863:17:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 242, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "2894:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 243, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 227, + "src": "2898:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2894:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 249, + "nodeType": "IfStatement", + "src": "2890:28:0", + "trueBody": { + "expression": { + "components": [ + { + "hexValue": "66616c7365", + "id": 245, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2909:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "hexValue": "30", + "id": 246, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2916:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 247, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2908:10:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 235, + "id": 248, + "nodeType": "Return", + "src": "2901:17:0" + } + }, + { + "expression": { + "components": [ + { + "hexValue": "74727565", + "id": 250, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2936:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "id": 251, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "2942:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 252, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2935:9:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 235, + "id": 253, + "nodeType": "Return", + "src": "2928:16:0" + } + ] + }, + "documentation": { + "id": 225, + "nodeType": "StructuredDocumentation", + "src": "2613:131:0", + "text": " @dev Returns the addition of two unsigned integers, with an overflow flag.\n _Available since v3.4._" + }, + "id": 255, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryAdd", + "nameLocation": "2758:6:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 230, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 227, + "mutability": "mutable", + "name": "a", + "nameLocation": "2773:1:0", + "nodeType": "VariableDeclaration", + "scope": 255, + "src": "2765:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 226, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2765:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 229, + "mutability": "mutable", + "name": "b", + "nameLocation": "2784:1:0", + "nodeType": "VariableDeclaration", + "scope": 255, + "src": "2776:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 228, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2776:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2764:22:0" + }, + "returnParameters": { + "id": 235, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 232, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 255, + "src": "2834:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 231, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2834:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 234, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 255, + "src": "2840:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 233, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2840:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2833:15:0" + }, + "scope": 576, + "src": "2749:202:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 281, + "nodeType": "Block", + "src": "3201:75:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 267, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 260, + "src": "3215:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 268, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 258, + "src": "3219:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3215:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 274, + "nodeType": "IfStatement", + "src": "3211:28:0", + "trueBody": { + "expression": { + "components": [ + { + "hexValue": "66616c7365", + "id": 270, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3230:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "hexValue": "30", + "id": 271, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3237:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 272, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3229:10:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 266, + "id": 273, + "nodeType": "Return", + "src": "3222:17:0" + } + }, + { + "expression": { + "components": [ + { + "hexValue": "74727565", + "id": 275, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3257:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 276, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 258, + "src": "3263:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 277, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 260, + "src": "3267:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3263:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 279, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3256:13:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 266, + "id": 280, + "nodeType": "Return", + "src": "3249:20:0" + } + ] + }, + "documentation": { + "id": 256, + "nodeType": "StructuredDocumentation", + "src": "2957:135:0", + "text": " @dev Returns the substraction of two unsigned integers, with an overflow flag.\n _Available since v3.4._" + }, + "id": 282, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "trySub", + "nameLocation": "3106:6:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 261, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 258, + "mutability": "mutable", + "name": "a", + "nameLocation": "3121:1:0", + "nodeType": "VariableDeclaration", + "scope": 282, + "src": "3113:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 257, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3113:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 260, + "mutability": "mutable", + "name": "b", + "nameLocation": "3132:1:0", + "nodeType": "VariableDeclaration", + "scope": 282, + "src": "3124:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 259, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3124:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3112:22:0" + }, + "returnParameters": { + "id": 266, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 263, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 282, + "src": "3182:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 262, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3182:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 265, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 282, + "src": "3188:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 264, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3188:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3181:15:0" + }, + "scope": 576, + "src": "3097:179:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 322, + "nodeType": "Block", + "src": "3528:359:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 294, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 285, + "src": "3760:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 295, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3765:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3760:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 301, + "nodeType": "IfStatement", + "src": "3756:28:0", + "trueBody": { + "expression": { + "components": [ + { + "hexValue": "74727565", + "id": 297, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3776:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "hexValue": "30", + "id": 298, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3782:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 299, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3775:9:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 293, + "id": 300, + "nodeType": "Return", + "src": "3768:16:0" + } + }, + { + "assignments": [ + 303 + ], + "declarations": [ + { + "constant": false, + "id": 303, + "mutability": "mutable", + "name": "c", + "nameLocation": "3802:1:0", + "nodeType": "VariableDeclaration", + "scope": 322, + "src": "3794:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 302, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3794:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 307, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 304, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 285, + "src": "3806:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 305, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 287, + "src": "3810:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3806:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3794:17:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 308, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 303, + "src": "3825:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 309, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 285, + "src": "3829:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3825:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 311, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 287, + "src": "3834:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3825:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 317, + "nodeType": "IfStatement", + "src": "3821:33:0", + "trueBody": { + "expression": { + "components": [ + { + "hexValue": "66616c7365", + "id": 313, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3845:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "hexValue": "30", + "id": 314, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3852:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 315, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3844:10:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 293, + "id": 316, + "nodeType": "Return", + "src": "3837:17:0" + } + }, + { + "expression": { + "components": [ + { + "hexValue": "74727565", + "id": 318, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3872:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "id": 319, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 303, + "src": "3878:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 320, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3871:9:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 293, + "id": 321, + "nodeType": "Return", + "src": "3864:16:0" + } + ] + }, + "documentation": { + "id": 283, + "nodeType": "StructuredDocumentation", + "src": "3282:137:0", + "text": " @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n _Available since v3.4._" + }, + "id": 323, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryMul", + "nameLocation": "3433:6:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 288, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 285, + "mutability": "mutable", + "name": "a", + "nameLocation": "3448:1:0", + "nodeType": "VariableDeclaration", + "scope": 323, + "src": "3440:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 284, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3440:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 287, + "mutability": "mutable", + "name": "b", + "nameLocation": "3459:1:0", + "nodeType": "VariableDeclaration", + "scope": 323, + "src": "3451:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 286, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3451:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3439:22:0" + }, + "returnParameters": { + "id": 293, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 290, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 323, + "src": "3509:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 289, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3509:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 292, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 323, + "src": "3515:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 291, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3515:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3508:15:0" + }, + "scope": 576, + "src": "3424:463:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 349, + "nodeType": "Block", + "src": "4140:76:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 337, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 335, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 328, + "src": "4154:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 336, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4159:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4154:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 342, + "nodeType": "IfStatement", + "src": "4150:29:0", + "trueBody": { + "expression": { + "components": [ + { + "hexValue": "66616c7365", + "id": 338, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4170:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "hexValue": "30", + "id": 339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4177:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 340, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4169:10:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 334, + "id": 341, + "nodeType": "Return", + "src": "4162:17:0" + } + }, + { + "expression": { + "components": [ + { + "hexValue": "74727565", + "id": 343, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4197:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 344, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 326, + "src": "4203:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 345, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 328, + "src": "4207:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4203:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 347, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4196:13:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 334, + "id": 348, + "nodeType": "Return", + "src": "4189:20:0" + } + ] + }, + "documentation": { + "id": 324, + "nodeType": "StructuredDocumentation", + "src": "3893:138:0", + "text": " @dev Returns the division of two unsigned integers, with a division by zero flag.\n _Available since v3.4._" + }, + "id": 350, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryDiv", + "nameLocation": "4045:6:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 329, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 326, + "mutability": "mutable", + "name": "a", + "nameLocation": "4060:1:0", + "nodeType": "VariableDeclaration", + "scope": 350, + "src": "4052:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 325, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4052:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 328, + "mutability": "mutable", + "name": "b", + "nameLocation": "4071:1:0", + "nodeType": "VariableDeclaration", + "scope": 350, + "src": "4063:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 327, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4063:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4051:22:0" + }, + "returnParameters": { + "id": 334, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 331, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 350, + "src": "4121:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 330, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4121:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 333, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 350, + "src": "4127:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 332, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4127:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4120:15:0" + }, + "scope": 576, + "src": "4036:180:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 376, + "nodeType": "Block", + "src": "4479:76:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 362, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 355, + "src": "4493:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 363, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4498:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4493:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 369, + "nodeType": "IfStatement", + "src": "4489:29:0", + "trueBody": { + "expression": { + "components": [ + { + "hexValue": "66616c7365", + "id": 365, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4509:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "hexValue": "30", + "id": 366, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4516:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 367, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4508:10:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 361, + "id": 368, + "nodeType": "Return", + "src": "4501:17:0" + } + }, + { + "expression": { + "components": [ + { + "hexValue": "74727565", + "id": 370, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4536:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 371, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 353, + "src": "4542:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "id": 372, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 355, + "src": "4546:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4542:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 374, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4535:13:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 361, + "id": 375, + "nodeType": "Return", + "src": "4528:20:0" + } + ] + }, + "documentation": { + "id": 351, + "nodeType": "StructuredDocumentation", + "src": "4222:148:0", + "text": " @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n _Available since v3.4._" + }, + "id": 377, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryMod", + "nameLocation": "4384:6:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 356, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 353, + "mutability": "mutable", + "name": "a", + "nameLocation": "4399:1:0", + "nodeType": "VariableDeclaration", + "scope": 377, + "src": "4391:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 352, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4391:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 355, + "mutability": "mutable", + "name": "b", + "nameLocation": "4410:1:0", + "nodeType": "VariableDeclaration", + "scope": 377, + "src": "4402:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 354, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4402:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4390:22:0" + }, + "returnParameters": { + "id": 361, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 358, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 377, + "src": "4460:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 357, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4460:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 360, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 377, + "src": "4466:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 359, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4466:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4459:15:0" + }, + "scope": 576, + "src": "4375:180:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 402, + "nodeType": "Block", + "src": "4857:108:0", + "statements": [ + { + "assignments": [ + 388 + ], + "declarations": [ + { + "constant": false, + "id": 388, + "mutability": "mutable", + "name": "c", + "nameLocation": "4875:1:0", + "nodeType": "VariableDeclaration", + "scope": 402, + "src": "4867:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 387, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4867:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 392, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 389, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 380, + "src": "4879:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 390, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 382, + "src": "4883:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4879:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4867:17:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 394, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 388, + "src": "4902:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 395, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 380, + "src": "4907:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4902:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "536166654d6174683a206164646974696f6e206f766572666c6f77", + "id": 397, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4910:29:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a", + "typeString": "literal_string \"SafeMath: addition overflow\"" + }, + "value": "SafeMath: addition overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a", + "typeString": "literal_string \"SafeMath: addition overflow\"" + } + ], + "id": 393, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "4894:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4894:46:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 399, + "nodeType": "ExpressionStatement", + "src": "4894:46:0" + }, + { + "expression": { + "id": 400, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 388, + "src": "4957:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 386, + "id": 401, + "nodeType": "Return", + "src": "4950:8:0" + } + ] + }, + "documentation": { + "id": 378, + "nodeType": "StructuredDocumentation", + "src": "4561:224:0", + "text": " @dev Returns the addition of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow." + }, + "id": 403, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nameLocation": "4799:3:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 383, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 380, + "mutability": "mutable", + "name": "a", + "nameLocation": "4811:1:0", + "nodeType": "VariableDeclaration", + "scope": 403, + "src": "4803:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 379, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4803:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 382, + "mutability": "mutable", + "name": "b", + "nameLocation": "4822:1:0", + "nodeType": "VariableDeclaration", + "scope": 403, + "src": "4814:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 381, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4814:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4802:22:0" + }, + "returnParameters": { + "id": 386, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 385, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 403, + "src": "4848:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 384, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4848:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4847:9:0" + }, + "scope": 576, + "src": "4790:175:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 424, + "nodeType": "Block", + "src": "5303:88:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 414, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 408, + "src": "5321:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 415, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 406, + "src": "5326:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5321:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "536166654d6174683a207375627472616374696f6e206f766572666c6f77", + "id": 417, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5329:32:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862", + "typeString": "literal_string \"SafeMath: subtraction overflow\"" + }, + "value": "SafeMath: subtraction overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862", + "typeString": "literal_string \"SafeMath: subtraction overflow\"" + } + ], + "id": 413, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "5313:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5313:49:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 419, + "nodeType": "ExpressionStatement", + "src": "5313:49:0" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 420, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 406, + "src": "5379:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 421, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 408, + "src": "5383:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5379:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 412, + "id": 423, + "nodeType": "Return", + "src": "5372:12:0" + } + ] + }, + "documentation": { + "id": 404, + "nodeType": "StructuredDocumentation", + "src": "4971:260:0", + "text": " @dev Returns the subtraction of two unsigned integers, reverting on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow." + }, + "id": 425, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nameLocation": "5245:3:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 409, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 406, + "mutability": "mutable", + "name": "a", + "nameLocation": "5257:1:0", + "nodeType": "VariableDeclaration", + "scope": 425, + "src": "5249:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 405, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5249:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 408, + "mutability": "mutable", + "name": "b", + "nameLocation": "5268:1:0", + "nodeType": "VariableDeclaration", + "scope": 425, + "src": "5260:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 407, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5260:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5248:22:0" + }, + "returnParameters": { + "id": 412, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 411, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 425, + "src": "5294:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 410, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5294:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5293:9:0" + }, + "scope": 576, + "src": "5236:155:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 458, + "nodeType": "Block", + "src": "5705:148:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 435, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 428, + "src": "5719:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 436, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5724:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5719:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 440, + "nodeType": "IfStatement", + "src": "5715:20:0", + "trueBody": { + "expression": { + "hexValue": "30", + "id": 438, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5734:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 434, + "id": 439, + "nodeType": "Return", + "src": "5727:8:0" + } + }, + { + "assignments": [ + 442 + ], + "declarations": [ + { + "constant": false, + "id": 442, + "mutability": "mutable", + "name": "c", + "nameLocation": "5753:1:0", + "nodeType": "VariableDeclaration", + "scope": 458, + "src": "5745:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 441, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5745:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 446, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 445, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 443, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 428, + "src": "5757:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 444, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 430, + "src": "5761:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5757:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5745:17:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 448, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 442, + "src": "5780:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 449, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 428, + "src": "5784:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5780:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 451, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 430, + "src": "5789:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5780:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77", + "id": 453, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5792:35:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3", + "typeString": "literal_string \"SafeMath: multiplication overflow\"" + }, + "value": "SafeMath: multiplication overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3", + "typeString": "literal_string \"SafeMath: multiplication overflow\"" + } + ], + "id": 447, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "5772:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5772:56:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 455, + "nodeType": "ExpressionStatement", + "src": "5772:56:0" + }, + { + "expression": { + "id": 456, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 442, + "src": "5845:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 434, + "id": 457, + "nodeType": "Return", + "src": "5838:8:0" + } + ] + }, + "documentation": { + "id": 426, + "nodeType": "StructuredDocumentation", + "src": "5397:236:0", + "text": " @dev Returns the multiplication of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `*` operator.\n Requirements:\n - Multiplication cannot overflow." + }, + "id": 459, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mul", + "nameLocation": "5647:3:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 431, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 428, + "mutability": "mutable", + "name": "a", + "nameLocation": "5659:1:0", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "5651:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 427, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5651:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 430, + "mutability": "mutable", + "name": "b", + "nameLocation": "5670:1:0", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "5662:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 429, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5662:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5650:22:0" + }, + "returnParameters": { + "id": 434, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 433, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "5696:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 432, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5696:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5695:9:0" + }, + "scope": 576, + "src": "5638:215:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 480, + "nodeType": "Block", + "src": "6384:83:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 470, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "6402:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 471, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6406:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6402:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "536166654d6174683a206469766973696f6e206279207a65726f", + "id": 473, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6409:28:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f", + "typeString": "literal_string \"SafeMath: division by zero\"" + }, + "value": "SafeMath: division by zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f", + "typeString": "literal_string \"SafeMath: division by zero\"" + } + ], + "id": 469, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "6394:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6394:44:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 475, + "nodeType": "ExpressionStatement", + "src": "6394:44:0" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 476, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 462, + "src": "6455:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 477, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "6459:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6455:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 468, + "id": 479, + "nodeType": "Return", + "src": "6448:12:0" + } + ] + }, + "documentation": { + "id": 460, + "nodeType": "StructuredDocumentation", + "src": "5859:453:0", + "text": " @dev Returns the integer division of two unsigned integers, reverting on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." + }, + "id": 481, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "div", + "nameLocation": "6326:3:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 465, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 462, + "mutability": "mutable", + "name": "a", + "nameLocation": "6338:1:0", + "nodeType": "VariableDeclaration", + "scope": 481, + "src": "6330:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 461, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6330:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 464, + "mutability": "mutable", + "name": "b", + "nameLocation": "6349:1:0", + "nodeType": "VariableDeclaration", + "scope": 481, + "src": "6341:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 463, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6341:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6329:22:0" + }, + "returnParameters": { + "id": 468, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 467, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 481, + "src": "6375:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 466, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6375:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6374:9:0" + }, + "scope": 576, + "src": "6317:150:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 502, + "nodeType": "Block", + "src": "6987:81:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 492, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 486, + "src": "7005:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 493, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7009:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7005:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "536166654d6174683a206d6f64756c6f206279207a65726f", + "id": 495, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7012:26:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832", + "typeString": "literal_string \"SafeMath: modulo by zero\"" + }, + "value": "SafeMath: modulo by zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832", + "typeString": "literal_string \"SafeMath: modulo by zero\"" + } + ], + "id": 491, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "6997:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 496, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6997:42:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 497, + "nodeType": "ExpressionStatement", + "src": "6997:42:0" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 498, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 484, + "src": "7056:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "id": 499, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 486, + "src": "7060:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7056:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 490, + "id": 501, + "nodeType": "Return", + "src": "7049:12:0" + } + ] + }, + "documentation": { + "id": 482, + "nodeType": "StructuredDocumentation", + "src": "6473:442:0", + "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n reverting when dividing by zero.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." + }, + "id": 503, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mod", + "nameLocation": "6929:3:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 487, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 484, + "mutability": "mutable", + "name": "a", + "nameLocation": "6941:1:0", + "nodeType": "VariableDeclaration", + "scope": 503, + "src": "6933:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 483, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6933:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 486, + "mutability": "mutable", + "name": "b", + "nameLocation": "6952:1:0", + "nodeType": "VariableDeclaration", + "scope": 503, + "src": "6944:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 485, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6944:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6932:22:0" + }, + "returnParameters": { + "id": 490, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 489, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 503, + "src": "6978:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 488, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6978:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6977:9:0" + }, + "scope": 576, + "src": "6920:148:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 526, + "nodeType": "Block", + "src": "7657:68:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 516, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 508, + "src": "7675:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 517, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 506, + "src": "7680:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7675:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 519, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 510, + "src": "7683:12:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 515, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "7667:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7667:29:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 521, + "nodeType": "ExpressionStatement", + "src": "7667:29:0" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 522, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 506, + "src": "7713:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 523, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 508, + "src": "7717:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7713:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 514, + "id": 525, + "nodeType": "Return", + "src": "7706:12:0" + } + ] + }, + "documentation": { + "id": 504, + "nodeType": "StructuredDocumentation", + "src": "7074:453:0", + "text": " @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n overflow (when the result is negative).\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {trySub}.\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow." + }, + "id": 527, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nameLocation": "7541:3:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 511, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 506, + "mutability": "mutable", + "name": "a", + "nameLocation": "7562:1:0", + "nodeType": "VariableDeclaration", + "scope": 527, + "src": "7554:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 505, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7554:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 508, + "mutability": "mutable", + "name": "b", + "nameLocation": "7581:1:0", + "nodeType": "VariableDeclaration", + "scope": 527, + "src": "7573:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 507, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7573:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 510, + "mutability": "mutable", + "name": "errorMessage", + "nameLocation": "7606:12:0", + "nodeType": "VariableDeclaration", + "scope": 527, + "src": "7592:26:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 509, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "7592:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "7544:80:0" + }, + "returnParameters": { + "id": 514, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 513, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 527, + "src": "7648:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 512, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7648:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7647:9:0" + }, + "scope": 576, + "src": "7532:193:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 550, + "nodeType": "Block", + "src": "8507:67:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 540, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 532, + "src": "8525:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 541, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8529:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8525:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 543, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 534, + "src": "8532:12:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 539, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "8517:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8517:28:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 545, + "nodeType": "ExpressionStatement", + "src": "8517:28:0" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 546, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "8562:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 547, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 532, + "src": "8566:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8562:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 538, + "id": 549, + "nodeType": "Return", + "src": "8555:12:0" + } + ] + }, + "documentation": { + "id": 528, + "nodeType": "StructuredDocumentation", + "src": "7731:646:0", + "text": " @dev Returns the integer division of two unsigned integers, reverting with custom message on\n division by zero. The result is rounded towards zero.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryDiv}.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." + }, + "id": 551, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "div", + "nameLocation": "8391:3:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 535, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 530, + "mutability": "mutable", + "name": "a", + "nameLocation": "8412:1:0", + "nodeType": "VariableDeclaration", + "scope": 551, + "src": "8404:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 529, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8404:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 532, + "mutability": "mutable", + "name": "b", + "nameLocation": "8431:1:0", + "nodeType": "VariableDeclaration", + "scope": 551, + "src": "8423:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 531, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8423:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 534, + "mutability": "mutable", + "name": "errorMessage", + "nameLocation": "8456:12:0", + "nodeType": "VariableDeclaration", + "scope": 551, + "src": "8442:26:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 533, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "8442:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "8394:80:0" + }, + "returnParameters": { + "id": 538, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 537, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 551, + "src": "8498:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 536, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8498:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8497:9:0" + }, + "scope": 576, + "src": "8382:192:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 574, + "nodeType": "Block", + "src": "9345:67:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 564, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "9363:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 565, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9367:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9363:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 567, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 558, + "src": "9370:12:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 563, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "9355:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9355:28:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 569, + "nodeType": "ExpressionStatement", + "src": "9355:28:0" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 570, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 554, + "src": "9400:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "id": 571, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "9404:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9400:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 562, + "id": 573, + "nodeType": "Return", + "src": "9393:12:0" + } + ] + }, + "documentation": { + "id": 552, + "nodeType": "StructuredDocumentation", + "src": "8580:635:0", + "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n reverting with custom message when dividing by zero.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryMod}.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." + }, + "id": 575, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mod", + "nameLocation": "9229:3:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 559, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 554, + "mutability": "mutable", + "name": "a", + "nameLocation": "9250:1:0", + "nodeType": "VariableDeclaration", + "scope": 575, + "src": "9242:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 553, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9242:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 556, + "mutability": "mutable", + "name": "b", + "nameLocation": "9269:1:0", + "nodeType": "VariableDeclaration", + "scope": 575, + "src": "9261:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 555, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9261:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 558, + "mutability": "mutable", + "name": "errorMessage", + "nameLocation": "9294:12:0", + "nodeType": "VariableDeclaration", + "scope": 575, + "src": "9280:26:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 557, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "9280:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "9232:80:0" + }, + "returnParameters": { + "id": 562, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 561, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 575, + "src": "9336:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 560, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9336:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9335:9:0" + }, + "scope": 576, + "src": "9220:192:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 1700, + "src": "2590:6824:0", + "usedErrors": [] + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "DividendPayingTokenOptionalInterface", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 601, + "linearizedBaseContracts": [ + 601 + ], + "name": "DividendPayingTokenOptionalInterface", + "nameLocation": "9426:36:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 577, + "nodeType": "StructuredDocumentation", + "src": "9469:203:0", + "text": "@notice View the amount of dividend in wei that an address can withdraw.\n @param _owner The address of a token holder.\n @return The amount of dividend in wei that `_owner` can withdraw." + }, + "functionSelector": "a8b9d240", + "id": 584, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "withdrawableDividendOf", + "nameLocation": "9686:22:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 580, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 579, + "mutability": "mutable", + "name": "_owner", + "nameLocation": "9717:6:0", + "nodeType": "VariableDeclaration", + "scope": 584, + "src": "9709:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 578, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9709:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "9708:16:0" + }, + "returnParameters": { + "id": 583, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 582, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 584, + "src": "9772:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 581, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9772:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9771:9:0" + }, + "scope": 601, + "src": "9677:104:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 585, + "nodeType": "StructuredDocumentation", + "src": "9787:205:0", + "text": "@notice View the amount of dividend in wei that an address has withdrawn.\n @param _owner The address of a token holder.\n @return The amount of dividend in wei that `_owner` has withdrawn." + }, + "functionSelector": "aafd847a", + "id": 592, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "withdrawnDividendOf", + "nameLocation": "10006:19:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 588, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 587, + "mutability": "mutable", + "name": "_owner", + "nameLocation": "10034:6:0", + "nodeType": "VariableDeclaration", + "scope": 592, + "src": "10026:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 586, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10026:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "10025:16:0" + }, + "returnParameters": { + "id": 591, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 590, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 592, + "src": "10089:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 589, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10089:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10088:9:0" + }, + "scope": 601, + "src": "9997:101:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 593, + "nodeType": "StructuredDocumentation", + "src": "10104:324:0", + "text": "@notice View the amount of dividend in wei that an address has earned in total.\n @dev accumulativeDividendOf(_owner) = withdrawableDividendOf(_owner) + withdrawnDividendOf(_owner)\n @param _owner The address of a token holder.\n @return The amount of dividend in wei that `_owner` has earned in total." + }, + "functionSelector": "27ce0147", + "id": 600, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "accumulativeDividendOf", + "nameLocation": "10442:22:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 596, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 595, + "mutability": "mutable", + "name": "_owner", + "nameLocation": "10473:6:0", + "nodeType": "VariableDeclaration", + "scope": 600, + "src": "10465:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 594, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10465:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "10464:16:0" + }, + "returnParameters": { + "id": 599, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 598, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 600, + "src": "10528:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 597, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10528:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10527:9:0" + }, + "scope": 601, + "src": "10433:104:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 1700, + "src": "9416:1123:0", + "usedErrors": [] + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "DividendPayingTokenInterface", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 602, + "nodeType": "StructuredDocumentation", + "src": "10541:154:0", + "text": "@title Dividend-Paying Token Interface\n @author Roger Wu (https://github.com/roger-wu)\n @dev An interface for a dividend-paying token contract." + }, + "fullyImplemented": false, + "id": 629, + "linearizedBaseContracts": [ + 629 + ], + "name": "DividendPayingTokenInterface", + "nameLocation": "10705:28:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 603, + "nodeType": "StructuredDocumentation", + "src": "10740:203:0", + "text": "@notice View the amount of dividend in wei that an address can withdraw.\n @param _owner The address of a token holder.\n @return The amount of dividend in wei that `_owner` can withdraw." + }, + "functionSelector": "91b89fba", + "id": 610, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "dividendOf", + "nameLocation": "10957:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 606, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 605, + "mutability": "mutable", + "name": "_owner", + "nameLocation": "10976:6:0", + "nodeType": "VariableDeclaration", + "scope": 610, + "src": "10968:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 604, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10968:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "10967:16:0" + }, + "returnParameters": { + "id": 609, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 608, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 610, + "src": "11007:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 607, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11007:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11006:9:0" + }, + "scope": 629, + "src": "10948:68:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 611, + "nodeType": "StructuredDocumentation", + "src": "11022:295:0", + "text": "@notice Withdraws the ether distributed to the sender.\n @dev SHOULD transfer `dividendOf(msg.sender)` wei to `msg.sender`, and `dividendOf(msg.sender)` SHOULD be 0 after the transfer.\n MUST emit a `DividendWithdrawn` event if the amount of ether transferred is greater than 0." + }, + "functionSelector": "6a474002", + "id": 614, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "withdrawDividend", + "nameLocation": "11331:16:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 612, + "nodeType": "ParameterList", + "parameters": [], + "src": "11347:2:0" + }, + "returnParameters": { + "id": 613, + "nodeType": "ParameterList", + "parameters": [], + "src": "11358:0:0" + }, + "scope": 629, + "src": "11322:37:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": { + "id": 615, + "nodeType": "StructuredDocumentation", + "src": "11365:206:0", + "text": "@dev This event MUST emit when ether is distributed to token holders.\n @param from The address which sends ether to this contract.\n @param weiAmount The amount of distributed ether in wei." + }, + "eventSelector": "a493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d78454116511", + "id": 621, + "name": "DividendsDistributed", + "nameLocation": "11582:20:0", + "nodeType": "EventDefinition", + "parameters": { + "id": 620, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 617, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "11619:4:0", + "nodeType": "VariableDeclaration", + "scope": 621, + "src": "11603:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 616, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11603:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 619, + "indexed": false, + "mutability": "mutable", + "name": "weiAmount", + "nameLocation": "11633:9:0", + "nodeType": "VariableDeclaration", + "scope": 621, + "src": "11625:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 618, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11625:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11602:41:0" + }, + "src": "11576:68:0" + }, + { + "anonymous": false, + "documentation": { + "id": 622, + "nodeType": "StructuredDocumentation", + "src": "11650:206:0", + "text": "@dev This event MUST emit when an address withdraws their dividend.\n @param to The address which withdraws ether from this contract.\n @param weiAmount The amount of withdrawn ether in wei." + }, + "eventSelector": "ee503bee2bb6a87e57bc57db795f98137327401a0e7b7ce42e37926cc1a9ca4d", + "id": 628, + "name": "DividendWithdrawn", + "nameLocation": "11867:17:0", + "nodeType": "EventDefinition", + "parameters": { + "id": 627, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 624, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "11901:2:0", + "nodeType": "VariableDeclaration", + "scope": 628, + "src": "11885:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 623, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11885:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 626, + "indexed": false, + "mutability": "mutable", + "name": "weiAmount", + "nameLocation": "11913:9:0", + "nodeType": "VariableDeclaration", + "scope": 628, + "src": "11905:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 625, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11905:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11884:39:0" + }, + "src": "11861:63:0" + } + ], + "scope": 1700, + "src": "10695:1231:0", + "usedErrors": [] + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 630, + "name": "ERC20", + "nameLocations": [ + "11964:5:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2632, + "src": "11964:5:0" + }, + "id": 631, + "nodeType": "InheritanceSpecifier", + "src": "11964:5:0" + }, + { + "baseName": { + "id": 632, + "name": "Ownable", + "nameLocations": [ + "11975:7:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2045, + "src": "11975:7:0" + }, + "id": 633, + "nodeType": "InheritanceSpecifier", + "src": "11975:7:0" + }, + { + "baseName": { + "id": 634, + "name": "DividendPayingTokenInterface", + "nameLocations": [ + "11988:28:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 629, + "src": "11988:28:0" + }, + "id": 635, + "nodeType": "InheritanceSpecifier", + "src": "11988:28:0" + }, + { + "baseName": { + "id": 636, + "name": "DividendPayingTokenOptionalInterface", + "nameLocations": [ + "12022:36:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 601, + "src": "12022:36:0" + }, + "id": 637, + "nodeType": "InheritanceSpecifier", + "src": "12022:36:0" + } + ], + "canonicalName": "DividendPayingToken", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 1050, + "linearizedBaseContracts": [ + 1050, + 601, + 629, + 2045, + 2632, + 2735, + 2710, + 2757 + ], + "name": "DividendPayingToken", + "nameLocation": "11937:19:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 640, + "libraryName": { + "id": 638, + "name": "SafeMath", + "nameLocations": [ + "12071:8:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 576, + "src": "12071:8:0" + }, + "nodeType": "UsingForDirective", + "src": "12065:27:0", + "typeName": { + "id": 639, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12084:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "global": false, + "id": 643, + "libraryName": { + "id": 641, + "name": "SafeMathUint", + "nameLocations": [ + "12103:12:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 223, + "src": "12103:12:0" + }, + "nodeType": "UsingForDirective", + "src": "12097:31:0", + "typeName": { + "id": 642, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12120:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "global": false, + "id": 646, + "libraryName": { + "id": 644, + "name": "SafeMathInt", + "nameLocations": [ + "12139:11:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 198, + "src": "12139:11:0" + }, + "nodeType": "UsingForDirective", + "src": "12133:29:0", + "typeName": { + "id": 645, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "12155:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + }, + { + "constant": false, + "functionSelector": "d1af0c7d", + "id": 648, + "mutability": "mutable", + "name": "rewardsToken", + "nameLocation": "12183:12:0", + "nodeType": "VariableDeclaration", + "scope": 1050, + "src": "12168:27:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 647, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12168:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": true, + "id": 653, + "mutability": "constant", + "name": "magnitude", + "nameLocation": "12228:9:0", + "nodeType": "VariableDeclaration", + "scope": 1050, + "src": "12202:44:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 649, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12202:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "commonType": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1456" + }, + "id": 652, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 650, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12240:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "313238", + "id": 651, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12243:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "12240:6:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1456" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 655, + "mutability": "mutable", + "name": "magnifiedDividendPerShare", + "nameLocation": "12270:25:0", + "nodeType": "VariableDeclaration", + "scope": 1050, + "src": "12253:42:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 654, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12253:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 659, + "mutability": "mutable", + "name": "magnifiedDividendCorrections", + "nameLocation": "12338:28:0", + "nodeType": "VariableDeclaration", + "scope": 1050, + "src": "12302:64:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_int256_$", + "typeString": "mapping(address => int256)" + }, + "typeName": { + "id": 658, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 656, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12310:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "12302:26:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_int256_$", + "typeString": "mapping(address => int256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 657, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "12321:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 663, + "mutability": "mutable", + "name": "withdrawnDividends", + "nameLocation": "12409:18:0", + "nodeType": "VariableDeclaration", + "scope": 1050, + "src": "12372:55:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 662, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 660, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12380:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "12372:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 661, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12391:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "functionSelector": "85a6b3ae", + "id": 665, + "mutability": "mutable", + "name": "totalDividendsDistributed", + "nameLocation": "12449:25:0", + "nodeType": "VariableDeclaration", + "scope": 1050, + "src": "12434:40:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 664, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12434:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "body": { + "id": 682, + "nodeType": "Block", + "src": "12594:45:0", + "statements": [ + { + "expression": { + "id": 680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 678, + "name": "rewardsToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 648, + "src": "12604:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 679, + "name": "_rewardsToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 671, + "src": "12619:13:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "12604:28:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 681, + "nodeType": "ExpressionStatement", + "src": "12604:28:0" + } + ] + }, + "id": 683, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "id": 674, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 667, + "src": "12574:5:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 675, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 669, + "src": "12581:7:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 676, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 673, + "name": "ERC20", + "nameLocations": [ + "12568:5:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2632, + "src": "12568:5:0" + }, + "nodeType": "ModifierInvocation", + "src": "12568:21:0" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 672, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 667, + "mutability": "mutable", + "name": "_name", + "nameLocation": "12507:5:0", + "nodeType": "VariableDeclaration", + "scope": 683, + "src": "12493:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 666, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "12493:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 669, + "mutability": "mutable", + "name": "_symbol", + "nameLocation": "12528:7:0", + "nodeType": "VariableDeclaration", + "scope": 683, + "src": "12514:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 668, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "12514:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 671, + "mutability": "mutable", + "name": "_rewardsToken", + "nameLocation": "12545:13:0", + "nodeType": "VariableDeclaration", + "scope": 683, + "src": "12537:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 670, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12537:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "12492:67:0" + }, + "returnParameters": { + "id": 677, + "nodeType": "ParameterList", + "parameters": [], + "src": "12594:0:0" + }, + "scope": 1050, + "src": "12481:158:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 729, + "nodeType": "Block", + "src": "12709:361:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 691, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2130, + "src": "12727:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12727:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 693, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12743:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "12727:17:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 690, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "12719:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 695, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12719:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 696, + "nodeType": "ExpressionStatement", + "src": "12719:26:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 697, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "12760:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 698, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12769:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "12760:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 728, + "nodeType": "IfStatement", + "src": "12756:308:0", + "trueBody": { + "id": 727, + "nodeType": "Block", + "src": "12772:292:0", + "statements": [ + { + "expression": { + "id": 712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 700, + "name": "magnifiedDividendPerShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 655, + "src": "12786:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 706, + "name": "magnitude", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 653, + "src": "12874:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "components": [ + { + "id": 703, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "12862:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 704, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12861:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12870:3:0", + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 459, + "src": "12861:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 707, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12861:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 708, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2130, + "src": "12887:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12887:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12861:39:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 701, + "name": "magnifiedDividendPerShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 655, + "src": "12814:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12840:3:0", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 403, + "src": "12814:29:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12814:100:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12786:128:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 713, + "nodeType": "ExpressionStatement", + "src": "12786:128:0" + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "id": 715, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "12954:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12958:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "12954:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 717, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "12966:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 714, + "name": "DividendsDistributed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 621, + "src": "12933:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12933:40:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 719, + "nodeType": "EmitStatement", + "src": "12928:45:0" + }, + { + "expression": { + "id": 725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 720, + "name": "totalDividendsDistributed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 665, + "src": "12988:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 723, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 685, + "src": "13046:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 721, + "name": "totalDividendsDistributed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 665, + "src": "13016:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13042:3:0", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 403, + "src": "13016:29:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13016:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12988:65:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 726, + "nodeType": "ExpressionStatement", + "src": "12988:65:0" + } + ] + } + } + ] + }, + "functionSelector": "3243c791", + "id": 730, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 688, + "kind": "modifierInvocation", + "modifierName": { + "id": 687, + "name": "onlyOwner", + "nameLocations": [ + "12699:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1964, + "src": "12699:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "12699:9:0" + } + ], + "name": "distributeDividends", + "nameLocation": "12654:19:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 686, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 685, + "mutability": "mutable", + "name": "amount", + "nameLocation": "12682:6:0", + "nodeType": "VariableDeclaration", + "scope": 730, + "src": "12674:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 684, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12674:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12673:16:0" + }, + "returnParameters": { + "id": 689, + "nodeType": "ParameterList", + "parameters": [], + "src": "12709:0:0" + }, + "scope": 1050, + "src": "12645:425:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 614 + ], + "body": { + "id": 743, + "nodeType": "Block", + "src": "13293:61:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 738, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "13335:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13339:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "13335:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 737, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13327:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 736, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13327:8:0", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13327:19:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 735, + "name": "_withdrawDividendOfUser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 811, + "src": "13303:23:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$returns$_t_uint256_$", + "typeString": "function (address payable) returns (uint256)" + } + }, + "id": 741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13303:44:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 742, + "nodeType": "ExpressionStatement", + "src": "13303:44:0" + } + ] + }, + "documentation": { + "id": 731, + "nodeType": "StructuredDocumentation", + "src": "13076:160:0", + "text": "@notice Withdraws the ether distributed to the sender.\n @dev It emits a `DividendWithdrawn` event if the amount of withdrawn ether is greater than 0." + }, + "functionSelector": "6a474002", + "id": 744, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawDividend", + "nameLocation": "13250:16:0", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 733, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "13284:8:0" + }, + "parameters": { + "id": 732, + "nodeType": "ParameterList", + "parameters": [], + "src": "13266:2:0" + }, + "returnParameters": { + "id": 734, + "nodeType": "ParameterList", + "parameters": [], + "src": "13293:0:0" + }, + "scope": 1050, + "src": "13241:113:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 810, + "nodeType": "Block", + "src": "13627:713:0", + "statements": [ + { + "assignments": [ + 753 + ], + "declarations": [ + { + "constant": false, + "id": 753, + "mutability": "mutable", + "name": "_withdrawableDividend", + "nameLocation": "13645:21:0", + "nodeType": "VariableDeclaration", + "scope": 810, + "src": "13637:29:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 752, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13637:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 757, + "initialValue": { + "arguments": [ + { + "id": 755, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 747, + "src": "13692:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 754, + "name": "withdrawableDividendOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "13669:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13669:28:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13637:60:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 758, + "name": "_withdrawableDividend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 753, + "src": "13711:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 759, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13735:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "13711:25:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 807, + "nodeType": "IfStatement", + "src": "13707:608:0", + "trueBody": { + "id": 806, + "nodeType": "Block", + "src": "13738:577:0", + "statements": [ + { + "expression": { + "id": 770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 761, + "name": "withdrawnDividends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 663, + "src": "13752:18:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 763, + "indexExpression": { + "id": 762, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 747, + "src": "13771:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "13752:24:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 768, + "name": "_withdrawableDividend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 753, + "src": "13825:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "id": 764, + "name": "withdrawnDividends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 663, + "src": "13779:18:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 766, + "indexExpression": { + "id": 765, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 747, + "src": "13798:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13779:24:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 767, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13804:3:0", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 403, + "src": "13779:28:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13779:81:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13752:108:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 771, + "nodeType": "ExpressionStatement", + "src": "13752:108:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 773, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 747, + "src": "13897:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 774, + "name": "_withdrawableDividend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 753, + "src": "13903:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 772, + "name": "DividendWithdrawn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 628, + "src": "13879:17:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13879:46:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 776, + "nodeType": "EmitStatement", + "src": "13874:51:0" + }, + { + "assignments": [ + 778 + ], + "declarations": [ + { + "constant": false, + "id": 778, + "mutability": "mutable", + "name": "success", + "nameLocation": "13944:7:0", + "nodeType": "VariableDeclaration", + "scope": 806, + "src": "13939:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 777, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13939:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 786, + "initialValue": { + "arguments": [ + { + "id": 783, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 747, + "src": "14001:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 784, + "name": "_withdrawableDividend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 753, + "src": "14023:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 780, + "name": "rewardsToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 648, + "src": "13961:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 779, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2710, + "src": "13954:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$2710_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13954:20:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$2710", + "typeString": "contract IERC20" + } + }, + "id": 782, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13975:8:0", + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 2677, + "src": "13954:29:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13954:104:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13939:119:0" + }, + { + "condition": { + "id": 788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "14077:8:0", + "subExpression": { + "id": 787, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 778, + "src": "14078:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 803, + "nodeType": "IfStatement", + "src": "14073:189:0", + "trueBody": { + "id": 802, + "nodeType": "Block", + "src": "14087:175:0", + "statements": [ + { + "expression": { + "id": 798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 789, + "name": "withdrawnDividends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 663, + "src": "14105:18:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 791, + "indexExpression": { + "id": 790, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 747, + "src": "14124:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "14105:24:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 796, + "name": "_withdrawableDividend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 753, + "src": "14182:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "id": 792, + "name": "withdrawnDividends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 663, + "src": "14132:18:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 794, + "indexExpression": { + "id": 793, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 747, + "src": "14151:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14132:24:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14157:3:0", + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 425, + "src": "14132:28:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14132:89:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14105:116:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 799, + "nodeType": "ExpressionStatement", + "src": "14105:116:0" + }, + { + "expression": { + "hexValue": "30", + "id": 800, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14246:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 751, + "id": 801, + "nodeType": "Return", + "src": "14239:8:0" + } + ] + } + }, + { + "expression": { + "id": 804, + "name": "_withdrawableDividend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 753, + "src": "14283:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 751, + "id": 805, + "nodeType": "Return", + "src": "14276:28:0" + } + ] + } + }, + { + "expression": { + "hexValue": "30", + "id": 808, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14332:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 751, + "id": 809, + "nodeType": "Return", + "src": "14325:8:0" + } + ] + }, + "documentation": { + "id": 745, + "nodeType": "StructuredDocumentation", + "src": "13360:160:0", + "text": "@notice Withdraws the ether distributed to the sender.\n @dev It emits a `DividendWithdrawn` event if the amount of withdrawn ether is greater than 0." + }, + "id": 811, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_withdrawDividendOfUser", + "nameLocation": "13534:23:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 748, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 747, + "mutability": "mutable", + "name": "user", + "nameLocation": "13574:4:0", + "nodeType": "VariableDeclaration", + "scope": 811, + "src": "13558:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 746, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13558:15:0", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + } + ], + "src": "13557:22:0" + }, + "returnParameters": { + "id": 751, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 750, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 811, + "src": "13614:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 749, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13614:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13613:9:0" + }, + "scope": 1050, + "src": "13525:815:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 610 + ], + "body": { + "id": 824, + "nodeType": "Block", + "src": "14629:54:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 821, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 814, + "src": "14669:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 820, + "name": "withdrawableDividendOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "14646:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14646:30:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 819, + "id": 823, + "nodeType": "Return", + "src": "14639:37:0" + } + ] + }, + "documentation": { + "id": 812, + "nodeType": "StructuredDocumentation", + "src": "14346:203:0", + "text": "@notice View the amount of dividend in wei that an address can withdraw.\n @param _owner The address of a token holder.\n @return The amount of dividend in wei that `_owner` can withdraw." + }, + "functionSelector": "91b89fba", + "id": 825, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "dividendOf", + "nameLocation": "14563:10:0", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 816, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "14602:8:0" + }, + "parameters": { + "id": 815, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 814, + "mutability": "mutable", + "name": "_owner", + "nameLocation": "14582:6:0", + "nodeType": "VariableDeclaration", + "scope": 825, + "src": "14574:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 813, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14574:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "14573:16:0" + }, + "returnParameters": { + "id": 819, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 818, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 825, + "src": "14620:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 817, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14620:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14619:9:0" + }, + "scope": 1050, + "src": "14554:129:0", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 584 + ], + "body": { + "id": 843, + "nodeType": "Block", + "src": "15020:86:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 838, + "name": "withdrawnDividends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 663, + "src": "15072:18:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 840, + "indexExpression": { + "id": 839, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 828, + "src": "15091:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15072:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 835, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 828, + "src": "15060:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 834, + "name": "accumulativeDividendOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 886, + "src": "15037:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15037:30:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 837, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15068:3:0", + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 425, + "src": "15037:34:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15037:62:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 833, + "id": 842, + "nodeType": "Return", + "src": "15030:69:0" + } + ] + }, + "documentation": { + "id": 826, + "nodeType": "StructuredDocumentation", + "src": "14689:203:0", + "text": "@notice View the amount of dividend in wei that an address can withdraw.\n @param _owner The address of a token holder.\n @return The amount of dividend in wei that `_owner` can withdraw." + }, + "functionSelector": "a8b9d240", + "id": 844, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawableDividendOf", + "nameLocation": "14906:22:0", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 830, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "14981:8:0" + }, + "parameters": { + "id": 829, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 828, + "mutability": "mutable", + "name": "_owner", + "nameLocation": "14937:6:0", + "nodeType": "VariableDeclaration", + "scope": 844, + "src": "14929:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 827, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14929:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "14928:16:0" + }, + "returnParameters": { + "id": 833, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 832, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 844, + "src": "15007:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 831, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15007:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15006:9:0" + }, + "scope": 1050, + "src": "14897:209:0", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 592 + ], + "body": { + "id": 857, + "nodeType": "Block", + "src": "15442:50:0", + "statements": [ + { + "expression": { + "baseExpression": { + "id": 853, + "name": "withdrawnDividends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 663, + "src": "15459:18:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 855, + "indexExpression": { + "id": 854, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 847, + "src": "15478:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15459:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 852, + "id": 856, + "nodeType": "Return", + "src": "15452:33:0" + } + ] + }, + "documentation": { + "id": 845, + "nodeType": "StructuredDocumentation", + "src": "15112:205:0", + "text": "@notice View the amount of dividend in wei that an address has withdrawn.\n @param _owner The address of a token holder.\n @return The amount of dividend in wei that `_owner` has withdrawn." + }, + "functionSelector": "aafd847a", + "id": 858, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawnDividendOf", + "nameLocation": "15331:19:0", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 849, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "15403:8:0" + }, + "parameters": { + "id": 848, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 847, + "mutability": "mutable", + "name": "_owner", + "nameLocation": "15359:6:0", + "nodeType": "VariableDeclaration", + "scope": 858, + "src": "15351:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 846, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15351:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "15350:16:0" + }, + "returnParameters": { + "id": 852, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 851, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 858, + "src": "15429:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 850, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15429:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15428:9:0" + }, + "scope": 1050, + "src": "15322:170:0", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 600 + ], + "body": { + "id": 885, + "nodeType": "Block", + "src": "16059:237:0", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 883, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 876, + "name": "magnifiedDividendCorrections", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 659, + "src": "16207:28:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_int256_$", + "typeString": "mapping(address => int256)" + } + }, + "id": 878, + "indexExpression": { + "id": 877, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 861, + "src": "16236:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16207:36:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 870, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 861, + "src": "16145:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 869, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2144, + "src": "16135:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16135:17:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 867, + "name": "magnifiedDividendPerShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 655, + "src": "16088:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16131:3:0", + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 459, + "src": "16088:46:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16088:65:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16171:12:0", + "memberName": "toInt256Safe", + "nodeType": "MemberAccess", + "referencedDeclaration": 222, + "src": "16088:95:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (int256)" + } + }, + "id": 874, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16088:97:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16203:3:0", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 178, + "src": "16088:118:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$attached_to$_t_int256_$", + "typeString": "function (int256,int256) pure returns (int256)" + } + }, + "id": 879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16088:156:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 880, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16262:13:0", + "memberName": "toUint256Safe", + "nodeType": "MemberAccess", + "referencedDeclaration": 197, + "src": "16088:187:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_uint256_$attached_to$_t_int256_$", + "typeString": "function (int256) pure returns (uint256)" + } + }, + "id": 881, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16088:189:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 882, + "name": "magnitude", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 653, + "src": "16280:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16088:201:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 866, + "id": 884, + "nodeType": "Return", + "src": "16069:220:0" + } + ] + }, + "documentation": { + "id": 859, + "nodeType": "StructuredDocumentation", + "src": "15498:433:0", + "text": "@notice View the amount of dividend in wei that an address has earned in total.\n @dev accumulativeDividendOf(_owner) = withdrawableDividendOf(_owner) + withdrawnDividendOf(_owner)\n = (magnifiedDividendPerShare * balanceOf(_owner) + magnifiedDividendCorrections[_owner]) / magnitude\n @param _owner The address of a token holder.\n @return The amount of dividend in wei that `_owner` has earned in total." + }, + "functionSelector": "27ce0147", + "id": 886, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "accumulativeDividendOf", + "nameLocation": "15945:22:0", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 863, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "16020:8:0" + }, + "parameters": { + "id": 862, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 861, + "mutability": "mutable", + "name": "_owner", + "nameLocation": "15976:6:0", + "nodeType": "VariableDeclaration", + "scope": 886, + "src": "15968:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 860, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15968:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "15967:16:0" + }, + "returnParameters": { + "id": 866, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 865, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 886, + "src": "16046:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 864, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16046:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "16045:9:0" + }, + "scope": 1050, + "src": "15936:360:0", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 2392 + ], + "body": { + "id": 932, + "nodeType": "Block", + "src": "16719:376:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "66616c7365", + "id": 898, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16737:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 897, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "16729:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16729:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 900, + "nodeType": "ExpressionStatement", + "src": "16729:14:0" + }, + { + "assignments": [ + 902 + ], + "declarations": [ + { + "constant": false, + "id": 902, + "mutability": "mutable", + "name": "_magCorrection", + "nameLocation": "16761:14:0", + "nodeType": "VariableDeclaration", + "scope": 932, + "src": "16754:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 901, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "16754:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "id": 909, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 905, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 893, + "src": "16821:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 903, + "name": "magnifiedDividendPerShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 655, + "src": "16778:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16817:3:0", + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 459, + "src": "16778:42:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16778:49:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 907, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16841:12:0", + "memberName": "toInt256Safe", + "nodeType": "MemberAccess", + "referencedDeclaration": 222, + "src": "16778:75:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (int256)" + } + }, + "id": 908, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16778:77:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16754:101:0" + }, + { + "expression": { + "id": 919, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 910, + "name": "magnifiedDividendCorrections", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 659, + "src": "16865:28:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_int256_$", + "typeString": "mapping(address => int256)" + } + }, + "id": 912, + "indexExpression": { + "id": 911, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 889, + "src": "16894:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "16865:34:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 917, + "name": "_magCorrection", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 902, + "src": "16954:14:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "expression": { + "baseExpression": { + "id": 913, + "name": "magnifiedDividendCorrections", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 659, + "src": "16902:28:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_int256_$", + "typeString": "mapping(address => int256)" + } + }, + "id": 915, + "indexExpression": { + "id": 914, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 889, + "src": "16931:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16902:34:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 916, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16950:3:0", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 178, + "src": "16902:51:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$attached_to$_t_int256_$", + "typeString": "function (int256,int256) pure returns (int256)" + } + }, + "id": 918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16902:67:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "16865:104:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 920, + "nodeType": "ExpressionStatement", + "src": "16865:104:0" + }, + { + "expression": { + "id": 930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 921, + "name": "magnifiedDividendCorrections", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 659, + "src": "16979:28:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_int256_$", + "typeString": "mapping(address => int256)" + } + }, + "id": 923, + "indexExpression": { + "id": 922, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 891, + "src": "17008:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "16979:32:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 928, + "name": "_magCorrection", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 902, + "src": "17064:14:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "expression": { + "baseExpression": { + "id": 924, + "name": "magnifiedDividendCorrections", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 659, + "src": "17014:28:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_int256_$", + "typeString": "mapping(address => int256)" + } + }, + "id": 926, + "indexExpression": { + "id": 925, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 891, + "src": "17043:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17014:32:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17047:3:0", + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 140, + "src": "17014:36:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$attached_to$_t_int256_$", + "typeString": "function (int256,int256) pure returns (int256)" + } + }, + "id": 929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17014:74:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "16979:109:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 931, + "nodeType": "ExpressionStatement", + "src": "16979:109:0" + } + ] + }, + "documentation": { + "id": 887, + "nodeType": "StructuredDocumentation", + "src": "16302:296:0", + "text": "@dev Internal function that transfer tokens from one address to another.\n Update magnifiedDividendCorrections to keep dividends unchanged.\n @param from The address to transfer from.\n @param to The address to transfer to.\n @param value The amount to be transferred." + }, + "id": 933, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nameLocation": "16612:9:0", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 895, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "16710:8:0" + }, + "parameters": { + "id": 894, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 889, + "mutability": "mutable", + "name": "from", + "nameLocation": "16639:4:0", + "nodeType": "VariableDeclaration", + "scope": 933, + "src": "16631:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 888, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16631:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 891, + "mutability": "mutable", + "name": "to", + "nameLocation": "16661:2:0", + "nodeType": "VariableDeclaration", + "scope": 933, + "src": "16653:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 890, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16653:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 893, + "mutability": "mutable", + "name": "value", + "nameLocation": "16681:5:0", + "nodeType": "VariableDeclaration", + "scope": 933, + "src": "16673:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 892, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16673:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "16621:71:0" + }, + "returnParameters": { + "id": 896, + "nodeType": "ParameterList", + "parameters": [], + "src": "16719:0:0" + }, + "scope": 1050, + "src": "16603:492:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 2449 + ], + "body": { + "id": 966, + "nodeType": "Block", + "src": "17430:213:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 945, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 936, + "src": "17452:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 946, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 938, + "src": "17461:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 942, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967271, + "src": "17440:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_DividendPayingToken_$1050_$", + "typeString": "type(contract super DividendPayingToken)" + } + }, + "id": 944, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17446:5:0", + "memberName": "_mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 2449, + "src": "17440:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17440:27:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 948, + "nodeType": "ExpressionStatement", + "src": "17440:27:0" + }, + { + "expression": { + "id": 964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 949, + "name": "magnifiedDividendCorrections", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 659, + "src": "17478:28:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_int256_$", + "typeString": "mapping(address => int256)" + } + }, + "id": 951, + "indexExpression": { + "id": 950, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 936, + "src": "17507:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "17478:37:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "components": [ + { + "arguments": [ + { + "id": 958, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 938, + "src": "17613:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 956, + "name": "magnifiedDividendPerShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 655, + "src": "17583:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 957, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17609:3:0", + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 459, + "src": "17583:29:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 959, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17583:36:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 960, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "17582:38:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 961, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17621:12:0", + "memberName": "toInt256Safe", + "nodeType": "MemberAccess", + "referencedDeclaration": 222, + "src": "17582:51:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (int256)" + } + }, + "id": 962, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17582:53:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "expression": { + "baseExpression": { + "id": 952, + "name": "magnifiedDividendCorrections", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 659, + "src": "17518:28:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_int256_$", + "typeString": "mapping(address => int256)" + } + }, + "id": 954, + "indexExpression": { + "id": 953, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 936, + "src": "17560:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17518:59:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17578:3:0", + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 140, + "src": "17518:63:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$attached_to$_t_int256_$", + "typeString": "function (int256,int256) pure returns (int256)" + } + }, + "id": 963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17518:118:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "17478:158:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 965, + "nodeType": "ExpressionStatement", + "src": "17478:158:0" + } + ] + }, + "documentation": { + "id": 934, + "nodeType": "StructuredDocumentation", + "src": "17101:259:0", + "text": "@dev Internal function that mints tokens to an account.\n Update magnifiedDividendCorrections to keep dividends unchanged.\n @param account The account that will receive the created tokens.\n @param value The amount that will be created." + }, + "id": 967, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nameLocation": "17374:5:0", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 940, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "17421:8:0" + }, + "parameters": { + "id": 939, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 936, + "mutability": "mutable", + "name": "account", + "nameLocation": "17388:7:0", + "nodeType": "VariableDeclaration", + "scope": 967, + "src": "17380:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 935, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17380:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 938, + "mutability": "mutable", + "name": "value", + "nameLocation": "17405:5:0", + "nodeType": "VariableDeclaration", + "scope": 967, + "src": "17397:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 937, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17397:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "17379:32:0" + }, + "returnParameters": { + "id": 941, + "nodeType": "ParameterList", + "parameters": [], + "src": "17430:0:0" + }, + "scope": 1050, + "src": "17365:278:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 2521 + ], + "body": { + "id": 1000, + "nodeType": "Block", + "src": "17987:213:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 979, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 970, + "src": "18009:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 980, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 972, + "src": "18018:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 976, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967271, + "src": "17997:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_DividendPayingToken_$1050_$", + "typeString": "type(contract super DividendPayingToken)" + } + }, + "id": 978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18003:5:0", + "memberName": "_burn", + "nodeType": "MemberAccess", + "referencedDeclaration": 2521, + "src": "17997:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17997:27:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 982, + "nodeType": "ExpressionStatement", + "src": "17997:27:0" + }, + { + "expression": { + "id": 998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 983, + "name": "magnifiedDividendCorrections", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 659, + "src": "18035:28:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_int256_$", + "typeString": "mapping(address => int256)" + } + }, + "id": 985, + "indexExpression": { + "id": 984, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 970, + "src": "18064:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "18035:37:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "components": [ + { + "arguments": [ + { + "id": 992, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 972, + "src": "18170:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 990, + "name": "magnifiedDividendPerShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 655, + "src": "18140:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18166:3:0", + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 459, + "src": "18140:29:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18140:36:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 994, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "18139:38:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 995, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18178:12:0", + "memberName": "toInt256Safe", + "nodeType": "MemberAccess", + "referencedDeclaration": 222, + "src": "18139:51:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (int256)" + } + }, + "id": 996, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18139:53:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "expression": { + "baseExpression": { + "id": 986, + "name": "magnifiedDividendCorrections", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 659, + "src": "18075:28:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_int256_$", + "typeString": "mapping(address => int256)" + } + }, + "id": 988, + "indexExpression": { + "id": 987, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 970, + "src": "18117:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18075:59:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18135:3:0", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 178, + "src": "18075:63:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$attached_to$_t_int256_$", + "typeString": "function (int256,int256) pure returns (int256)" + } + }, + "id": 997, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18075:118:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "18035:158:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 999, + "nodeType": "ExpressionStatement", + "src": "18035:158:0" + } + ] + }, + "documentation": { + "id": 968, + "nodeType": "StructuredDocumentation", + "src": "17649:268:0", + "text": "@dev Internal function that burns an amount of the token of a given account.\n Update magnifiedDividendCorrections to keep dividends unchanged.\n @param account The account whose tokens will be burnt.\n @param value The amount that will be burnt." + }, + "id": 1001, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nameLocation": "17931:5:0", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 974, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "17978:8:0" + }, + "parameters": { + "id": 973, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 970, + "mutability": "mutable", + "name": "account", + "nameLocation": "17945:7:0", + "nodeType": "VariableDeclaration", + "scope": 1001, + "src": "17937:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 969, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17937:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 972, + "mutability": "mutable", + "name": "value", + "nameLocation": "17962:5:0", + "nodeType": "VariableDeclaration", + "scope": 1001, + "src": "17954:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 971, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17954:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "17936:32:0" + }, + "returnParameters": { + "id": 975, + "nodeType": "ParameterList", + "parameters": [], + "src": "17987:0:0" + }, + "scope": 1050, + "src": "17922:278:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1048, + "nodeType": "Block", + "src": "18273:374:0", + "statements": [ + { + "assignments": [ + 1009 + ], + "declarations": [ + { + "constant": false, + "id": 1009, + "mutability": "mutable", + "name": "currentBalance", + "nameLocation": "18291:14:0", + "nodeType": "VariableDeclaration", + "scope": 1048, + "src": "18283:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1008, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18283:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1013, + "initialValue": { + "arguments": [ + { + "id": 1011, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1003, + "src": "18318:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1010, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2144, + "src": "18308:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 1012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18308:18:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18283:43:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1014, + "name": "newBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1005, + "src": "18341:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 1015, + "name": "currentBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1009, + "src": "18354:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18341:27:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1030, + "name": "newBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1005, + "src": "18496:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 1031, + "name": "currentBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1009, + "src": "18509:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18496:27:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1046, + "nodeType": "IfStatement", + "src": "18492:149:0", + "trueBody": { + "id": 1045, + "nodeType": "Block", + "src": "18525:116:0", + "statements": [ + { + "assignments": [ + 1034 + ], + "declarations": [ + { + "constant": false, + "id": 1034, + "mutability": "mutable", + "name": "burnAmount", + "nameLocation": "18547:10:0", + "nodeType": "VariableDeclaration", + "scope": 1045, + "src": "18539:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1033, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18539:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1039, + "initialValue": { + "arguments": [ + { + "id": 1037, + "name": "newBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1005, + "src": "18579:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 1035, + "name": "currentBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1009, + "src": "18560:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1036, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18575:3:0", + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 425, + "src": "18560:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1038, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18560:30:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18539:51:0" + }, + { + "expression": { + "arguments": [ + { + "id": 1041, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1003, + "src": "18610:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1042, + "name": "burnAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1034, + "src": "18619:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1040, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1001 + ], + "referencedDeclaration": 1001, + "src": "18604:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18604:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1044, + "nodeType": "ExpressionStatement", + "src": "18604:26:0" + } + ] + } + }, + "id": 1047, + "nodeType": "IfStatement", + "src": "18337:304:0", + "trueBody": { + "id": 1029, + "nodeType": "Block", + "src": "18370:116:0", + "statements": [ + { + "assignments": [ + 1018 + ], + "declarations": [ + { + "constant": false, + "id": 1018, + "mutability": "mutable", + "name": "mintAmount", + "nameLocation": "18392:10:0", + "nodeType": "VariableDeclaration", + "scope": 1029, + "src": "18384:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1017, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18384:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1023, + "initialValue": { + "arguments": [ + { + "id": 1021, + "name": "currentBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1009, + "src": "18420:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 1019, + "name": "newBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1005, + "src": "18405:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18416:3:0", + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 425, + "src": "18405:14:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18405:30:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18384:51:0" + }, + { + "expression": { + "arguments": [ + { + "id": 1025, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1003, + "src": "18455:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1026, + "name": "mintAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1018, + "src": "18464:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1024, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 967 + ], + "referencedDeclaration": 967, + "src": "18449:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18449:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1028, + "nodeType": "ExpressionStatement", + "src": "18449:26:0" + } + ] + } + } + ] + }, + "id": 1049, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setBalance", + "nameLocation": "18215:11:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1006, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1003, + "mutability": "mutable", + "name": "account", + "nameLocation": "18235:7:0", + "nodeType": "VariableDeclaration", + "scope": 1049, + "src": "18227:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1002, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18227:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1005, + "mutability": "mutable", + "name": "newBalance", + "nameLocation": "18252:10:0", + "nodeType": "VariableDeclaration", + "scope": 1049, + "src": "18244:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1004, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18244:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "18226:37:0" + }, + "returnParameters": { + "id": 1007, + "nodeType": "ParameterList", + "parameters": [], + "src": "18273:0:0" + }, + "scope": 1050, + "src": "18206:441:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 1700, + "src": "11928:6721:0", + "usedErrors": [] + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IDividendPayingToken", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 1081, + "linearizedBaseContracts": [ + 1081 + ], + "name": "IDividendPayingToken", + "nameLocation": "18809:20:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 1051, + "nodeType": "StructuredDocumentation", + "src": "18836:203:0", + "text": "@notice View the amount of dividend in wei that an address can withdraw.\n @param _owner The address of a token holder.\n @return The amount of dividend in wei that `_owner` can withdraw." + }, + "functionSelector": "91b89fba", + "id": 1058, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "dividendOf", + "nameLocation": "19053:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1054, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1053, + "mutability": "mutable", + "name": "_owner", + "nameLocation": "19072:6:0", + "nodeType": "VariableDeclaration", + "scope": 1058, + "src": "19064:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1052, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19064:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "19063:16:0" + }, + "returnParameters": { + "id": 1057, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1056, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1058, + "src": "19103:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1055, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19103:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "19102:9:0" + }, + "scope": 1081, + "src": "19044:68:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1059, + "nodeType": "StructuredDocumentation", + "src": "19118:322:0", + "text": "@notice Distributes ether to token holders as dividends.\n @dev SHOULD distribute the paid ether to token holders as dividends.\n SHOULD NOT directly transfer ether to token holders in this function.\n MUST emit a `DividendsDistributed` event when the amount of distributed ether is greater than 0." + }, + "functionSelector": "03c83302", + "id": 1062, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "distributeDividends", + "nameLocation": "19454:19:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1060, + "nodeType": "ParameterList", + "parameters": [], + "src": "19473:2:0" + }, + "returnParameters": { + "id": 1061, + "nodeType": "ParameterList", + "parameters": [], + "src": "19492:0:0" + }, + "scope": 1081, + "src": "19445:48:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1063, + "nodeType": "StructuredDocumentation", + "src": "19499:295:0", + "text": "@notice Withdraws the ether distributed to the sender.\n @dev SHOULD transfer `dividendOf(msg.sender)` wei to `msg.sender`, and `dividendOf(msg.sender)` SHOULD be 0 after the transfer.\n MUST emit a `DividendWithdrawn` event if the amount of ether transferred is greater than 0." + }, + "functionSelector": "6a474002", + "id": 1066, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "withdrawDividend", + "nameLocation": "19808:16:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1064, + "nodeType": "ParameterList", + "parameters": [], + "src": "19824:2:0" + }, + "returnParameters": { + "id": 1065, + "nodeType": "ParameterList", + "parameters": [], + "src": "19835:0:0" + }, + "scope": 1081, + "src": "19799:37:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": { + "id": 1067, + "nodeType": "StructuredDocumentation", + "src": "19842:206:0", + "text": "@dev This event MUST emit when ether is distributed to token holders.\n @param from The address which sends ether to this contract.\n @param weiAmount The amount of distributed ether in wei." + }, + "eventSelector": "a493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d78454116511", + "id": 1073, + "name": "DividendsDistributed", + "nameLocation": "20059:20:0", + "nodeType": "EventDefinition", + "parameters": { + "id": 1072, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1069, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "20096:4:0", + "nodeType": "VariableDeclaration", + "scope": 1073, + "src": "20080:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1068, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20080:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1071, + "indexed": false, + "mutability": "mutable", + "name": "weiAmount", + "nameLocation": "20110:9:0", + "nodeType": "VariableDeclaration", + "scope": 1073, + "src": "20102:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1070, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20102:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "20079:41:0" + }, + "src": "20053:68:0" + }, + { + "anonymous": false, + "documentation": { + "id": 1074, + "nodeType": "StructuredDocumentation", + "src": "20127:206:0", + "text": "@dev This event MUST emit when an address withdraws their dividend.\n @param to The address which withdraws ether from this contract.\n @param weiAmount The amount of withdrawn ether in wei." + }, + "eventSelector": "ee503bee2bb6a87e57bc57db795f98137327401a0e7b7ce42e37926cc1a9ca4d", + "id": 1080, + "name": "DividendWithdrawn", + "nameLocation": "20344:17:0", + "nodeType": "EventDefinition", + "parameters": { + "id": 1079, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1076, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "20378:2:0", + "nodeType": "VariableDeclaration", + "scope": 1080, + "src": "20362:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1075, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20362:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1078, + "indexed": false, + "mutability": "mutable", + "name": "weiAmount", + "nameLocation": "20390:9:0", + "nodeType": "VariableDeclaration", + "scope": 1080, + "src": "20382:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1077, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20382:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "20361:39:0" + }, + "src": "20338:63:0" + } + ], + "scope": 1700, + "src": "18799:1604:0", + "usedErrors": [] + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 1082, + "name": "Ownable", + "nameLocations": [ + "20433:7:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2045, + "src": "20433:7:0" + }, + "id": 1083, + "nodeType": "InheritanceSpecifier", + "src": "20433:7:0" + }, + { + "baseName": { + "id": 1084, + "name": "DividendPayingToken", + "nameLocations": [ + "20442:19:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1050, + "src": "20442:19:0" + }, + "id": 1085, + "nodeType": "InheritanceSpecifier", + "src": "20442:19:0" + } + ], + "canonicalName": "DividendTracker", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 1699, + "linearizedBaseContracts": [ + 1699, + 1050, + 601, + 629, + 2045, + 2632, + 2735, + 2710, + 2757 + ], + "name": "DividendTracker", + "nameLocation": "20414:15:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 1088, + "libraryName": { + "id": 1086, + "name": "SafeMath", + "nameLocations": [ + "20474:8:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 576, + "src": "20474:8:0" + }, + "nodeType": "UsingForDirective", + "src": "20468:27:0", + "typeName": { + "id": 1087, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20487:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "global": false, + "id": 1091, + "libraryName": { + "id": 1089, + "name": "SafeMathInt", + "nameLocations": [ + "20506:11:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 198, + "src": "20506:11:0" + }, + "nodeType": "UsingForDirective", + "src": "20500:29:0", + "typeName": { + "id": 1090, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "20522:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + }, + { + "global": false, + "id": 1095, + "libraryName": { + "id": 1092, + "name": "IterableMapping", + "nameLocations": [ + "20540:15:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1932, + "src": "20540:15:0" + }, + "nodeType": "UsingForDirective", + "src": "20534:46:0", + "typeName": { + "id": 1094, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1093, + "name": "IterableMapping.Map", + "nameLocations": [ + "20560:15:0", + "20576:3:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1717, + "src": "20560:19:0" + }, + "referencedDeclaration": 1717, + "src": "20560:19:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1717_storage_ptr", + "typeString": "struct IterableMapping.Map" + } + } + }, + { + "constant": false, + "id": 1098, + "mutability": "mutable", + "name": "tokenHoldersMap", + "nameLocation": "20614:15:0", + "nodeType": "VariableDeclaration", + "scope": 1699, + "src": "20586:43:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1717_storage", + "typeString": "struct IterableMapping.Map" + }, + "typeName": { + "id": 1097, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1096, + "name": "IterableMapping.Map", + "nameLocations": [ + "20586:15:0", + "20602:3:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1717, + "src": "20586:19:0" + }, + "referencedDeclaration": 1717, + "src": "20586:19:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1717_storage_ptr", + "typeString": "struct IterableMapping.Map" + } + }, + "visibility": "private" + }, + { + "constant": false, + "functionSelector": "3009a609", + "id": 1100, + "mutability": "mutable", + "name": "lastProcessedIndex", + "nameLocation": "20650:18:0", + "nodeType": "VariableDeclaration", + "scope": 1699, + "src": "20635:33:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1099, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20635:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "4e7b827f", + "id": 1104, + "mutability": "mutable", + "name": "excludedFromDividends", + "nameLocation": "20707:21:0", + "nodeType": "VariableDeclaration", + "scope": 1699, + "src": "20675:53:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 1103, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 1101, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20683:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "20675:24:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 1102, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "20694:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "226cfa3d", + "id": 1108, + "mutability": "mutable", + "name": "lastClaimTimes", + "nameLocation": "20770:14:0", + "nodeType": "VariableDeclaration", + "scope": 1699, + "src": "20735:49:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 1107, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 1105, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20743:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "20735:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 1106, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20754:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "6f2789ec", + "id": 1110, + "mutability": "mutable", + "name": "claimWait", + "nameLocation": "20806:9:0", + "nodeType": "VariableDeclaration", + "scope": 1699, + "src": "20791:24:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1109, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20791:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "be10b614", + "id": 1112, + "mutability": "mutable", + "name": "minimumTokenBalanceForDividends", + "nameLocation": "20836:31:0", + "nodeType": "VariableDeclaration", + "scope": 1699, + "src": "20821:46:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1111, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20821:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "anonymous": false, + "eventSelector": "a878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b25", + "id": 1116, + "name": "ExcludeFromDividends", + "nameLocation": "20880:20:0", + "nodeType": "EventDefinition", + "parameters": { + "id": 1115, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1114, + "indexed": true, + "mutability": "mutable", + "name": "account", + "nameLocation": "20917:7:0", + "nodeType": "VariableDeclaration", + "scope": 1116, + "src": "20901:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1113, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20901:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "20900:25:0" + }, + "src": "20874:52:0" + }, + { + "anonymous": false, + "eventSelector": "474ea64804364a1e29a4487ddb63c3342a2dd826ccd8acf48825e680a0e6f20f", + "id": 1122, + "name": "ClaimWaitUpdated", + "nameLocation": "20937:16:0", + "nodeType": "EventDefinition", + "parameters": { + "id": 1121, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1118, + "indexed": true, + "mutability": "mutable", + "name": "newValue", + "nameLocation": "20970:8:0", + "nodeType": "VariableDeclaration", + "scope": 1122, + "src": "20954:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1117, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20954:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1120, + "indexed": true, + "mutability": "mutable", + "name": "oldValue", + "nameLocation": "20996:8:0", + "nodeType": "VariableDeclaration", + "scope": 1122, + "src": "20980:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1119, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20980:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "20953:52:0" + }, + "src": "20931:75:0" + }, + { + "anonymous": false, + "eventSelector": "a2c38e2d2fb7e3e1912d937fd1ca11ed6d51864dee4cfa7a7bf02becd7acf092", + "id": 1130, + "name": "Claim", + "nameLocation": "21018:5:0", + "nodeType": "EventDefinition", + "parameters": { + "id": 1129, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1124, + "indexed": true, + "mutability": "mutable", + "name": "account", + "nameLocation": "21049:7:0", + "nodeType": "VariableDeclaration", + "scope": 1130, + "src": "21033:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1123, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21033:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1126, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "21074:6:0", + "nodeType": "VariableDeclaration", + "scope": 1130, + "src": "21066:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1125, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21066:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1128, + "indexed": true, + "mutability": "mutable", + "name": "automatic", + "nameLocation": "21103:9:0", + "nodeType": "VariableDeclaration", + "scope": 1130, + "src": "21090:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1127, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "21090:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "21023:95:0" + }, + "src": "21012:107:0" + }, + { + "body": { + "id": 1150, + "nodeType": "Block", + "src": "21285:110:0", + "statements": [ + { + "expression": { + "id": 1144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1142, + "name": "claimWait", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1110, + "src": "21295:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "33363030", + "id": 1143, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21307:4:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_3600_by_1", + "typeString": "int_const 3600" + }, + "value": "3600" + }, + "src": "21295:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1145, + "nodeType": "ExpressionStatement", + "src": "21295:16:0" + }, + { + "expression": { + "id": 1148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1146, + "name": "minimumTokenBalanceForDividends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1112, + "src": "21321:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1147, + "name": "_minimumTokenBalanceForDividends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1134, + "src": "21355:32:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21321:66:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1149, + "nodeType": "ExpressionStatement", + "src": "21321:66:0" + } + ] + }, + "id": 1151, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "hexValue": "4469766964656e5f547261636b6572", + "id": 1137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21229:17:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f595325c0d82d110c9ef7a3e5b80cd2ab97547f4ea79a397a8b3890a799f7244", + "typeString": "literal_string \"Dividen_Tracker\"" + }, + "value": "Dividen_Tracker" + }, + { + "hexValue": "4469766964656e5f547261636b6572", + "id": 1138, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21248:17:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f595325c0d82d110c9ef7a3e5b80cd2ab97547f4ea79a397a8b3890a799f7244", + "typeString": "literal_string \"Dividen_Tracker\"" + }, + "value": "Dividen_Tracker" + }, + { + "id": 1139, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1132, + "src": "21267:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 1140, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 1136, + "name": "DividendPayingToken", + "nameLocations": [ + "21209:19:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1050, + "src": "21209:19:0" + }, + "nodeType": "ModifierInvocation", + "src": "21209:71:0" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1135, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1132, + "mutability": "mutable", + "name": "tokenAddress", + "nameLocation": "21145:12:0", + "nodeType": "VariableDeclaration", + "scope": 1151, + "src": "21137:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1131, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21137:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1134, + "mutability": "mutable", + "name": "_minimumTokenBalanceForDividends", + "nameLocation": "21167:32:0", + "nodeType": "VariableDeclaration", + "scope": 1151, + "src": "21159:40:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1133, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21159:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "21136:64:0" + }, + "returnParameters": { + "id": 1141, + "nodeType": "ParameterList", + "parameters": [], + "src": "21285:0:0" + }, + "scope": 1699, + "src": "21125:270:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 933 + ], + "body": { + "id": 1166, + "nodeType": "Block", + "src": "21500:73:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "66616c7365", + "id": 1162, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21518:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "hexValue": "4469766964656e645f547261636b65723a204e6f207472616e736665727320616c6c6f776564", + "id": 1163, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21525:40:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_994b44feaa80ea24bf008223ad680e033e77151fcbd9d709591ea01b6e41d91f", + "typeString": "literal_string \"Dividend_Tracker: No transfers allowed\"" + }, + "value": "Dividend_Tracker: No transfers allowed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_994b44feaa80ea24bf008223ad680e033e77151fcbd9d709591ea01b6e41d91f", + "typeString": "literal_string \"Dividend_Tracker: No transfers allowed\"" + } + ], + "id": 1161, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "21510:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21510:56:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1165, + "nodeType": "ExpressionStatement", + "src": "21510:56:0" + } + ] + }, + "id": 1167, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nameLocation": "21410:9:0", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1159, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "21491:8:0" + }, + "parameters": { + "id": 1158, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1153, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1167, + "src": "21429:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1152, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21429:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1155, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1167, + "src": "21446:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1154, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21446:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1157, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1167, + "src": "21463:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1156, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21463:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "21419:57:0" + }, + "returnParameters": { + "id": 1160, + "nodeType": "ParameterList", + "parameters": [], + "src": "21500:0:0" + }, + "scope": 1699, + "src": "21401:172:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 744 + ], + "body": { + "id": 1176, + "nodeType": "Block", + "src": "21628:177:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "66616c7365", + "id": 1172, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21659:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "hexValue": "4469766964656e645f547261636b65723a2077697468647261774469766964656e642064697361626c65642e20557365207468652027636c61696d272066756e6374696f6e206f6e20746865206d61696e204469766964656e645f547261636b657220636f6e74726163742e", + "id": 1173, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21678:110:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7a0b0d3ac6b0be7826a1e5e9a21e94767b3cdfe3e5c41cbd6099a91a9421507f", + "typeString": "literal_string \"Dividend_Tracker: withdrawDividend disabled. Use the 'claim' function on the main Dividend_Tracker contract.\"" + }, + "value": "Dividend_Tracker: withdrawDividend disabled. Use the 'claim' function on the main Dividend_Tracker contract." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7a0b0d3ac6b0be7826a1e5e9a21e94767b3cdfe3e5c41cbd6099a91a9421507f", + "typeString": "literal_string \"Dividend_Tracker: withdrawDividend disabled. Use the 'claim' function on the main Dividend_Tracker contract.\"" + } + ], + "id": 1171, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "21638:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21638:160:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1175, + "nodeType": "ExpressionStatement", + "src": "21638:160:0" + } + ] + }, + "functionSelector": "6a474002", + "id": 1177, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawDividend", + "nameLocation": "21588:16:0", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1169, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "21619:8:0" + }, + "parameters": { + "id": 1168, + "nodeType": "ParameterList", + "parameters": [], + "src": "21604:2:0" + }, + "returnParameters": { + "id": 1170, + "nodeType": "ParameterList", + "parameters": [], + "src": "21628:0:0" + }, + "scope": 1699, + "src": "21579:226:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1212, + "nodeType": "Block", + "src": "21877:224:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "21895:31:0", + "subExpression": { + "baseExpression": { + "id": 1185, + "name": "excludedFromDividends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1104, + "src": "21896:21:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1187, + "indexExpression": { + "id": 1186, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1179, + "src": "21918:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21896:30:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1184, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "21887:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21887:40:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1190, + "nodeType": "ExpressionStatement", + "src": "21887:40:0" + }, + { + "expression": { + "id": 1195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1191, + "name": "excludedFromDividends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1104, + "src": "21937:21:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1193, + "indexExpression": { + "id": 1192, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1179, + "src": "21959:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "21937:30:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 1194, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21970:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "21937:37:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1196, + "nodeType": "ExpressionStatement", + "src": "21937:37:0" + }, + { + "expression": { + "arguments": [ + { + "id": 1198, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1179, + "src": "21997:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "30", + "id": 1199, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22006:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1197, + "name": "_setBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1049, + "src": "21985:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21985:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1201, + "nodeType": "ExpressionStatement", + "src": "21985:23:0" + }, + { + "expression": { + "arguments": [ + { + "id": 1205, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1179, + "src": "22041:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 1202, + "name": "tokenHoldersMap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "22018:15:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1717_storage", + "typeString": "struct IterableMapping.Map storage ref" + } + }, + "id": 1204, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22034:6:0", + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 1931, + "src": "22018:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Map_$1717_storage_ptr_$_t_address_$returns$__$attached_to$_t_struct$_Map_$1717_storage_ptr_$", + "typeString": "function (struct IterableMapping.Map storage pointer,address)" + } + }, + "id": 1206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22018:31:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1207, + "nodeType": "ExpressionStatement", + "src": "22018:31:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 1209, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1179, + "src": "22086:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1208, + "name": "ExcludeFromDividends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1116, + "src": "22065:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22065:29:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1211, + "nodeType": "EmitStatement", + "src": "22060:34:0" + } + ] + }, + "functionSelector": "31e79db0", + "id": 1213, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1182, + "kind": "modifierInvocation", + "modifierName": { + "id": 1181, + "name": "onlyOwner", + "nameLocations": [ + "21867:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1964, + "src": "21867:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "21867:9:0" + } + ], + "name": "excludeFromDividends", + "nameLocation": "21820:20:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1180, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1179, + "mutability": "mutable", + "name": "account", + "nameLocation": "21849:7:0", + "nodeType": "VariableDeclaration", + "scope": 1213, + "src": "21841:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1178, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21841:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "21840:17:0" + }, + "returnParameters": { + "id": 1183, + "nodeType": "ParameterList", + "parameters": [], + "src": "21877:0:0" + }, + "scope": 1699, + "src": "21811:290:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1247, + "nodeType": "Block", + "src": "22173:405:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1221, + "name": "newClaimWait", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1215, + "src": "22204:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "hexValue": "33363030", + "id": 1222, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22220:4:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_3600_by_1", + "typeString": "int_const 3600" + }, + "value": "3600" + }, + "src": "22204:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1224, + "name": "newClaimWait", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1215, + "src": "22228:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "hexValue": "3836343030", + "id": 1225, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22244:5:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_86400_by_1", + "typeString": "int_const 86400" + }, + "value": "86400" + }, + "src": "22228:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "22204:45:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4469766964656e645f547261636b65723a20636c61696d57616974206d757374206265207570646174656420746f206265747765656e203120616e6420323420686f757273", + "id": 1228, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22263:71:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_81d027c19a577ba20b9d8a30fb22b9c83223eb3caf44ec0846f01a784fa7fa8e", + "typeString": "literal_string \"Dividend_Tracker: claimWait must be updated to between 1 and 24 hours\"" + }, + "value": "Dividend_Tracker: claimWait must be updated to between 1 and 24 hours" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_81d027c19a577ba20b9d8a30fb22b9c83223eb3caf44ec0846f01a784fa7fa8e", + "typeString": "literal_string \"Dividend_Tracker: claimWait must be updated to between 1 and 24 hours\"" + } + ], + "id": 1220, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "22183:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22183:161:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1230, + "nodeType": "ExpressionStatement", + "src": "22183:161:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1232, + "name": "newClaimWait", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1215, + "src": "22375:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 1233, + "name": "claimWait", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1110, + "src": "22391:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22375:25:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4469766964656e645f547261636b65723a2043616e6e6f742075706461746520636c61696d5761697420746f2073616d652076616c7565", + "id": 1235, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22414:57:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d7e9938c058b89f37afd94804aa822b3924305411d7b8e9c6e554591c853129d", + "typeString": "literal_string \"Dividend_Tracker: Cannot update claimWait to same value\"" + }, + "value": "Dividend_Tracker: Cannot update claimWait to same value" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d7e9938c058b89f37afd94804aa822b3924305411d7b8e9c6e554591c853129d", + "typeString": "literal_string \"Dividend_Tracker: Cannot update claimWait to same value\"" + } + ], + "id": 1231, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "22354:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22354:127:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1237, + "nodeType": "ExpressionStatement", + "src": "22354:127:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 1239, + "name": "newClaimWait", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1215, + "src": "22513:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1240, + "name": "claimWait", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1110, + "src": "22527:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1238, + "name": "ClaimWaitUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1122, + "src": "22496:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256)" + } + }, + "id": 1241, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22496:41:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1242, + "nodeType": "EmitStatement", + "src": "22491:46:0" + }, + { + "expression": { + "id": 1245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1243, + "name": "claimWait", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1110, + "src": "22547:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1244, + "name": "newClaimWait", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1215, + "src": "22559:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22547:24:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1246, + "nodeType": "ExpressionStatement", + "src": "22547:24:0" + } + ] + }, + "functionSelector": "e98030c7", + "id": 1248, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1218, + "kind": "modifierInvocation", + "modifierName": { + "id": 1217, + "name": "onlyOwner", + "nameLocations": [ + "22163:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1964, + "src": "22163:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "22163:9:0" + } + ], + "name": "updateClaimWait", + "nameLocation": "22116:15:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1216, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1215, + "mutability": "mutable", + "name": "newClaimWait", + "nameLocation": "22140:12:0", + "nodeType": "VariableDeclaration", + "scope": 1248, + "src": "22132:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1214, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22132:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "22131:22:0" + }, + "returnParameters": { + "id": 1219, + "nodeType": "ParameterList", + "parameters": [], + "src": "22173:0:0" + }, + "scope": 1699, + "src": "22107:471:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1255, + "nodeType": "Block", + "src": "22649:42:0", + "statements": [ + { + "expression": { + "id": 1253, + "name": "lastProcessedIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "22666:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1252, + "id": 1254, + "nodeType": "Return", + "src": "22659:25:0" + } + ] + }, + "functionSelector": "e7841ec0", + "id": 1256, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getLastProcessedIndex", + "nameLocation": "22593:21:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1249, + "nodeType": "ParameterList", + "parameters": [], + "src": "22614:2:0" + }, + "returnParameters": { + "id": 1252, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1251, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1256, + "src": "22640:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1250, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22640:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "22639:9:0" + }, + "scope": 1699, + "src": "22584:107:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1265, + "nodeType": "Block", + "src": "22764:51:0", + "statements": [ + { + "expression": { + "expression": { + "expression": { + "id": 1261, + "name": "tokenHoldersMap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "22781:15:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1717_storage", + "typeString": "struct IterableMapping.Map storage ref" + } + }, + "id": 1262, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22797:4:0", + "memberName": "keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 1704, + "src": "22781:20:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22802:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "22781:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1260, + "id": 1264, + "nodeType": "Return", + "src": "22774:34:0" + } + ] + }, + "functionSelector": "09bbedde", + "id": 1266, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getNumberOfTokenHolders", + "nameLocation": "22706:23:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1257, + "nodeType": "ParameterList", + "parameters": [], + "src": "22729:2:0" + }, + "returnParameters": { + "id": 1260, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1259, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1266, + "src": "22755:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1258, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22755:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "22754:9:0" + }, + "scope": 1699, + "src": "22697:118:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1397, + "nodeType": "Block", + "src": "23219:1118:0", + "statements": [ + { + "expression": { + "id": 1289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1287, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1271, + "src": "23229:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1288, + "name": "_account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1268, + "src": "23239:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "23229:18:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1290, + "nodeType": "ExpressionStatement", + "src": "23229:18:0" + }, + { + "expression": { + "id": 1296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1291, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1273, + "src": "23258:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1294, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1271, + "src": "23296:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 1292, + "name": "tokenHoldersMap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "23266:15:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1717_storage", + "typeString": "struct IterableMapping.Map storage ref" + } + }, + "id": 1293, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23282:13:0", + "memberName": "getIndexOfKey", + "nodeType": "MemberAccess", + "referencedDeclaration": 1762, + "src": "23266:29:0", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Map_$1717_storage_ptr_$_t_address_$returns$_t_int256_$attached_to$_t_struct$_Map_$1717_storage_ptr_$", + "typeString": "function (struct IterableMapping.Map storage pointer,address) view returns (int256)" + } + }, + "id": 1295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23266:38:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "23258:46:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 1297, + "nodeType": "ExpressionStatement", + "src": "23258:46:0" + }, + { + "expression": { + "id": 1301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1298, + "name": "iterationsUntilProcessed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1275, + "src": "23315:24:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1300, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "23342:2:0", + "subExpression": { + "hexValue": "31", + "id": 1299, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23343:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + }, + "src": "23315:29:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 1302, + "nodeType": "ExpressionStatement", + "src": "23315:29:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 1305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1303, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1273, + "src": "23359:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "hexValue": "30", + "id": 1304, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23368:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "23359:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1352, + "nodeType": "IfStatement", + "src": "23355:583:0", + "trueBody": { + "id": 1351, + "nodeType": "Block", + "src": "23371:567:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 1308, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1273, + "src": "23397:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 1307, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "23389:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 1306, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23389:7:0", + "typeDescriptions": {} + } + }, + "id": 1309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23389:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 1310, + "name": "lastProcessedIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "23406:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23389:35:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1349, + "nodeType": "Block", + "src": "23567:361:0", + "statements": [ + { + "assignments": [ + 1324 + ], + "declarations": [ + { + "constant": false, + "id": 1324, + "mutability": "mutable", + "name": "processesUntilEndOfArray", + "nameLocation": "23593:24:0", + "nodeType": "VariableDeclaration", + "scope": 1349, + "src": "23585:32:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1323, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23585:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1338, + "initialValue": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 1325, + "name": "tokenHoldersMap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "23620:15:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1717_storage", + "typeString": "struct IterableMapping.Map storage ref" + } + }, + "id": 1326, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23636:4:0", + "memberName": "keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 1704, + "src": "23620:20:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23641:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "23620:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 1328, + "name": "lastProcessedIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "23670:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23620:68:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "hexValue": "30", + "id": 1336, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23785:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "id": 1337, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "23620:166:0", + "trueExpression": { + "arguments": [ + { + "id": 1334, + "name": "lastProcessedIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "23743:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "expression": { + "expression": { + "id": 1330, + "name": "tokenHoldersMap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "23711:15:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1717_storage", + "typeString": "struct IterableMapping.Map storage ref" + } + }, + "id": 1331, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23727:4:0", + "memberName": "keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 1704, + "src": "23711:20:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23732:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "23711:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23739:3:0", + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 425, + "src": "23711:31:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23711:51:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "23585:201:0" + }, + { + "expression": { + "id": 1347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1339, + "name": "iterationsUntilProcessed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1275, + "src": "23805:24:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 1344, + "name": "processesUntilEndOfArray", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1324, + "src": "23870:24:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1343, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "23863:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int256_$", + "typeString": "type(int256)" + }, + "typeName": { + "id": 1342, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "23863:6:0", + "typeDescriptions": {} + } + }, + "id": 1345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23863:32:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "expression": { + "id": 1340, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1273, + "src": "23832:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 1341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23838:3:0", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 178, + "src": "23832:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$attached_to$_t_int256_$", + "typeString": "function (int256,int256) pure returns (int256)" + } + }, + "id": 1346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23832:81:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "23805:108:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 1348, + "nodeType": "ExpressionStatement", + "src": "23805:108:0" + } + ] + }, + "id": 1350, + "nodeType": "IfStatement", + "src": "23385:543:0", + "trueBody": { + "id": 1322, + "nodeType": "Block", + "src": "23426:135:0", + "statements": [ + { + "expression": { + "id": 1320, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1312, + "name": "iterationsUntilProcessed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1275, + "src": "23444:24:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 1317, + "name": "lastProcessedIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "23509:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1316, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "23502:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int256_$", + "typeString": "type(int256)" + }, + "typeName": { + "id": 1315, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "23502:6:0", + "typeDescriptions": {} + } + }, + "id": 1318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23502:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "expression": { + "id": 1313, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1273, + "src": "23471:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 1314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23477:3:0", + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 140, + "src": "23471:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$attached_to$_t_int256_$", + "typeString": "function (int256,int256) pure returns (int256)" + } + }, + "id": 1319, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23471:75:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "23444:102:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 1321, + "nodeType": "ExpressionStatement", + "src": "23444:102:0" + } + ] + } + } + ] + } + }, + { + "expression": { + "id": 1357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1353, + "name": "withdrawableDividends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1277, + "src": "23948:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1355, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1271, + "src": "23995:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1354, + "name": "withdrawableDividendOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "23972:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 1356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23972:31:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23948:55:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1358, + "nodeType": "ExpressionStatement", + "src": "23948:55:0" + }, + { + "expression": { + "id": 1363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1359, + "name": "totalDividends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1279, + "src": "24013:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1361, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1271, + "src": "24053:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1360, + "name": "accumulativeDividendOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 886, + "src": "24030:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 1362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24030:31:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24013:48:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1364, + "nodeType": "ExpressionStatement", + "src": "24013:48:0" + }, + { + "expression": { + "id": 1369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1365, + "name": "lastClaimTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1281, + "src": "24072:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "id": 1366, + "name": "lastClaimTimes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1108, + "src": "24088:14:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1368, + "indexExpression": { + "id": 1367, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1271, + "src": "24103:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24088:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24072:39:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1370, + "nodeType": "ExpressionStatement", + "src": "24072:39:0" + }, + { + "expression": { + "id": 1381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1371, + "name": "nextClaimTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1283, + "src": "24122:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1372, + "name": "lastClaimTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1281, + "src": "24138:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 1373, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24154:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "24138:17:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "hexValue": "30", + "id": 1379, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24189:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "id": 1380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "24138:52:0", + "trueExpression": { + "arguments": [ + { + "id": 1377, + "name": "claimWait", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1110, + "src": "24176:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 1375, + "name": "lastClaimTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1281, + "src": "24158:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24172:3:0", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 403, + "src": "24158:17:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24158:28:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24122:68:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1382, + "nodeType": "ExpressionStatement", + "src": "24122:68:0" + }, + { + "expression": { + "id": 1395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1383, + "name": "secondsUntilAutoClaimAvailable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1285, + "src": "24201:30:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1384, + "name": "nextClaimTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1283, + "src": "24234:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 1385, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967292, + "src": "24250:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24256:9:0", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "24250:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24234:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "hexValue": "30", + "id": 1393, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24329:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "id": 1394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "24234:96:0", + "trueExpression": { + "arguments": [ + { + "expression": { + "id": 1390, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967292, + "src": "24298:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24304:9:0", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "24298:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 1388, + "name": "nextClaimTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1283, + "src": "24280:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24294:3:0", + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 425, + "src": "24280:17:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1392, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24280:34:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24201:129:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1396, + "nodeType": "ExpressionStatement", + "src": "24201:129:0" + } + ] + }, + "functionSelector": "fbcbc0f1", + "id": 1398, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAccount", + "nameLocation": "22830:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1269, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1268, + "mutability": "mutable", + "name": "_account", + "nameLocation": "22849:8:0", + "nodeType": "VariableDeclaration", + "scope": 1398, + "src": "22841:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1267, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22841:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "22840:18:0" + }, + "returnParameters": { + "id": 1286, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1271, + "mutability": "mutable", + "name": "account", + "nameLocation": "22925:7:0", + "nodeType": "VariableDeclaration", + "scope": 1398, + "src": "22917:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1270, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22917:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1273, + "mutability": "mutable", + "name": "index", + "nameLocation": "22953:5:0", + "nodeType": "VariableDeclaration", + "scope": 1398, + "src": "22946:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 1272, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "22946:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1275, + "mutability": "mutable", + "name": "iterationsUntilProcessed", + "nameLocation": "22979:24:0", + "nodeType": "VariableDeclaration", + "scope": 1398, + "src": "22972:31:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 1274, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "22972:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1277, + "mutability": "mutable", + "name": "withdrawableDividends", + "nameLocation": "23025:21:0", + "nodeType": "VariableDeclaration", + "scope": 1398, + "src": "23017:29:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1276, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23017:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1279, + "mutability": "mutable", + "name": "totalDividends", + "nameLocation": "23068:14:0", + "nodeType": "VariableDeclaration", + "scope": 1398, + "src": "23060:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1278, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23060:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1281, + "mutability": "mutable", + "name": "lastClaimTime", + "nameLocation": "23104:13:0", + "nodeType": "VariableDeclaration", + "scope": 1398, + "src": "23096:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1280, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23096:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1283, + "mutability": "mutable", + "name": "nextClaimTime", + "nameLocation": "23139:13:0", + "nodeType": "VariableDeclaration", + "scope": 1398, + "src": "23131:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1282, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23131:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1285, + "mutability": "mutable", + "name": "secondsUntilAutoClaimAvailable", + "nameLocation": "23174:30:0", + "nodeType": "VariableDeclaration", + "scope": 1398, + "src": "23166:38:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1284, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23166:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "22903:311:0" + }, + "scope": 1699, + "src": "22821:1516:0", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1449, + "nodeType": "Block", + "src": "24610:396:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1419, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1400, + "src": "24624:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 1420, + "name": "tokenHoldersMap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "24633:15:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1717_storage", + "typeString": "struct IterableMapping.Map storage ref" + } + }, + "id": 1421, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24649:4:0", + "memberName": "size", + "nodeType": "MemberAccess", + "referencedDeclaration": 1791, + "src": "24633:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Map_$1717_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_Map_$1717_storage_ptr_$", + "typeString": "function (struct IterableMapping.Map storage pointer) view returns (uint256)" + } + }, + "id": 1422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24633:22:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24624:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1437, + "nodeType": "IfStatement", + "src": "24620:278:0", + "trueBody": { + "id": 1436, + "nodeType": "Block", + "src": "24657:241:0", + "statements": [ + { + "expression": { + "components": [ + { + "hexValue": "307830303030303030303030303030303030303030303030303030303030303030303030303030303030", + "id": 1424, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24696:42:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "value": "0x0000000000000000000000000000000000000000" + }, + { + "id": 1426, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "24756:2:0", + "subExpression": { + "hexValue": "31", + "id": 1425, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24757:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + }, + { + "id": 1428, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "24776:2:0", + "subExpression": { + "hexValue": "31", + "id": 1427, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24777:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + }, + { + "hexValue": "30", + "id": 1429, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24796:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 1430, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24815:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 1431, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24834:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 1432, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24853:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 1433, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24872:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 1434, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "24678:209:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_rational_minus_1_by_1_$_t_rational_minus_1_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$", + "typeString": "tuple(address,int_const -1,int_const -1,int_const 0,int_const 0,int_const 0,int_const 0,int_const 0)" + } + }, + "functionReturnParameters": 1418, + "id": 1435, + "nodeType": "Return", + "src": "24671:216:0" + } + ] + } + }, + { + "assignments": [ + 1439 + ], + "declarations": [ + { + "constant": false, + "id": 1439, + "mutability": "mutable", + "name": "account", + "nameLocation": "24916:7:0", + "nodeType": "VariableDeclaration", + "scope": 1449, + "src": "24908:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1438, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24908:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 1444, + "initialValue": { + "arguments": [ + { + "id": 1442, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1400, + "src": "24956:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 1440, + "name": "tokenHoldersMap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "24926:15:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1717_storage", + "typeString": "struct IterableMapping.Map storage ref" + } + }, + "id": 1441, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24942:13:0", + "memberName": "getKeyAtIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 1778, + "src": "24926:29:0", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Map_$1717_storage_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_struct$_Map_$1717_storage_ptr_$", + "typeString": "function (struct IterableMapping.Map storage pointer,uint256) view returns (address)" + } + }, + "id": 1443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24926:36:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "24908:54:0" + }, + { + "expression": { + "arguments": [ + { + "id": 1446, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1439, + "src": "24991:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1445, + "name": "getAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1398, + "src": "24980:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$_t_int256_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "function (address) view returns (address,int256,int256,uint256,uint256,uint256,uint256,uint256)" + } + }, + "id": 1447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24980:19:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_int256_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(address,int256,int256,uint256,uint256,uint256,uint256,uint256)" + } + }, + "functionReturnParameters": 1418, + "id": 1448, + "nodeType": "Return", + "src": "24973:26:0" + } + ] + }, + "functionSelector": "5183d6fd", + "id": 1450, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAccountAtIndex", + "nameLocation": "24352:17:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1401, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1400, + "mutability": "mutable", + "name": "index", + "nameLocation": "24378:5:0", + "nodeType": "VariableDeclaration", + "scope": 1450, + "src": "24370:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1399, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24370:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "24369:15:0" + }, + "returnParameters": { + "id": 1418, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1403, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1450, + "src": "24443:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1402, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24443:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1405, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1450, + "src": "24464:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 1404, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "24464:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1407, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1450, + "src": "24484:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 1406, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "24484:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1409, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1450, + "src": "24504:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1408, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24504:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1411, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1450, + "src": "24525:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1410, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24525:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1413, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1450, + "src": "24546:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1412, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24546:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1415, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1450, + "src": "24567:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1414, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24567:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1417, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1450, + "src": "24588:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1416, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24588:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "24429:176:0" + }, + "scope": 1699, + "src": "24343:663:0", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1473, + "nodeType": "Block", + "src": "25085:155:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1457, + "name": "lastClaimTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1452, + "src": "25099:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 1458, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967292, + "src": "25115:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25121:9:0", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "25115:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "25099:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1464, + "nodeType": "IfStatement", + "src": "25095:74:0", + "trueBody": { + "id": 1463, + "nodeType": "Block", + "src": "25132:37:0", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 1461, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25153:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1456, + "id": 1462, + "nodeType": "Return", + "src": "25146:12:0" + } + ] + } + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1471, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 1468, + "name": "lastClaimTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1452, + "src": "25206:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "expression": { + "id": 1465, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967292, + "src": "25186:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1466, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25192:9:0", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "25186:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25202:3:0", + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 425, + "src": "25186:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25186:34:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 1470, + "name": "claimWait", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1110, + "src": "25224:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "25186:47:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1456, + "id": 1472, + "nodeType": "Return", + "src": "25179:54:0" + } + ] + }, + "id": 1474, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "canAutoClaim", + "nameLocation": "25021:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1453, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1452, + "mutability": "mutable", + "name": "lastClaimTime", + "nameLocation": "25042:13:0", + "nodeType": "VariableDeclaration", + "scope": 1474, + "src": "25034:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1451, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25034:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "25033:23:0" + }, + "returnParameters": { + "id": 1456, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1455, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1474, + "src": "25079:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1454, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "25079:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "25078:6:0" + }, + "scope": 1699, + "src": "25012:228:0", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1523, + "nodeType": "Block", + "src": "25350:394:0", + "statements": [ + { + "condition": { + "baseExpression": { + "id": 1483, + "name": "excludedFromDividends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1104, + "src": "25364:21:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1485, + "indexExpression": { + "id": 1484, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1476, + "src": "25386:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "25364:30:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1488, + "nodeType": "IfStatement", + "src": "25360:67:0", + "trueBody": { + "id": 1487, + "nodeType": "Block", + "src": "25396:31:0", + "statements": [ + { + "functionReturnParameters": 1482, + "id": 1486, + "nodeType": "Return", + "src": "25410:7:0" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1489, + "name": "newBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1478, + "src": "25441:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 1490, + "name": "minimumTokenBalanceForDividends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1112, + "src": "25455:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "25441:45:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1516, + "nodeType": "Block", + "src": "25605:93:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1506, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1476, + "src": "25631:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "hexValue": "30", + "id": 1507, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25640:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1505, + "name": "_setBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1049, + "src": "25619:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25619:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1509, + "nodeType": "ExpressionStatement", + "src": "25619:23:0" + }, + { + "expression": { + "arguments": [ + { + "id": 1513, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1476, + "src": "25679:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "id": 1510, + "name": "tokenHoldersMap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "25656:15:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1717_storage", + "typeString": "struct IterableMapping.Map storage ref" + } + }, + "id": 1512, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25672:6:0", + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 1931, + "src": "25656:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Map_$1717_storage_ptr_$_t_address_$returns$__$attached_to$_t_struct$_Map_$1717_storage_ptr_$", + "typeString": "function (struct IterableMapping.Map storage pointer,address)" + } + }, + "id": 1514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25656:31:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1515, + "nodeType": "ExpressionStatement", + "src": "25656:31:0" + } + ] + }, + "id": 1517, + "nodeType": "IfStatement", + "src": "25437:261:0", + "trueBody": { + "id": 1504, + "nodeType": "Block", + "src": "25488:111:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1493, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1476, + "src": "25514:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 1494, + "name": "newBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1478, + "src": "25523:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1492, + "name": "_setBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1049, + "src": "25502:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25502:32:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1496, + "nodeType": "ExpressionStatement", + "src": "25502:32:0" + }, + { + "expression": { + "arguments": [ + { + "id": 1500, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1476, + "src": "25568:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 1501, + "name": "newBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1478, + "src": "25577:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 1497, + "name": "tokenHoldersMap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "25548:15:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1717_storage", + "typeString": "struct IterableMapping.Map storage ref" + } + }, + "id": 1499, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25564:3:0", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 1851, + "src": "25548:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Map_$1717_storage_ptr_$_t_address_$_t_uint256_$returns$__$attached_to$_t_struct$_Map_$1717_storage_ptr_$", + "typeString": "function (struct IterableMapping.Map storage pointer,address,uint256)" + } + }, + "id": 1502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25548:40:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1503, + "nodeType": "ExpressionStatement", + "src": "25548:40:0" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 1519, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1476, + "src": "25723:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "hexValue": "74727565", + "id": 1520, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25732:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1518, + "name": "processAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1698, + "src": "25708:14:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_bool_$returns$_t_bool_$", + "typeString": "function (address payable,bool) returns (bool)" + } + }, + "id": 1521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25708:29:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1522, + "nodeType": "ExpressionStatement", + "src": "25708:29:0" + } + ] + }, + "functionSelector": "e30443bc", + "id": 1524, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1481, + "kind": "modifierInvocation", + "modifierName": { + "id": 1480, + "name": "onlyOwner", + "nameLocations": [ + "25336:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1964, + "src": "25336:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "25336:9:0" + } + ], + "name": "setBalance", + "nameLocation": "25255:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1479, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1476, + "mutability": "mutable", + "name": "account", + "nameLocation": "25282:7:0", + "nodeType": "VariableDeclaration", + "scope": 1524, + "src": "25266:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 1475, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25266:15:0", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1478, + "mutability": "mutable", + "name": "newBalance", + "nameLocation": "25299:10:0", + "nodeType": "VariableDeclaration", + "scope": 1524, + "src": "25291:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1477, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25291:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "25265:45:0" + }, + "returnParameters": { + "id": 1482, + "nodeType": "ParameterList", + "parameters": [], + "src": "25350:0:0" + }, + "scope": 1699, + "src": "25246:498:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1657, + "nodeType": "Block", + "src": "25891:1194:0", + "statements": [ + { + "assignments": [ + 1536 + ], + "declarations": [ + { + "constant": false, + "id": 1536, + "mutability": "mutable", + "name": "numberOfTokenHolders", + "nameLocation": "25909:20:0", + "nodeType": "VariableDeclaration", + "scope": 1657, + "src": "25901:28:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1535, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25901:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1540, + "initialValue": { + "expression": { + "expression": { + "id": 1537, + "name": "tokenHoldersMap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "25932:15:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1717_storage", + "typeString": "struct IterableMapping.Map storage ref" + } + }, + "id": 1538, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25948:4:0", + "memberName": "keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 1704, + "src": "25932:20:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25953:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "25932:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "25901:58:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1541, + "name": "numberOfTokenHolders", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1536, + "src": "25974:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1542, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25998:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "25974:25:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1550, + "nodeType": "IfStatement", + "src": "25970:89:0", + "trueBody": { + "id": 1549, + "nodeType": "Block", + "src": "26001:58:0", + "statements": [ + { + "expression": { + "components": [ + { + "hexValue": "30", + "id": 1544, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26023:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 1545, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26026:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 1546, + "name": "lastProcessedIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "26029:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1547, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "26022:26:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_uint256_$", + "typeString": "tuple(int_const 0,int_const 0,uint256)" + } + }, + "functionReturnParameters": 1534, + "id": 1548, + "nodeType": "Return", + "src": "26015:33:0" + } + ] + } + }, + { + "assignments": [ + 1552 + ], + "declarations": [ + { + "constant": false, + "id": 1552, + "mutability": "mutable", + "name": "_lastProcessedIndex", + "nameLocation": "26077:19:0", + "nodeType": "VariableDeclaration", + "scope": 1657, + "src": "26069:27:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1551, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26069:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1554, + "initialValue": { + "id": 1553, + "name": "lastProcessedIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "26099:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "26069:48:0" + }, + { + "assignments": [ + 1556 + ], + "declarations": [ + { + "constant": false, + "id": 1556, + "mutability": "mutable", + "name": "gasUsed", + "nameLocation": "26136:7:0", + "nodeType": "VariableDeclaration", + "scope": 1657, + "src": "26128:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1555, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26128:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1558, + "initialValue": { + "hexValue": "30", + "id": 1557, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26146:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "26128:19:0" + }, + { + "assignments": [ + 1560 + ], + "declarations": [ + { + "constant": false, + "id": 1560, + "mutability": "mutable", + "name": "gasLeft", + "nameLocation": "26166:7:0", + "nodeType": "VariableDeclaration", + "scope": 1657, + "src": "26158:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1559, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26158:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1563, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1561, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967289, + "src": "26176:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 1562, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26176:9:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "26158:27:0" + }, + { + "assignments": [ + 1565 + ], + "declarations": [ + { + "constant": false, + "id": 1565, + "mutability": "mutable", + "name": "iterations", + "nameLocation": "26204:10:0", + "nodeType": "VariableDeclaration", + "scope": 1657, + "src": "26196:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1564, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26196:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1567, + "initialValue": { + "hexValue": "30", + "id": 1566, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26217:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "26196:22:0" + }, + { + "assignments": [ + 1569 + ], + "declarations": [ + { + "constant": false, + "id": 1569, + "mutability": "mutable", + "name": "claims", + "nameLocation": "26236:6:0", + "nodeType": "VariableDeclaration", + "scope": 1657, + "src": "26228:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1568, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26228:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1571, + "initialValue": { + "hexValue": "30", + "id": 1570, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26245:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "26228:18:0" + }, + { + "body": { + "id": 1646, + "nodeType": "Block", + "src": "26316:654:0", + "statements": [ + { + "expression": { + "id": 1580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "26330:21:0", + "subExpression": { + "id": 1579, + "name": "_lastProcessedIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1552, + "src": "26330:19:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1581, + "nodeType": "ExpressionStatement", + "src": "26330:21:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1582, + "name": "_lastProcessedIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1552, + "src": "26370:19:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "expression": { + "id": 1583, + "name": "tokenHoldersMap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "26393:15:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1717_storage", + "typeString": "struct IterableMapping.Map storage ref" + } + }, + "id": 1584, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26409:4:0", + "memberName": "keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 1704, + "src": "26393:20:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26414:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "26393:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26370:50:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1592, + "nodeType": "IfStatement", + "src": "26366:112:0", + "trueBody": { + "id": 1591, + "nodeType": "Block", + "src": "26422:56:0", + "statements": [ + { + "expression": { + "id": 1589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1587, + "name": "_lastProcessedIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1552, + "src": "26440:19:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 1588, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26462:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "26440:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1590, + "nodeType": "ExpressionStatement", + "src": "26440:23:0" + } + ] + } + }, + { + "assignments": [ + 1594 + ], + "declarations": [ + { + "constant": false, + "id": 1594, + "mutability": "mutable", + "name": "account", + "nameLocation": "26500:7:0", + "nodeType": "VariableDeclaration", + "scope": 1646, + "src": "26492:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1593, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26492:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 1599, + "initialValue": { + "baseExpression": { + "expression": { + "id": 1595, + "name": "tokenHoldersMap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "26510:15:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$1717_storage", + "typeString": "struct IterableMapping.Map storage ref" + } + }, + "id": 1596, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26526:4:0", + "memberName": "keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 1704, + "src": "26510:20:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1598, + "indexExpression": { + "id": 1597, + "name": "_lastProcessedIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1552, + "src": "26531:19:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26510:41:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "26492:59:0" + }, + { + "condition": { + "arguments": [ + { + "baseExpression": { + "id": 1601, + "name": "lastClaimTimes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1108, + "src": "26583:14:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1603, + "indexExpression": { + "id": 1602, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1594, + "src": "26598:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26583:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1600, + "name": "canAutoClaim", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1474, + "src": "26570:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 1604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26570:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1618, + "nodeType": "IfStatement", + "src": "26566:168:0", + "trueBody": { + "id": 1617, + "nodeType": "Block", + "src": "26609:125:0", + "statements": [ + { + "condition": { + "arguments": [ + { + "arguments": [ + { + "id": 1608, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1594, + "src": "26654:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1607, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26646:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 1606, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26646:8:0", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 1609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26646:16:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "hexValue": "74727565", + "id": 1610, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26664:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1605, + "name": "processAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1698, + "src": "26631:14:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_bool_$returns$_t_bool_$", + "typeString": "function (address payable,bool) returns (bool)" + } + }, + "id": 1611, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26631:38:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1616, + "nodeType": "IfStatement", + "src": "26627:93:0", + "trueBody": { + "id": 1615, + "nodeType": "Block", + "src": "26671:49:0", + "statements": [ + { + "expression": { + "id": 1613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "26693:8:0", + "subExpression": { + "id": 1612, + "name": "claims", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1569, + "src": "26693:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1614, + "nodeType": "ExpressionStatement", + "src": "26693:8:0" + } + ] + } + } + ] + } + }, + { + "expression": { + "id": 1620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "26748:12:0", + "subExpression": { + "id": 1619, + "name": "iterations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1565, + "src": "26748:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1621, + "nodeType": "ExpressionStatement", + "src": "26748:12:0" + }, + { + "assignments": [ + 1623 + ], + "declarations": [ + { + "constant": false, + "id": 1623, + "mutability": "mutable", + "name": "newGasLeft", + "nameLocation": "26783:10:0", + "nodeType": "VariableDeclaration", + "scope": 1646, + "src": "26775:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1622, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26775:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1626, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1624, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967289, + "src": "26796:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 1625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26796:9:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "26775:30:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1627, + "name": "gasLeft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1560, + "src": "26824:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 1628, + "name": "newGasLeft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1623, + "src": "26834:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26824:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1641, + "nodeType": "IfStatement", + "src": "26820:105:0", + "trueBody": { + "id": 1640, + "nodeType": "Block", + "src": "26846:79:0", + "statements": [ + { + "expression": { + "id": 1638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1630, + "name": "gasUsed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1556, + "src": "26864:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 1635, + "name": "newGasLeft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1623, + "src": "26898:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 1633, + "name": "gasLeft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1560, + "src": "26886:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26894:3:0", + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 425, + "src": "26886:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26886:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 1631, + "name": "gasUsed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1556, + "src": "26874:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26882:3:0", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 403, + "src": "26874:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1637, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26874:36:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26864:46:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1639, + "nodeType": "ExpressionStatement", + "src": "26864:46:0" + } + ] + } + }, + { + "expression": { + "id": 1644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1642, + "name": "gasLeft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1560, + "src": "26939:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1643, + "name": "newGasLeft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1623, + "src": "26949:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26939:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1645, + "nodeType": "ExpressionStatement", + "src": "26939:20:0" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1572, + "name": "gasUsed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1556, + "src": "26264:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 1573, + "name": "gas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1526, + "src": "26274:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26264:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1575, + "name": "iterations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1565, + "src": "26281:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 1576, + "name": "numberOfTokenHolders", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1536, + "src": "26294:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26281:33:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "26264:50:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1647, + "nodeType": "WhileStatement", + "src": "26257:713:0" + }, + { + "expression": { + "id": 1650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1648, + "name": "lastProcessedIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "26980:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1649, + "name": "_lastProcessedIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1552, + "src": "27001:19:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26980:40:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1651, + "nodeType": "ExpressionStatement", + "src": "26980:40:0" + }, + { + "expression": { + "components": [ + { + "id": 1652, + "name": "iterations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1565, + "src": "27039:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1653, + "name": "claims", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1569, + "src": "27051:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1654, + "name": "lastProcessedIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "27059:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1655, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27038:40:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256,uint256)" + } + }, + "functionReturnParameters": 1534, + "id": 1656, + "nodeType": "Return", + "src": "27031:47:0" + } + ] + }, + "functionSelector": "ffb2c479", + "id": 1658, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "process", + "nameLocation": "25759:7:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1527, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1526, + "mutability": "mutable", + "name": "gas", + "nameLocation": "25775:3:0", + "nodeType": "VariableDeclaration", + "scope": 1658, + "src": "25767:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1525, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25767:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "25766:13:0" + }, + "returnParameters": { + "id": 1534, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1529, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1658, + "src": "25827:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1528, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25827:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1531, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1658, + "src": "25848:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1530, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25848:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1533, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1658, + "src": "25869:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1532, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25869:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "25813:73:0" + }, + "scope": 1699, + "src": "25750:1335:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1697, + "nodeType": "Block", + "src": "27216:258:0", + "statements": [ + { + "assignments": [ + 1670 + ], + "declarations": [ + { + "constant": false, + "id": 1670, + "mutability": "mutable", + "name": "amount", + "nameLocation": "27234:6:0", + "nodeType": "VariableDeclaration", + "scope": 1697, + "src": "27226:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1669, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27226:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1674, + "initialValue": { + "arguments": [ + { + "id": 1672, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1660, + "src": "27267:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1671, + "name": "_withdrawDividendOfUser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 811, + "src": "27243:23:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$returns$_t_uint256_$", + "typeString": "function (address payable) returns (uint256)" + } + }, + "id": 1673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27243:32:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "27226:49:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1675, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1670, + "src": "27290:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 1676, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27299:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "27290:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1694, + "nodeType": "IfStatement", + "src": "27286:159:0", + "trueBody": { + "id": 1693, + "nodeType": "Block", + "src": "27302:143:0", + "statements": [ + { + "expression": { + "id": 1683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1678, + "name": "lastClaimTimes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1108, + "src": "27316:14:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1680, + "indexExpression": { + "id": 1679, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1660, + "src": "27331:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "27316:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 1681, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967292, + "src": "27342:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27348:9:0", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "27342:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27316:41:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1684, + "nodeType": "ExpressionStatement", + "src": "27316:41:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 1686, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1660, + "src": "27382:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 1687, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1670, + "src": "27391:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1688, + "name": "automatic", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1662, + "src": "27399:9:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1685, + "name": "Claim", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1130, + "src": "27376:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (address,uint256,bool)" + } + }, + "id": 1689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27376:33:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1690, + "nodeType": "EmitStatement", + "src": "27371:38:0" + }, + { + "expression": { + "hexValue": "74727565", + "id": 1691, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27430:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1668, + "id": 1692, + "nodeType": "Return", + "src": "27423:11:0" + } + ] + } + }, + { + "expression": { + "hexValue": "66616c7365", + "id": 1695, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27462:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1668, + "id": 1696, + "nodeType": "Return", + "src": "27455:12:0" + } + ] + }, + "functionSelector": "bc4c4b37", + "id": 1698, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1665, + "kind": "modifierInvocation", + "modifierName": { + "id": 1664, + "name": "onlyOwner", + "nameLocations": [ + "27179:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1964, + "src": "27179:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "27179:9:0" + } + ], + "name": "processAccount", + "nameLocation": "27100:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1663, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1660, + "mutability": "mutable", + "name": "account", + "nameLocation": "27131:7:0", + "nodeType": "VariableDeclaration", + "scope": 1698, + "src": "27115:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 1659, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27115:15:0", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1662, + "mutability": "mutable", + "name": "automatic", + "nameLocation": "27145:9:0", + "nodeType": "VariableDeclaration", + "scope": 1698, + "src": "27140:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1661, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "27140:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "27114:41:0" + }, + "returnParameters": { + "id": 1668, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1667, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1698, + "src": "27206:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1666, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "27206:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "27205:6:0" + }, + "scope": 1699, + "src": "27091:383:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 1700, + "src": "20405:7071:0", + "usedErrors": [] + } + ], + "src": "32:27444:0" + }, + "functionHashes": { + "accumulativeDividendOf(address)": "27ce0147", + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "claimWait()": "6f2789ec", + "decimals()": "313ce567", + "decreaseAllowance(address,uint256)": "a457c2d7", + "distributeDividends(uint256)": "3243c791", + "dividendOf(address)": "91b89fba", + "excludeFromDividends(address)": "31e79db0", + "excludedFromDividends(address)": "4e7b827f", + "getAccount(address)": "fbcbc0f1", + "getAccountAtIndex(uint256)": "5183d6fd", + "getLastProcessedIndex()": "e7841ec0", + "getNumberOfTokenHolders()": "09bbedde", + "increaseAllowance(address,uint256)": "39509351", + "lastClaimTimes(address)": "226cfa3d", + "lastProcessedIndex()": "3009a609", + "minimumTokenBalanceForDividends()": "be10b614", + "name()": "06fdde03", + "owner()": "8da5cb5b", + "process(uint256)": "ffb2c479", + "processAccount(address,bool)": "bc4c4b37", + "renounceOwnership()": "715018a6", + "rewardsToken()": "d1af0c7d", + "setBalance(address,uint256)": "e30443bc", + "symbol()": "95d89b41", + "totalDividendsDistributed()": "85a6b3ae", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd", + "transferOwnership(address)": "f2fde38b", + "updateClaimWait(uint256)": "e98030c7", + "withdrawDividend()": "6a474002", + "withdrawableDividendOf(address)": "a8b9d240", + "withdrawnDividendOf(address)": "aafd847a" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "1522600", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "accumulativeDividendOf(address)": "infinite", + "allowance(address,address)": "infinite", + "approve(address,uint256)": "24668", + "balanceOf(address)": "2645", + "claimWait()": "2384", + "decimals()": "311", + "decreaseAllowance(address,uint256)": "26989", + "distributeDividends(uint256)": "infinite", + "dividendOf(address)": "infinite", + "excludeFromDividends(address)": "infinite", + "excludedFromDividends(address)": "2637", + "getAccount(address)": "infinite", + "getAccountAtIndex(uint256)": "infinite", + "getLastProcessedIndex()": "2336", + "getNumberOfTokenHolders()": "2372", + "increaseAllowance(address,uint256)": "infinite", + "lastClaimTimes(address)": "2559", + "lastProcessedIndex()": "2407", + "minimumTokenBalanceForDividends()": "2340", + "name()": "infinite", + "owner()": "2388", + "process(uint256)": "infinite", + "processAccount(address,bool)": "infinite", + "renounceOwnership()": "infinite", + "rewardsToken()": "2404", + "setBalance(address,uint256)": "infinite", + "symbol()": "infinite", + "totalDividendsDistributed()": "2341", + "totalSupply()": "2405", + "transfer(address,uint256)": "567", + "transferFrom(address,address,uint256)": "infinite", + "transferOwnership(address)": "infinite", + "updateClaimWait(uint256)": "30364", + "withdrawDividend()": "368", + "withdrawableDividendOf(address)": "infinite", + "withdrawnDividendOf(address)": "2642" + }, + "internal": { + "_transfer(address,address,uint256)": "infinite", + "canAutoClaim(uint256)": "infinite" + } + } +} \ No newline at end of file diff --git a/resources/IterableMapping.json b/resources/IterableMapping.json new file mode 100644 index 0000000..3d3c6a6 --- /dev/null +++ b/resources/IterableMapping.json @@ -0,0 +1,2742 @@ +{ + "contractName": "IterableMapping", + "abi": [], + "metadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/kasiopea/dev/flashbot/TokenBuilderSM/contracts/IterableMapping.sol\":\"IterableMapping\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/kasiopea/dev/flashbot/TokenBuilderSM/contracts/IterableMapping.sol\":{\"keccak256\":\"0x7ba6d427e05b6731c2439fb86e85003ef6bfeb8dde90bd1bd3785ecbe7553a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3e7f6484b45ef6d815ffbc715ec1589e53ab20e26d294ecb677ac8709f926e97\",\"dweb:/ipfs/QmZtkkD8PYq6RLWFa46J3bkhieLf2rJ3hfuQ4wrZC1vddG\"]}},\"version\":1}", + "bytecode": "6104e361003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061006c5760003560e01c806317e142d1146100715780634c60db9c14610097578063732a2ccf146100b9578063bc2b405c146100e6578063d1aa9e7e14610106578063deb3d89614610131575b600080fd5b61008461007f3660046103c4565b610143565b6040519081526020015b60405180910390f35b8180156100a357600080fd5b506100b76100b23660046103c4565b610191565b005b6100846100c73660046103c4565b6001600160a01b03166000908152600191909101602052604090205490565b8180156100f257600080fd5b506100b76101013660046103f0565b6102cc565b610119610114366004610425565b610375565b6040516001600160a01b03909116815260200161008e565b61008461013f366004610447565b5490565b6001600160a01b038116600090815260038301602052604081205460ff1661016e575060001961018b565b506001600160a01b03811660009081526002830160205260409020545b92915050565b6001600160a01b038116600090815260038301602052604090205460ff166101b7575050565b6001600160a01b03811660009081526003830160209081526040808320805460ff191690556001808601835281842084905560028601909252822054845490929161020191610460565b9050600084600001828154811061021a5761021a610481565b60009182526020808320909101546001600160a01b0390811680845260028901909252604080842087905590871683528220919091558554909150819086908590811061026957610269610481565b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905584548590806102a3576102a3610497565b600082815260209020810160001990810180546001600160a01b03191690550190555050505050565b6001600160a01b038216600090815260038401602052604090205460ff1615610311576001600160a01b03821660009081526001840160205260409020819055505050565b6001600160a01b03821660008181526003850160209081526040808320805460ff19166001908117909155878101835281842086905587546002890184529184208290558101875586835291200180546001600160a01b0319169091179055505050565b600082600001828154811061038c5761038c610481565b6000918252602090912001546001600160a01b03169392505050565b80356001600160a01b03811681146103bf57600080fd5b919050565b600080604083850312156103d757600080fd5b823591506103e7602084016103a8565b90509250929050565b60008060006060848603121561040557600080fd5b83359250610415602085016103a8565b9150604084013590509250925092565b6000806040838503121561043857600080fd5b50508035926020909101359150565b60006020828403121561045957600080fd5b5035919050565b8181038181111561018b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220714a330f0174c934c80b6dec8f2073d47846133aba7167972055bf4895d7f7e164736f6c63430008130033", + "deployedBytecode": "730000000000000000000000000000000000000000301460806040526004361061006c5760003560e01c806317e142d1146100715780634c60db9c14610097578063732a2ccf146100b9578063bc2b405c146100e6578063d1aa9e7e14610106578063deb3d89614610131575b600080fd5b61008461007f3660046103c4565b610143565b6040519081526020015b60405180910390f35b8180156100a357600080fd5b506100b76100b23660046103c4565b610191565b005b6100846100c73660046103c4565b6001600160a01b03166000908152600191909101602052604090205490565b8180156100f257600080fd5b506100b76101013660046103f0565b6102cc565b610119610114366004610425565b610375565b6040516001600160a01b03909116815260200161008e565b61008461013f366004610447565b5490565b6001600160a01b038116600090815260038301602052604081205460ff1661016e575060001961018b565b506001600160a01b03811660009081526002830160205260409020545b92915050565b6001600160a01b038116600090815260038301602052604090205460ff166101b7575050565b6001600160a01b03811660009081526003830160209081526040808320805460ff191690556001808601835281842084905560028601909252822054845490929161020191610460565b9050600084600001828154811061021a5761021a610481565b60009182526020808320909101546001600160a01b0390811680845260028901909252604080842087905590871683528220919091558554909150819086908590811061026957610269610481565b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905584548590806102a3576102a3610497565b600082815260209020810160001990810180546001600160a01b03191690550190555050505050565b6001600160a01b038216600090815260038401602052604090205460ff1615610311576001600160a01b03821660009081526001840160205260409020819055505050565b6001600160a01b03821660008181526003850160209081526040808320805460ff19166001908117909155878101835281842086905587546002890184529184208290558101875586835291200180546001600160a01b0319169091179055505050565b600082600001828154811061038c5761038c610481565b6000918252602090912001546001600160a01b03169392505050565b80356001600160a01b03811681146103bf57600080fd5b919050565b600080604083850312156103d757600080fd5b823591506103e7602084016103a8565b90509250929050565b60008060006060848603121561040557600080fd5b83359250610415602085016103a8565b9150604084013590509250925092565b6000806040838503121561043857600080fd5b50508035926020909101359150565b60006020828403121561045957600080fd5b5035919050565b8181038181111561018b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220714a330f0174c934c80b6dec8f2073d47846133aba7167972055bf4895d7f7e164736f6c63430008130033", + "sourceMap": "57:1687:0:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;57:1687:0;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "57:1687:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;431:225;;;;;;:::i;:::-;;:::i;:::-;;;623:25:1;;;611:2;596:18;431:225:0;;;;;;;;1280:462;;;;;;;;;;-1:-1:-1;1280:462:0;;;;;:::i;:::-;;:::i;:::-;;313:112;;;;;;:::i;:::-;-1:-1:-1;;;;;403:15:0;377:7;403:15;;;:10;;;;;:15;;;;;;;313:112;926:348;;;;;;;;;;-1:-1:-1;926:348:0;;;;;:::i;:::-;;:::i;662:152::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1641:32:1;;;1623:51;;1611:2;1596:18;662:152:0;1469:211:1;820:100:0;;;;;;:::i;:::-;898:15;;820:100;431:225;-1:-1:-1;;;;;556:17:0;;529:6;556:17;;;:12;;;:17;;;;;;;;551:58;;-1:-1:-1;;;589:9:0;;551:58;-1:-1:-1;;;;;;632:16:0;;;;;;:11;;;:16;;;;;;431:225;;;;;:::o;1280:462::-;-1:-1:-1;;;;;1348:17:0;;;;;;:12;;;:17;;;;;;;;1343:55;;1280:462;;:::o;1343:55::-;-1:-1:-1;;;;;1415:17:0;;;;;;:12;;;:17;;;;;;;;1408:24;;-1:-1:-1;;1408:24:0;;;;1449:10;;;:15;;;;;1442:22;;;1491:11;;;:16;;;;;;1537:15;;1491:16;;1415:17;1537:19;;;:::i;:::-;1517:39;;1566:15;1584:3;:8;;1593:9;1584:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1584:19:0;;;1614:20;;;:11;;;:20;;;;;;;:28;;;1659:16;;;;;;;1652:23;;;;1686:15;;1584:19;;-1:-1:-1;1584:19:0;;1614:3;;1637:5;;1686:15;;;;;;:::i;:::-;;;;;;;;;;:25;;-1:-1:-1;;;;;;1686:25:0;-1:-1:-1;;;;;1686:25:0;;;;;;;;;;1721:14;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;1721:14:0;;;;;-1:-1:-1;;;;;;1721:14:0;;;;;;-1:-1:-1;;;;;1280:462:0:o;926:348::-;-1:-1:-1;;;;;1033:17:0;;;;;;:12;;;:17;;;;;;;;1029:239;;;-1:-1:-1;;;;;1066:15:0;;;;;;:10;;;:15;;;;;:21;;;926:348;;;:::o;1029:239::-;-1:-1:-1;;;;;1118:17:0;;;;;;:12;;;:17;;;;;;;;:24;;-1:-1:-1;;1118:24:0;1138:4;1118:24;;;;;;1156:10;;;:15;;;;;:21;;;1210:15;;1191:11;;;:16;;;;;:34;;;1239:18;;;;;;;;;;;;-1:-1:-1;;;;;;1239:18:0;;;;;;926:348;;;:::o;662:152::-;762:7;792:3;:8;;801:5;792:15;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;792:15:0;;662:152;-1:-1:-1;;;662:152:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:274::-;280:6;288;341:2;329:9;320:7;316:23;312:32;309:52;;;357:1;354;347:12;309:52;393:9;380:23;370:33;;422:38;456:2;445:9;441:18;422:38;:::i;:::-;412:48;;192:274;;;;;:::o;849:342::-;946:6;954;962;1015:2;1003:9;994:7;990:23;986:32;983:52;;;1031:1;1028;1021:12;983:52;1067:9;1054:23;1044:33;;1096:38;1130:2;1119:9;1115:18;1096:38;:::i;:::-;1086:48;;1181:2;1170:9;1166:18;1153:32;1143:42;;849:342;;;;;:::o;1196:268::-;1284:6;1292;1345:2;1333:9;1324:7;1320:23;1316:32;1313:52;;;1361:1;1358;1351:12;1313:52;-1:-1:-1;;1384:23:1;;;1454:2;1439:18;;;1426:32;;-1:-1:-1;1196:268:1:o;1685:200::-;1764:6;1817:2;1805:9;1796:7;1792:23;1788:32;1785:52;;;1833:1;1830;1823:12;1785:52;-1:-1:-1;1856:23:1;;1685:200;-1:-1:-1;1685:200:1:o;1890:225::-;1957:9;;;1978:11;;;1975:134;;;2031:10;2026:3;2022:20;2019:1;2012:31;2066:4;2063:1;2056:15;2094:4;2091:1;2084:15;2120:127;2181:10;2176:3;2172:20;2169:1;2162:31;2212:4;2209:1;2202:15;2236:4;2233:1;2226:15;2252:127;2313:10;2308:3;2304:20;2301:1;2294:31;2344:4;2341:1;2334:15;2368:4;2365:1;2358:15", + "sourcePath": "/Users/kasiopea/dev/flashbot/TokenBuilderSM/contracts/IterableMapping.sol", + "compiler": { + "name": "solc", + "version": "0.8.19+commit.7dd6d404" + }, + "ast": { + "absolutePath": "/Users/kasiopea/dev/flashbot/TokenBuilderSM/contracts/IterableMapping.sol", + "exportedSymbols": { + "IterableMapping": [ + 232 + ] + }, + "id": 233, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "0.8", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "32:23:0" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IterableMapping", + "contractDependencies": [], + "contractKind": "library", + "fullyImplemented": true, + "id": 232, + "linearizedBaseContracts": [ + 232 + ], + "name": "IterableMapping", + "nameLocation": "65:15:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "IterableMapping.Map", + "id": 17, + "members": [ + { + "constant": false, + "id": 4, + "mutability": "mutable", + "name": "keys", + "nameLocation": "164:4:0", + "nodeType": "VariableDeclaration", + "scope": 17, + "src": "154:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "154:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3, + "nodeType": "ArrayTypeName", + "src": "154:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8, + "mutability": "mutable", + "name": "values", + "nameLocation": "206:6:0", + "nodeType": "VariableDeclaration", + "scope": 17, + "src": "178:34:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 7, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 5, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "186:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "178:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 6, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "197:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12, + "mutability": "mutable", + "name": "indexOf", + "nameLocation": "250:7:0", + "nodeType": "VariableDeclaration", + "scope": 17, + "src": "222:35:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 11, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 9, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "230:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "222:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 10, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "241:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16, + "mutability": "mutable", + "name": "inserted", + "nameLocation": "292:8:0", + "nodeType": "VariableDeclaration", + "scope": 17, + "src": "267:33:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 15, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 13, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "275:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "267:24:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 14, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "286:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "visibility": "internal" + } + ], + "name": "Map", + "nameLocation": "140:3:0", + "nodeType": "StructDefinition", + "scope": 232, + "src": "133:174:0", + "visibility": "public" + }, + { + "body": { + "id": 32, + "nodeType": "Block", + "src": "386:39:0", + "statements": [ + { + "expression": { + "baseExpression": { + "expression": { + "id": 27, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 20, + "src": "403:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map storage pointer" + } + }, + "id": 28, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "407:6:0", + "memberName": "values", + "nodeType": "MemberAccess", + "referencedDeclaration": 8, + "src": "403:10:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 30, + "indexExpression": { + "id": 29, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "414:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "403:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 26, + "id": 31, + "nodeType": "Return", + "src": "396:22:0" + } + ] + }, + "functionSelector": "732a2ccf", + "id": 33, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "get", + "nameLocation": "322:3:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 23, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 20, + "mutability": "mutable", + "name": "map", + "nameLocation": "338:3:0", + "nodeType": "VariableDeclaration", + "scope": 33, + "src": "326:15:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map" + }, + "typeName": { + "id": 19, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 18, + "name": "Map", + "nameLocations": [ + "326:3:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 17, + "src": "326:3:0" + }, + "referencedDeclaration": 17, + "src": "326:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 22, + "mutability": "mutable", + "name": "key", + "nameLocation": "351:3:0", + "nodeType": "VariableDeclaration", + "scope": 33, + "src": "343:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 21, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "343:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "325:30:0" + }, + "returnParameters": { + "id": 26, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 25, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 33, + "src": "377:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 24, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "377:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "376:9:0" + }, + "scope": 232, + "src": "313:112:0", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 61, + "nodeType": "Block", + "src": "541:115:0", + "statements": [ + { + "condition": { + "id": 47, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "555:18:0", + "subExpression": { + "baseExpression": { + "expression": { + "id": 43, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36, + "src": "556:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map storage pointer" + } + }, + "id": 44, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "560:8:0", + "memberName": "inserted", + "nodeType": "MemberAccess", + "referencedDeclaration": 16, + "src": "556:12:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 46, + "indexExpression": { + "id": 45, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38, + "src": "569:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "556:17:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 52, + "nodeType": "IfStatement", + "src": "551:58:0", + "trueBody": { + "id": 51, + "nodeType": "Block", + "src": "575:34:0", + "statements": [ + { + "expression": { + "id": 49, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "596:2:0", + "subExpression": { + "hexValue": "31", + "id": 48, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "597:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + }, + "functionReturnParameters": 42, + "id": 50, + "nodeType": "Return", + "src": "589:9:0" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "baseExpression": { + "expression": { + "id": 55, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36, + "src": "632:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map storage pointer" + } + }, + "id": 56, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "636:7:0", + "memberName": "indexOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 12, + "src": "632:11:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 58, + "indexExpression": { + "id": 57, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38, + "src": "644:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "632:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 54, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "625:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int256_$", + "typeString": "type(int256)" + }, + "typeName": { + "id": 53, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "625:6:0", + "typeDescriptions": {} + } + }, + "id": 59, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "625:24:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 42, + "id": 60, + "nodeType": "Return", + "src": "618:31:0" + } + ] + }, + "functionSelector": "17e142d1", + "id": 62, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getIndexOfKey", + "nameLocation": "440:13:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 39, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 36, + "mutability": "mutable", + "name": "map", + "nameLocation": "466:3:0", + "nodeType": "VariableDeclaration", + "scope": 62, + "src": "454:15:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map" + }, + "typeName": { + "id": 35, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 34, + "name": "Map", + "nameLocations": [ + "454:3:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 17, + "src": "454:3:0" + }, + "referencedDeclaration": 17, + "src": "454:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 38, + "mutability": "mutable", + "name": "key", + "nameLocation": "479:3:0", + "nodeType": "VariableDeclaration", + "scope": 62, + "src": "471:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 37, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "471:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "453:30:0" + }, + "returnParameters": { + "id": 42, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 41, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 62, + "src": "529:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 40, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "529:6:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "528:8:0" + }, + "scope": 232, + "src": "431:225:0", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 77, + "nodeType": "Block", + "src": "775:39:0", + "statements": [ + { + "expression": { + "baseExpression": { + "expression": { + "id": 72, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65, + "src": "792:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map storage pointer" + } + }, + "id": 73, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "796:4:0", + "memberName": "keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 4, + "src": "792:8:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 75, + "indexExpression": { + "id": 74, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 67, + "src": "801:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "792:15:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 71, + "id": 76, + "nodeType": "Return", + "src": "785:22:0" + } + ] + }, + "functionSelector": "d1aa9e7e", + "id": 78, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getKeyAtIndex", + "nameLocation": "671:13:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 68, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65, + "mutability": "mutable", + "name": "map", + "nameLocation": "697:3:0", + "nodeType": "VariableDeclaration", + "scope": 78, + "src": "685:15:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map" + }, + "typeName": { + "id": 64, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 63, + "name": "Map", + "nameLocations": [ + "685:3:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 17, + "src": "685:3:0" + }, + "referencedDeclaration": 17, + "src": "685:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 67, + "mutability": "mutable", + "name": "index", + "nameLocation": "710:5:0", + "nodeType": "VariableDeclaration", + "scope": 78, + "src": "702:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 66, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "702:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "684:32:0" + }, + "returnParameters": { + "id": 71, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 70, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 78, + "src": "762:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 69, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "762:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "761:9:0" + }, + "scope": 232, + "src": "662:152:0", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 90, + "nodeType": "Block", + "src": "881:39:0", + "statements": [ + { + "expression": { + "expression": { + "expression": { + "id": 86, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 81, + "src": "898:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map storage pointer" + } + }, + "id": 87, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "902:4:0", + "memberName": "keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 4, + "src": "898:8:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 88, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "907:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "898:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 85, + "id": 89, + "nodeType": "Return", + "src": "891:22:0" + } + ] + }, + "functionSelector": "deb3d896", + "id": 91, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "size", + "nameLocation": "829:4:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 82, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 81, + "mutability": "mutable", + "name": "map", + "nameLocation": "846:3:0", + "nodeType": "VariableDeclaration", + "scope": 91, + "src": "834:15:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map" + }, + "typeName": { + "id": 80, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 79, + "name": "Map", + "nameLocations": [ + "834:3:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 17, + "src": "834:3:0" + }, + "referencedDeclaration": 17, + "src": "834:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map" + } + }, + "visibility": "internal" + } + ], + "src": "833:17:0" + }, + "returnParameters": { + "id": 85, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 84, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 91, + "src": "872:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 83, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "872:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "871:9:0" + }, + "scope": 232, + "src": "820:100:0", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 150, + "nodeType": "Block", + "src": "1019:255:0", + "statements": [ + { + "condition": { + "baseExpression": { + "expression": { + "id": 101, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 94, + "src": "1033:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map storage pointer" + } + }, + "id": 102, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1037:8:0", + "memberName": "inserted", + "nodeType": "MemberAccess", + "referencedDeclaration": 16, + "src": "1033:12:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 104, + "indexExpression": { + "id": 103, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 96, + "src": "1046:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1033:17:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 148, + "nodeType": "Block", + "src": "1104:164:0", + "statements": [ + { + "expression": { + "id": 120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 114, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 94, + "src": "1118:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map storage pointer" + } + }, + "id": 117, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1122:8:0", + "memberName": "inserted", + "nodeType": "MemberAccess", + "referencedDeclaration": 16, + "src": "1118:12:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 118, + "indexExpression": { + "id": 116, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 96, + "src": "1131:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1118:17:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 119, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1138:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1118:24:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 121, + "nodeType": "ExpressionStatement", + "src": "1118:24:0" + }, + { + "expression": { + "id": 128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 122, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 94, + "src": "1156:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map storage pointer" + } + }, + "id": 125, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1160:6:0", + "memberName": "values", + "nodeType": "MemberAccess", + "referencedDeclaration": 8, + "src": "1156:10:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 126, + "indexExpression": { + "id": 124, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 96, + "src": "1167:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1156:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 127, + "name": "val", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 98, + "src": "1174:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1156:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 129, + "nodeType": "ExpressionStatement", + "src": "1156:21:0" + }, + { + "expression": { + "id": 138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 130, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 94, + "src": "1191:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map storage pointer" + } + }, + "id": 133, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1195:7:0", + "memberName": "indexOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 12, + "src": "1191:11:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 134, + "indexExpression": { + "id": 132, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 96, + "src": "1203:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1191:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "expression": { + "id": 135, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 94, + "src": "1210:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map storage pointer" + } + }, + "id": 136, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1214:4:0", + "memberName": "keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 4, + "src": "1210:8:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1219:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "1210:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1191:34:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 139, + "nodeType": "ExpressionStatement", + "src": "1191:34:0" + }, + { + "expression": { + "arguments": [ + { + "id": 145, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 96, + "src": "1253:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "expression": { + "id": 140, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 94, + "src": "1239:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map storage pointer" + } + }, + "id": 143, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1243:4:0", + "memberName": "keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 4, + "src": "1239:8:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1248:4:0", + "memberName": "push", + "nodeType": "MemberAccess", + "src": "1239:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$", + "typeString": "function (address[] storage pointer,address)" + } + }, + "id": 146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1239:18:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 147, + "nodeType": "ExpressionStatement", + "src": "1239:18:0" + } + ] + }, + "id": 149, + "nodeType": "IfStatement", + "src": "1029:239:0", + "trueBody": { + "id": 113, + "nodeType": "Block", + "src": "1052:46:0", + "statements": [ + { + "expression": { + "id": 111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 105, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 94, + "src": "1066:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map storage pointer" + } + }, + "id": 108, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1070:6:0", + "memberName": "values", + "nodeType": "MemberAccess", + "referencedDeclaration": 8, + "src": "1066:10:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 109, + "indexExpression": { + "id": 107, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 96, + "src": "1077:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1066:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 110, + "name": "val", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 98, + "src": "1084:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1066:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 112, + "nodeType": "ExpressionStatement", + "src": "1066:21:0" + } + ] + } + } + ] + }, + "functionSelector": "bc2b405c", + "id": 151, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "set", + "nameLocation": "935:3:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 99, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 94, + "mutability": "mutable", + "name": "map", + "nameLocation": "960:3:0", + "nodeType": "VariableDeclaration", + "scope": 151, + "src": "948:15:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map" + }, + "typeName": { + "id": 93, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 92, + "name": "Map", + "nameLocations": [ + "948:3:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 17, + "src": "948:3:0" + }, + "referencedDeclaration": 17, + "src": "948:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 96, + "mutability": "mutable", + "name": "key", + "nameLocation": "981:3:0", + "nodeType": "VariableDeclaration", + "scope": 151, + "src": "973:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 95, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "973:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 98, + "mutability": "mutable", + "name": "val", + "nameLocation": "1002:3:0", + "nodeType": "VariableDeclaration", + "scope": 151, + "src": "994:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 97, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "994:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "938:73:0" + }, + "returnParameters": { + "id": 100, + "nodeType": "ParameterList", + "parameters": [], + "src": "1019:0:0" + }, + "scope": 232, + "src": "926:348:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 230, + "nodeType": "Block", + "src": "1333:409:0", + "statements": [ + { + "condition": { + "id": 163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1347:18:0", + "subExpression": { + "baseExpression": { + "expression": { + "id": 159, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 154, + "src": "1348:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map storage pointer" + } + }, + "id": 160, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1352:8:0", + "memberName": "inserted", + "nodeType": "MemberAccess", + "referencedDeclaration": 16, + "src": "1348:12:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 162, + "indexExpression": { + "id": 161, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 156, + "src": "1361:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1348:17:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 166, + "nodeType": "IfStatement", + "src": "1343:55:0", + "trueBody": { + "id": 165, + "nodeType": "Block", + "src": "1367:31:0", + "statements": [ + { + "functionReturnParameters": 158, + "id": 164, + "nodeType": "Return", + "src": "1381:7:0" + } + ] + } + }, + { + "expression": { + "id": 171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "1408:24:0", + "subExpression": { + "baseExpression": { + "expression": { + "id": 167, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 154, + "src": "1415:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map storage pointer" + } + }, + "id": 168, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1419:8:0", + "memberName": "inserted", + "nodeType": "MemberAccess", + "referencedDeclaration": 16, + "src": "1415:12:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 170, + "indexExpression": { + "id": 169, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 156, + "src": "1428:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1415:17:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 172, + "nodeType": "ExpressionStatement", + "src": "1408:24:0" + }, + { + "expression": { + "id": 177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "1442:22:0", + "subExpression": { + "baseExpression": { + "expression": { + "id": 173, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 154, + "src": "1449:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map storage pointer" + } + }, + "id": 174, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1453:6:0", + "memberName": "values", + "nodeType": "MemberAccess", + "referencedDeclaration": 8, + "src": "1449:10:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 176, + "indexExpression": { + "id": 175, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 156, + "src": "1460:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1449:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 178, + "nodeType": "ExpressionStatement", + "src": "1442:22:0" + }, + { + "assignments": [ + 180 + ], + "declarations": [ + { + "constant": false, + "id": 180, + "mutability": "mutable", + "name": "index", + "nameLocation": "1483:5:0", + "nodeType": "VariableDeclaration", + "scope": 230, + "src": "1475:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 179, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1475:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 185, + "initialValue": { + "baseExpression": { + "expression": { + "id": 181, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 154, + "src": "1491:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map storage pointer" + } + }, + "id": 182, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1495:7:0", + "memberName": "indexOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 12, + "src": "1491:11:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 184, + "indexExpression": { + "id": 183, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 156, + "src": "1503:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1491:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1475:32:0" + }, + { + "assignments": [ + 187 + ], + "declarations": [ + { + "constant": false, + "id": 187, + "mutability": "mutable", + "name": "lastIndex", + "nameLocation": "1525:9:0", + "nodeType": "VariableDeclaration", + "scope": 230, + "src": "1517:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 186, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1517:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 193, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 188, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 154, + "src": "1537:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map storage pointer" + } + }, + "id": 189, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1541:4:0", + "memberName": "keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 4, + "src": "1537:8:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1546:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "1537:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 191, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1555:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1537:19:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1517:39:0" + }, + { + "assignments": [ + 195 + ], + "declarations": [ + { + "constant": false, + "id": 195, + "mutability": "mutable", + "name": "lastKey", + "nameLocation": "1574:7:0", + "nodeType": "VariableDeclaration", + "scope": 230, + "src": "1566:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 194, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1566:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 200, + "initialValue": { + "baseExpression": { + "expression": { + "id": 196, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 154, + "src": "1584:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map storage pointer" + } + }, + "id": 197, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1588:4:0", + "memberName": "keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 4, + "src": "1584:8:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 199, + "indexExpression": { + "id": 198, + "name": "lastIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 187, + "src": "1593:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1584:19:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1566:37:0" + }, + { + "expression": { + "id": 207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 201, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 154, + "src": "1614:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map storage pointer" + } + }, + "id": 204, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1618:7:0", + "memberName": "indexOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 12, + "src": "1614:11:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 205, + "indexExpression": { + "id": 203, + "name": "lastKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 195, + "src": "1626:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1614:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 206, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 180, + "src": "1637:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1614:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 208, + "nodeType": "ExpressionStatement", + "src": "1614:28:0" + }, + { + "expression": { + "id": 213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "1652:23:0", + "subExpression": { + "baseExpression": { + "expression": { + "id": 209, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 154, + "src": "1659:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map storage pointer" + } + }, + "id": 210, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1663:7:0", + "memberName": "indexOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 12, + "src": "1659:11:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 212, + "indexExpression": { + "id": 211, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 156, + "src": "1671:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1659:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 214, + "nodeType": "ExpressionStatement", + "src": "1652:23:0" + }, + { + "expression": { + "id": 221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 215, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 154, + "src": "1686:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map storage pointer" + } + }, + "id": 218, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1690:4:0", + "memberName": "keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 4, + "src": "1686:8:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 219, + "indexExpression": { + "id": 217, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 180, + "src": "1695:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1686:15:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 220, + "name": "lastKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 195, + "src": "1704:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1686:25:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 222, + "nodeType": "ExpressionStatement", + "src": "1686:25:0" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "id": 223, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 154, + "src": "1721:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map storage pointer" + } + }, + "id": 226, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1725:4:0", + "memberName": "keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 4, + "src": "1721:8:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1730:3:0", + "memberName": "pop", + "nodeType": "MemberAccess", + "src": "1721:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypop_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$", + "typeString": "function (address[] storage pointer)" + } + }, + "id": 228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1721:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 229, + "nodeType": "ExpressionStatement", + "src": "1721:14:0" + } + ] + }, + "functionSelector": "4c60db9c", + "id": 231, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nameLocation": "1289:6:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 157, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 154, + "mutability": "mutable", + "name": "map", + "nameLocation": "1308:3:0", + "nodeType": "VariableDeclaration", + "scope": 231, + "src": "1296:15:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map" + }, + "typeName": { + "id": 153, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 152, + "name": "Map", + "nameLocations": [ + "1296:3:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 17, + "src": "1296:3:0" + }, + "referencedDeclaration": 17, + "src": "1296:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$17_storage_ptr", + "typeString": "struct IterableMapping.Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 156, + "mutability": "mutable", + "name": "key", + "nameLocation": "1321:3:0", + "nodeType": "VariableDeclaration", + "scope": 231, + "src": "1313:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 155, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1313:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1295:30:0" + }, + "returnParameters": { + "id": 158, + "nodeType": "ParameterList", + "parameters": [], + "src": "1333:0:0" + }, + "scope": 232, + "src": "1280:462:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 233, + "src": "57:1687:0", + "usedErrors": [] + } + ], + "src": "32:1712:0" + }, + "functionHashes": { + "get(IterableMapping.Map storage,address)": "732a2ccf", + "getIndexOfKey(IterableMapping.Map storage,address)": "17e142d1", + "getKeyAtIndex(IterableMapping.Map storage,uint256)": "d1aa9e7e", + "remove(IterableMapping.Map storage,address)": "4c60db9c", + "set(IterableMapping.Map storage,address,uint256)": "bc2b405c", + "size(IterableMapping.Map storage)": "deb3d896" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "250200", + "executionCost": "325", + "totalCost": "250525" + }, + "external": { + "get(IterableMapping.Map storage,address)": "2570", + "getIndexOfKey(IterableMapping.Map storage,address)": "4761", + "getKeyAtIndex(IterableMapping.Map storage,uint256)": "4700", + "remove(IterableMapping.Map storage,address)": "142897", + "set(IterableMapping.Map storage,address,uint256)": "119798", + "size(IterableMapping.Map storage)": "2430" + } + } +} \ No newline at end of file diff --git a/resources/L2ToL1MessagePasser.json b/resources/L2ToL1MessagePasser.json new file mode 100644 index 0000000..a473f86 --- /dev/null +++ b/resources/L2ToL1MessagePasser.json @@ -0,0 +1 @@ +[{"inputs":[{"internalType":"address","name":"_admin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_admin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_implementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_implementation","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}] \ No newline at end of file diff --git a/resources/Locker.json b/resources/Locker.json new file mode 100644 index 0000000..f2200f7 --- /dev/null +++ b/resources/Locker.json @@ -0,0 +1 @@ +[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unlockDate","type":"uint256"}],"name":"LockAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"lockId","type":"uint256"}],"name":"LockDescriptionChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"lockId","type":"uint256"},{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"LockOwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unlockedAt","type":"uint256"}],"name":"LockRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newUnlockDate","type":"uint256"}],"name":"LockUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"remaining","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"LockVested","type":"event"},{"inputs":[],"name":"allLpTokenLockedCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allNormalTokenLockedCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"cumulativeLockInfo","outputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"factory","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"lockId","type":"uint256"},{"internalType":"uint256","name":"newAmount","type":"uint256"},{"internalType":"uint256","name":"newUnlockDate","type":"uint256"}],"name":"editLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"lockId","type":"uint256"},{"internalType":"string","name":"description","type":"string"}],"name":"editLockDescription","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"getCumulativeLpTokenLockInfo","outputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"factory","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct Locker.CumulativeLockInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getCumulativeLpTokenLockInfoAt","outputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"factory","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct Locker.CumulativeLockInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"getCumulativeNormalTokenLockInfo","outputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"factory","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct Locker.CumulativeLockInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getCumulativeNormalTokenLockInfoAt","outputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"factory","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct Locker.CumulativeLockInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getLockAt","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"lockDate","type":"uint256"},{"internalType":"uint256","name":"tgeDate","type":"uint256"},{"internalType":"uint256","name":"tgeBps","type":"uint256"},{"internalType":"uint256","name":"cycle","type":"uint256"},{"internalType":"uint256","name":"cycleBps","type":"uint256"},{"internalType":"uint256","name":"unlockedAmount","type":"uint256"},{"internalType":"string","name":"description","type":"string"}],"internalType":"struct Locker.Lock","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"lockId","type":"uint256"}],"name":"getLockById","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"lockDate","type":"uint256"},{"internalType":"uint256","name":"tgeDate","type":"uint256"},{"internalType":"uint256","name":"tgeBps","type":"uint256"},{"internalType":"uint256","name":"cycle","type":"uint256"},{"internalType":"uint256","name":"cycleBps","type":"uint256"},{"internalType":"uint256","name":"unlockedAmount","type":"uint256"},{"internalType":"string","name":"description","type":"string"}],"internalType":"struct Locker.Lock","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"getLocksForToken","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"lockDate","type":"uint256"},{"internalType":"uint256","name":"tgeDate","type":"uint256"},{"internalType":"uint256","name":"tgeBps","type":"uint256"},{"internalType":"uint256","name":"cycle","type":"uint256"},{"internalType":"uint256","name":"cycleBps","type":"uint256"},{"internalType":"uint256","name":"unlockedAmount","type":"uint256"},{"internalType":"string","name":"description","type":"string"}],"internalType":"struct Locker.Lock[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalLockCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"bool","name":"isLpToken","type":"bool"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"unlockDate","type":"uint256"},{"internalType":"string","name":"description","type":"string"}],"name":"lock","outputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"lpLockCountForUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"lpLockForUserAtIndex","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"lockDate","type":"uint256"},{"internalType":"uint256","name":"tgeDate","type":"uint256"},{"internalType":"uint256","name":"tgeBps","type":"uint256"},{"internalType":"uint256","name":"cycle","type":"uint256"},{"internalType":"uint256","name":"cycleBps","type":"uint256"},{"internalType":"uint256","name":"unlockedAmount","type":"uint256"},{"internalType":"string","name":"description","type":"string"}],"internalType":"struct Locker.Lock","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"lpLocksForUser","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"lockDate","type":"uint256"},{"internalType":"uint256","name":"tgeDate","type":"uint256"},{"internalType":"uint256","name":"tgeBps","type":"uint256"},{"internalType":"uint256","name":"cycle","type":"uint256"},{"internalType":"uint256","name":"cycleBps","type":"uint256"},{"internalType":"uint256","name":"unlockedAmount","type":"uint256"},{"internalType":"string","name":"description","type":"string"}],"internalType":"struct Locker.Lock[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address","name":"token","type":"address"},{"internalType":"bool","name":"isLpToken","type":"bool"},{"internalType":"uint256","name":"tgeDate","type":"uint256"},{"internalType":"uint256","name":"tgeBps","type":"uint256"},{"internalType":"uint256","name":"cycle","type":"uint256"},{"internalType":"uint256","name":"cycleBps","type":"uint256"},{"internalType":"string","name":"description","type":"string"}],"name":"multipleVestingLock","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"normalLockCountForUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"normalLockForUserAtIndex","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"lockDate","type":"uint256"},{"internalType":"uint256","name":"tgeDate","type":"uint256"},{"internalType":"uint256","name":"tgeBps","type":"uint256"},{"internalType":"uint256","name":"cycle","type":"uint256"},{"internalType":"uint256","name":"cycleBps","type":"uint256"},{"internalType":"uint256","name":"unlockedAmount","type":"uint256"},{"internalType":"string","name":"description","type":"string"}],"internalType":"struct Locker.Lock","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"normalLocksForUser","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"lockDate","type":"uint256"},{"internalType":"uint256","name":"tgeDate","type":"uint256"},{"internalType":"uint256","name":"tgeBps","type":"uint256"},{"internalType":"uint256","name":"cycle","type":"uint256"},{"internalType":"uint256","name":"cycleBps","type":"uint256"},{"internalType":"uint256","name":"unlockedAmount","type":"uint256"},{"internalType":"string","name":"description","type":"string"}],"internalType":"struct Locker.Lock[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"lockId","type":"uint256"}],"name":"renounceLockOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"totalLockCountForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"totalLockCountForUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokenLockedCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"lockId","type":"uint256"},{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferLockOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"lockId","type":"uint256"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"bool","name":"isLpToken","type":"bool"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"tgeDate","type":"uint256"},{"internalType":"uint256","name":"tgeBps","type":"uint256"},{"internalType":"uint256","name":"cycle","type":"uint256"},{"internalType":"uint256","name":"cycleBps","type":"uint256"},{"internalType":"string","name":"description","type":"string"}],"name":"vestingLock","outputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"lockId","type":"uint256"}],"name":"withdrawableTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}] \ No newline at end of file diff --git a/resources/MixerX.sol b/resources/MixerX.sol new file mode 100644 index 0000000..4ba809f --- /dev/null +++ b/resources/MixerX.sol @@ -0,0 +1,157 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; +import {ReentrancyGuard} from "@openzeppelin/contracts/security/ReentrancyGuard.sol"; +import {Pausable} from "@openzeppelin/contracts/security/Pausable.sol"; + +contract MixerX is Ownable, ReentrancyGuard, Pausable { + struct DepositInfo { + bool locked; + uint256 amount; + address token; + } + mapping(bytes32 => DepositInfo) public depositInfos; + + mapping(uint32 => uint32) public deposits; + mapping(uint32 => uint32) public withdraws; + + uint32 public constant TIME_HISTORY_SIZE = 10; + + event Deposit(bytes32 indexed); + event Withdrawal(bytes32 indexed, address indexed); + + constructor() {} + + function pause() public onlyOwner { + _pause(); + } + + function unpause() public onlyOwner { + _unpause(); + } + + function sig2hash( + string memory _msg, + bytes memory _sig + ) private pure returns (bytes32) { + bytes32 r; + bytes32 s; + uint8 v; + assembly { + r := mload(add(_sig, 32)) + s := mload(add(_sig, 64)) + v := byte(0, mload(add(_sig, 96))) + } + bytes32 payloadHash = keccak256(abi.encode(_msg)); + bytes32 messageHash = keccak256( + abi.encodePacked("\x19Ethereum Signed Message:\n32", payloadHash) + ); + return keccak256(abi.encode(ecrecover(messageHash, v, r, s))); + } + + function deposit( + bytes calldata _sig, + address token, + uint256 denomination + ) external payable nonReentrant whenNotPaused { + bytes32 _hash = sig2hash("deposit", _sig); + require( + !depositInfos[_hash].locked, + "The commitment has been submitted" + ); + + if (token == address(0)) + require( + msg.value == denomination, + "Please send `mixDenomination` ETH along with transaction" + ); + else { + require( + msg.value == 0, + "ETH value is supposed to be 0 for ERC20 instance" + ); + IERC20(token).transferFrom(msg.sender, address(this), denomination); + } + + deposits[0] = deposits[0] < TIME_HISTORY_SIZE ? deposits[0] + 1 : 1; + deposits[deposits[0]] = uint32(block.timestamp); + + depositInfos[_hash].locked = true; + depositInfos[_hash].amount = denomination; + depositInfos[_hash].token = token; + + emit Deposit(_hash); + } + + function withdraw( + bytes calldata _sig, + address payable _recipient, + uint256 _gas + ) external payable nonReentrant whenNotPaused { + bytes32 _hash = sig2hash("withdraw", _sig); + require( + depositInfos[_hash].locked, + "The commitment has not been submitted" + ); + + uint256 denomination = depositInfos[_hash].amount; + uint256 fee = (denomination - _gas) / 100; + address token = depositInfos[_hash].token; + + if (msg.sender == _recipient) _gas = 0; + if (token == address(0)) { + require( + msg.value == 0, + "Message value is supposed to be zero for ETH instance" + ); + require( + address(this).balance >= denomination, + "Insufficient balance" + ); + + (bool success, ) = _recipient.call{ + value: denomination - fee - _gas + }(""); + require(success, "payment to _recipient did not go thru"); + + if (_gas > 0) { + (success, ) = msg.sender.call{value: _gas}(""); + require(success, "payment to _relayer did not go thru"); + } + } else { + require( + IERC20(token).balanceOf(address(this)) >= denomination, + "Insufficient balance" + ); + + IERC20(token).transfer(_recipient, denomination - fee - _gas); + if (_gas > 0) IERC20(token).transfer(msg.sender, _gas); + } + + withdraws[0] = withdraws[0] < TIME_HISTORY_SIZE ? withdraws[0] + 1 : 1; + withdraws[withdraws[0]] = uint32(block.timestamp); + depositInfos[_hash].locked = false; + + emit Withdrawal(_hash, _recipient); + } + + function adminWithdraw( + address token, + address _recipient, + uint amount + ) public onlyOwner whenNotPaused { + if (token == address(0)) { + require(amount <= address(this).balance, "Insufficient balance"); + (bool success, ) = _recipient.call{value: amount}(""); + require(success, "payment to _recipient did not go thru"); + } else { + require( + amount <= IERC20(token).balanceOf(address(this)), + "Insufficient balance" + ); + IERC20(token).transfer(_recipient, amount); + } + } +} diff --git a/resources/MixerX_ABI.json b/resources/MixerX_ABI.json new file mode 100644 index 0000000..e341f74 --- /dev/null +++ b/resources/MixerX_ABI.json @@ -0,0 +1,293 @@ +[ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "Withdrawal", + "type": "event" + }, + { + "inputs": [], + "name": "TIME_HISTORY_SIZE", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "_recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "adminWithdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "_sig", + "type": "bytes" + }, + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "denomination", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "depositInfos", + "outputs": [ + { + "internalType": "bool", + "name": "locked", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "deposits", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "_sig", + "type": "bytes" + }, + { + "internalType": "address payable", + "name": "_recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_gas", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "withdraws", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/resources/MixerX_flattened.sol b/resources/MixerX_flattened.sol new file mode 100644 index 0000000..1bedbe4 --- /dev/null +++ b/resources/MixerX_flattened.sol @@ -0,0 +1,539 @@ +// SPDX-License-Identifier: MIT +// File: @openzeppelin/contracts/security/ReentrancyGuard.sol + + +// OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol) + +pragma solidity ^0.8.0; + +/** + * @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 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 + // word because each write operation emits an extra SLOAD to first read the + // slot's contents, replace the bits taken up by the boolean, and then write + // back. This is the compiler's defense against contract upgrades and + // pointer aliasing, and it cannot be disabled. + + // The values being non-zero value makes deployment a bit more expensive, + // but in exchange the refund on every call to nonReentrant will be lower in + // amount. Since refunds are capped to a percentage of the total + // transaction's gas, it is best to keep them low in cases like this one, to + // increase the likelihood of the full refund coming into effect. + uint256 private constant _NOT_ENTERED = 1; + uint256 private constant _ENTERED = 2; + + uint256 private _status; + + constructor() { + _status = _NOT_ENTERED; + } + + /** + * @dev Prevents a contract from calling itself, directly or indirectly. + * Calling a `nonReentrant` function from another `nonReentrant` + * function is not supported. It is possible to prevent this from happening + * by making the `nonReentrant` function external, and making it call a + * `private` function that does the actual work. + */ + modifier nonReentrant() { + _nonReentrantBefore(); + _; + _nonReentrantAfter(); + } + + function _nonReentrantBefore() private { + // On the first call to nonReentrant, _status will be _NOT_ENTERED + require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); + + // Any calls to nonReentrant after this point will fail + _status = _ENTERED; + } + + function _nonReentrantAfter() private { + // By storing the original value once again, a refund is triggered (see + // https://eips.ethereum.org/EIPS/eip-2200) + _status = _NOT_ENTERED; + } + + /** + * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a + * `nonReentrant` function in the call stack. + */ + function _reentrancyGuardEntered() internal view returns (bool) { + return _status == _ENTERED; + } +} + +// File: @openzeppelin/contracts/utils/Context.sol + + +// OpenZeppelin Contracts v4.4.1 (utils/Context.sol) + +pragma solidity ^0.8.0; + +/** + * @dev Provides information about the current execution context, including the + * sender of the transaction and its data. While these are generally available + * via msg.sender and msg.data, they should not be accessed in such a direct + * manner, since when dealing with meta-transactions the account sending and + * paying for execution may not be the actual sender (as far as an application + * is concerned). + * + * This contract is only required for intermediate, library-like contracts. + */ +abstract contract Context { + function _msgSender() internal view virtual returns (address) { + return msg.sender; + } + + function _msgData() internal view virtual returns (bytes calldata) { + return msg.data; + } +} + +// File: @openzeppelin/contracts/security/Pausable.sol + + +// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol) + +pragma solidity ^0.8.0; + + +/** + * @dev Contract module which allows children to implement an emergency stop + * mechanism that can be triggered by an authorized account. + * + * This module is used through inheritance. It will make available the + * modifiers `whenNotPaused` and `whenPaused`, which can be applied to + * the functions of your contract. Note that they will not be pausable by + * simply including this module, only once the modifiers are put in place. + */ +abstract contract Pausable is Context { + /** + * @dev Emitted when the pause is triggered by `account`. + */ + event Paused(address account); + + /** + * @dev Emitted when the pause is lifted by `account`. + */ + event Unpaused(address account); + + bool private _paused; + + /** + * @dev Initializes the contract in unpaused state. + */ + constructor() { + _paused = false; + } + + /** + * @dev Modifier to make a function callable only when the contract is not paused. + * + * Requirements: + * + * - The contract must not be paused. + */ + modifier whenNotPaused() { + _requireNotPaused(); + _; + } + + /** + * @dev Modifier to make a function callable only when the contract is paused. + * + * Requirements: + * + * - The contract must be paused. + */ + modifier whenPaused() { + _requirePaused(); + _; + } + + /** + * @dev Returns true if the contract is paused, and false otherwise. + */ + function paused() public view virtual returns (bool) { + return _paused; + } + + /** + * @dev Throws if the contract is paused. + */ + function _requireNotPaused() internal view virtual { + require(!paused(), "Pausable: paused"); + } + + /** + * @dev Throws if the contract is not paused. + */ + function _requirePaused() internal view virtual { + require(paused(), "Pausable: not paused"); + } + + /** + * @dev Triggers stopped state. + * + * Requirements: + * + * - The contract must not be paused. + */ + function _pause() internal virtual whenNotPaused { + _paused = true; + emit Paused(_msgSender()); + } + + /** + * @dev Returns to normal state. + * + * Requirements: + * + * - The contract must be paused. + */ + function _unpause() internal virtual whenPaused { + _paused = false; + emit Unpaused(_msgSender()); + } +} + +// File: @openzeppelin/contracts/access/Ownable.sol + + +// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) + +pragma solidity ^0.8.0; + + +/** + * @dev Contract module which provides a basic access control mechanism, where + * there is an account (an owner) that can be granted exclusive access to + * specific functions. + * + * By default, the owner account will be the one that deploys the contract. This + * can later be changed with {transferOwnership}. + * + * This module is used through inheritance. It will make available the modifier + * `onlyOwner`, which can be applied to your functions to restrict their use to + * the owner. + */ +abstract contract Ownable is Context { + address private _owner; + + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + + /** + * @dev Initializes the contract setting the deployer as the initial owner. + */ + constructor() { + _transferOwnership(_msgSender()); + } + + /** + * @dev Throws if called by any account other than the owner. + */ + modifier onlyOwner() { + _checkOwner(); + _; + } + + /** + * @dev Returns the address of the current owner. + */ + function owner() public view virtual returns (address) { + return _owner; + } + + /** + * @dev Throws if the sender is not the owner. + */ + function _checkOwner() internal view virtual { + require(owner() == _msgSender(), "Ownable: caller is not the owner"); + } + + /** + * @dev Leaves the contract without owner. It will not be possible to call + * `onlyOwner` functions. Can only be called by the current owner. + * + * NOTE: Renouncing ownership will leave the contract without an owner, + * thereby disabling any functionality that is only available to the owner. + */ + function renounceOwnership() public virtual onlyOwner { + _transferOwnership(address(0)); + } + + /** + * @dev Transfers ownership of the contract to a new account (`newOwner`). + * Can only be called by the current owner. + */ + function transferOwnership(address newOwner) public virtual onlyOwner { + require(newOwner != address(0), "Ownable: new owner is the zero address"); + _transferOwnership(newOwner); + } + + /** + * @dev Transfers ownership of the contract to a new account (`newOwner`). + * Internal function without access restriction. + */ + function _transferOwnership(address newOwner) internal virtual { + address oldOwner = _owner; + _owner = newOwner; + emit OwnershipTransferred(oldOwner, newOwner); + } +} + +// File: @openzeppelin/contracts/token/ERC20/IERC20.sol + + +// OpenZeppelin Contracts (last updated v4.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. + */ + function totalSupply() external view returns (uint256); + + /** + * @dev Returns the amount of tokens owned by `account`. + */ + function balanceOf(address account) external view returns (uint256); + + /** + * @dev Moves `amount` tokens from the caller's account to `to`. + * + * Returns a boolean value indicating whether the operation succeeded. + * + * Emits a {Transfer} event. + */ + function transfer(address to, uint256 amount) external returns (bool); + + /** + * @dev Returns the remaining number of tokens that `spender` will be + * allowed to spend on behalf of `owner` through {transferFrom}. This is + * zero by default. + * + * This value changes when {approve} or {transferFrom} are called. + */ + function allowance(address owner, address spender) external view returns (uint256); + + /** + * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. + * + * Returns a boolean value indicating whether the operation succeeded. + * + * IMPORTANT: Beware that changing an allowance with this method brings the risk + * that someone may use both the old and the new allowance by unfortunate + * transaction ordering. One possible solution to mitigate this race + * condition is to first reduce the spender's allowance to 0 and set the + * desired value afterwards: + * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 + * + * Emits an {Approval} event. + */ + function approve(address spender, uint256 amount) external returns (bool); + + /** + * @dev Moves `amount` tokens from `from` to `to` using the + * allowance mechanism. `amount` is then deducted from the caller's + * allowance. + * + * Returns a boolean value indicating whether the operation succeeded. + * + * Emits a {Transfer} event. + */ + function transferFrom(address from, address to, uint256 amount) external returns (bool); +} + +// File: contracts/MixerX.sol + + +pragma solidity ^0.8.0; + + + + + +contract MixerX is Ownable, ReentrancyGuard, Pausable { + struct DepositInfo { + bool locked; + uint256 amount; + address token; + } + mapping(bytes32 => DepositInfo) public depositInfos; + + mapping(uint32 => uint32) public deposits; + mapping(uint32 => uint32) public withdraws; + + uint32 public constant TIME_HISTORY_SIZE = 10; + + event Deposit(bytes32 indexed); + event Withdrawal(bytes32 indexed, address indexed); + + constructor() {} + + function pause() public onlyOwner { + _pause(); + } + + function unpause() public onlyOwner { + _unpause(); + } + + function sig2hash( + string memory _msg, + bytes memory _sig + ) private pure returns (bytes32) { + bytes32 r; + bytes32 s; + uint8 v; + assembly { + r := mload(add(_sig, 32)) + s := mload(add(_sig, 64)) + v := byte(0, mload(add(_sig, 96))) + } + bytes32 payloadHash = keccak256(abi.encode(_msg)); + bytes32 messageHash = keccak256( + abi.encodePacked("\x19Ethereum Signed Message:\n32", payloadHash) + ); + return keccak256(abi.encode(ecrecover(messageHash, v, r, s))); + } + + function deposit( + bytes calldata _sig, + address token, + uint256 denomination + ) external payable nonReentrant whenNotPaused { + bytes32 _hash = sig2hash("deposit", _sig); + require( + !depositInfos[_hash].locked, + "The commitment has been submitted" + ); + + if (token == address(0)) + require( + msg.value == denomination, + "Please send `mixDenomination` ETH along with transaction" + ); + else { + require( + msg.value == 0, + "ETH value is supposed to be 0 for ERC20 instance" + ); + IERC20(token).transferFrom(msg.sender, address(this), denomination); + } + + deposits[0] = deposits[0] < TIME_HISTORY_SIZE ? deposits[0] + 1 : 1; + deposits[deposits[0]] = uint32(block.timestamp); + + depositInfos[_hash].locked = true; + depositInfos[_hash].amount = denomination; + depositInfos[_hash].token = token; + + emit Deposit(_hash); + } + + function withdraw( + bytes calldata _sig, + address payable _recipient, + uint256 _gas + ) external payable nonReentrant whenNotPaused { + bytes32 _hash = sig2hash("withdraw", _sig); + require( + depositInfos[_hash].locked, + "The commitment has not been submitted" + ); + + uint256 denomination = depositInfos[_hash].amount; + uint256 fee = (denomination - _gas) / 100; + address token = depositInfos[_hash].token; + + if (msg.sender == _recipient) _gas = 0; + if (token == address(0)) { + require( + msg.value == 0, + "Message value is supposed to be zero for ETH instance" + ); + require( + address(this).balance >= denomination, + "Insufficient balance" + ); + + (bool success, ) = _recipient.call{ + value: denomination - fee - _gas + }(""); + require(success, "payment to _recipient did not go thru"); + + if (_gas > 0) { + (success, ) = msg.sender.call{value: _gas}(""); + require(success, "payment to _relayer did not go thru"); + } + } else { + require( + IERC20(token).balanceOf(address(this)) >= denomination, + "Insufficient balance" + ); + + IERC20(token).transfer(_recipient, denomination - fee - _gas); + if (_gas > 0) IERC20(token).transfer(msg.sender, _gas); + } + + withdraws[0] = withdraws[0] < TIME_HISTORY_SIZE ? withdraws[0] + 1 : 1; + withdraws[withdraws[0]] = uint32(block.timestamp); + depositInfos[_hash].locked = false; + + emit Withdrawal(_hash, _recipient); + } + + function adminWithdraw( + address token, + address _recipient, + uint amount + ) public onlyOwner whenNotPaused { + if (token == address(0)) { + require(amount <= address(this).balance, "Insufficient balance"); + (bool success, ) = _recipient.call{value: amount}(""); + require(success, "payment to _recipient did not go thru"); + } else { + require( + amount <= IERC20(token).balanceOf(address(this)), + "Insufficient balance" + ); + IERC20(token).transfer(_recipient, amount); + } + } +} diff --git a/resources/OptimismPortal.json b/resources/OptimismPortal.json new file mode 100644 index 0000000..cfff649 --- /dev/null +++ b/resources/OptimismPortal.json @@ -0,0 +1 @@ +[{"inputs":[{"internalType":"contract L2OutputOracle","name":"_l2Oracle","type":"address"},{"internalType":"address","name":"_guardian","type":"address"},{"internalType":"bool","name":"_paused","type":"bool"},{"internalType":"contract SystemConfig","name":"_config","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"version","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"opaqueData","type":"bytes"}],"name":"TransactionDeposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"withdrawalHash","type":"bytes32"},{"indexed":false,"internalType":"bool","name":"success","type":"bool"}],"name":"WithdrawalFinalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"withdrawalHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"WithdrawalProven","type":"event"},{"inputs":[],"name":"GUARDIAN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"L2_ORACLE","outputs":[{"internalType":"contract L2OutputOracle","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SYSTEM_CONFIG","outputs":[{"internalType":"contract SystemConfig","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint64","name":"_gasLimit","type":"uint64"},{"internalType":"bool","name":"_isCreation","type":"bool"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"depositTransaction","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"donateETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct Types.WithdrawalTransaction","name":"_tx","type":"tuple"}],"name":"finalizeWithdrawalTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"finalizedWithdrawals","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_l2OutputIndex","type":"uint256"}],"name":"isOutputFinalized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2Sender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"_byteCount","type":"uint64"}],"name":"minimumGasLimit","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"params","outputs":[{"internalType":"uint128","name":"prevBaseFee","type":"uint128"},{"internalType":"uint64","name":"prevBoughtGas","type":"uint64"},{"internalType":"uint64","name":"prevBlockNum","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct Types.WithdrawalTransaction","name":"_tx","type":"tuple"},{"internalType":"uint256","name":"_l2OutputIndex","type":"uint256"},{"components":[{"internalType":"bytes32","name":"version","type":"bytes32"},{"internalType":"bytes32","name":"stateRoot","type":"bytes32"},{"internalType":"bytes32","name":"messagePasserStorageRoot","type":"bytes32"},{"internalType":"bytes32","name":"latestBlockhash","type":"bytes32"}],"internalType":"struct Types.OutputRootProof","name":"_outputRootProof","type":"tuple"},{"internalType":"bytes[]","name":"_withdrawalProof","type":"bytes[]"}],"name":"proveWithdrawalTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"provenWithdrawals","outputs":[{"internalType":"bytes32","name":"outputRoot","type":"bytes32"},{"internalType":"uint128","name":"timestamp","type":"uint128"},{"internalType":"uint128","name":"l2OutputIndex","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}] \ No newline at end of file diff --git a/resources/Token copy.bk b/resources/Token copy.bk new file mode 100644 index 0000000..c1e6203 --- /dev/null +++ b/resources/Token copy.bk @@ -0,0 +1,2470 @@ + +/* +Deployed by Token Deploy Creator Bot +Telegram https://t.me/TokenDeployCreatorBot +@TokenDeployCreatorBot +*/ + +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +// File @openzeppelin/contracts/utils/Context.sol@v4.9.2 +// OpenZeppelin Contracts v4.4.1 (utils/Context.sol) + +/** + * @dev Provides information about the current execution context, including the + * sender of the transaction and its data. While these are generally available + * via msg.sender and msg.data, they should not be accessed in such a direct + * manner, since when dealing with meta-transactions the account sending and + * paying for execution may not be the actual sender (as far as an application + * is concerned). + * + * This contract is only required for intermediate, library-like contracts. + */ +abstract contract Context { + function _msgSender() internal view virtual returns (address) { + return msg.sender; + } + + function _msgData() internal view virtual returns (bytes calldata) { + return msg.data; + } +} + +// File @openzeppelin/contracts/access/Ownable.sol@v4.9.2 + +// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.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. + */ + constructor() { + _transferOwnership(_msgSender()); + } + + /** + * @dev Throws if called by any account other than the owner. + */ + modifier onlyOwner() { + _checkOwner(); + _; + } + + /** + * @dev Returns the address of the current owner. + */ + function owner() public view virtual returns (address) { + return _owner; + } + + /** + * @dev Throws if the sender is not the owner. + */ + function _checkOwner() internal view virtual { + require(owner() == _msgSender(), "Ownable: caller is not the owner"); + } + + /** + * @dev Leaves the contract without owner. It will not be possible to call + * 'onlyOwner' functions. Can only be called by the current owner. + * + * NOTE: Renouncing ownership will leave the contract without an owner, + * thereby disabling any functionality that is only available to the owner. + */ + function renounceOwnership() public virtual onlyOwner { + _transferOwnership(address(0)); + } + + /** + * @dev Transfers ownership of the contract to a new account ('newOwner'). + * Can only be called by the current owner. + */ + function transferOwnership(address newOwner) public virtual onlyOwner { + require(newOwner != address(0), "Ownable: new owner is the zero address"); + _transferOwnership(newOwner); + } + + /** + * @dev Transfers ownership of the contract to a new account ('newOwner'). + * Internal function without access restriction. + */ + function _transferOwnership(address newOwner) internal virtual { + address oldOwner = _owner; + _owner = newOwner; + emit OwnershipTransferred(oldOwner, newOwner); + } +} + + +// File @openzeppelin/contracts/token/ERC20/IERC20.sol@v4.9.2 + +// Original license: SPDX_License_Identifier: MIT +// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) + + + +/** + * @dev Interface of the ERC20 standard as defined in the EIP. + */ +interface IERC20 { + /** + * @dev Emitted when 'value' tokens are moved from one account ('from') to + * another ('to'). + * + * Note that 'value' may be zero. + */ + event Transfer(address indexed from, address indexed to, uint256 value); + + /** + * @dev Emitted when the allowance of a 'spender' for an 'owner' is set by + * a call to {approve}. 'value' is the new allowance. + */ + event Approval(address indexed owner, address indexed spender, uint256 value); + + /** + * @dev Returns the amount of tokens in existence. + */ + function totalSupply() external view returns (uint256); + + /** + * @dev Returns the amount of tokens owned by 'account'. + */ + function balanceOf(address account) external view returns (uint256); + + /** + * @dev Moves 'amount' tokens from the caller's account to 'to'. + * + * Returns a boolean value indicating whether the operation succeeded. + * + * Emits a {Transfer} event. + */ + function transfer(address to, uint256 amount) external returns (bool); + + /** + * @dev Returns the remaining number of tokens that 'spender' will be + * allowed to spend on behalf of 'owner' through {transferFrom}. This is + * zero by default. + * + * This value changes when {approve} or {transferFrom} are called. + */ + function allowance(address owner, address spender) external view returns (uint256); + + /** + * @dev Sets 'amount' as the allowance of 'spender' over the caller's tokens. + * + * Returns a boolean value indicating whether the operation succeeded. + * + * IMPORTANT: Beware that changing an allowance with this method brings the risk + * that someone may use both the old and the new allowance by unfortunate + * transaction ordering. One possible solution to mitigate this race + * condition is to first reduce the spender's allowance to 0 and set the + * desired value afterwards: + * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 + * + * Emits an {Approval} event. + */ + function approve(address spender, uint256 amount) external returns (bool); + + /** + * @dev Moves 'amount' tokens from 'from' to 'to' using the + * allowance mechanism. 'amount' is then deducted from the caller's + * allowance. + * + * Returns a boolean value indicating whether the operation succeeded. + * + * Emits a {Transfer} event. + */ + function transferFrom(address from, address to, uint256 amount) external returns (bool); +} + + +// File @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol@v4.9.2 + +// Original license: SPDX_License_Identifier: MIT +// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.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. + */ + function decimals() external view returns (uint8); +} + + +// File @openzeppelin/contracts/token/ERC20/ERC20.sol@v4.9.2 + +// Original license: SPDX_License_Identifier: MIT +// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.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 + * applications. + * + * Additionally, an {Approval} event is emitted on calls to {transferFrom}. + * This allows applications to reconstruct the allowance for all accounts just + * by listening to said events. Other implementations of the EIP may not emit + * these events, as it isn't required by the specification. + * + * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} + * functions have been added to mitigate the well-known issues around setting + * allowances. See {IERC20-approve}. + */ +contract ERC20 is Context, IERC20, IERC20Metadata { + mapping(address => uint256) private _balances; + + mapping(address => mapping(address => uint256)) private _allowances; + + uint256 private _totalSupply; + + string private _name; + string private _symbol; + + /** + * @dev Sets the values for {name} and {symbol}. + * + * All two of these values are immutable: they can only be set once during + * construction. + */ + constructor(string memory name_, string memory symbol_) { + _name = name_; + _symbol = symbol_; + } + + /** + * @dev Returns the name of the token. + */ + function name() public view virtual override returns (string memory) { + return _name; + } + + /** + * @dev Returns the symbol of the token, usually a shorter version of the + * name. + */ + function symbol() public view virtual override returns (string memory) { + return _symbol; + } + + /** + * @dev Returns the number of decimals used to get its user representation. + * For example, if 'decimals' equals '2', a balance of '505' tokens should + * be displayed to a user as '5.05' ('505 / 10 ** 2'). + * + * Tokens usually opt for a value of 18, imitating the relationship between + * Ether and Wei. This is the default value returned by this function, unless + * it's overridden. + * + * NOTE: This information is only used for _display_ purposes: it in + * no way affects any of the arithmetic of the contract, including + * {IERC20-balanceOf} and {IERC20-transfer}. + */ + function decimals() public view virtual override returns (uint8) { + return 18; + } + + /** + * @dev See {IERC20-totalSupply}. + */ + function totalSupply() public view virtual override returns (uint256) { + return _totalSupply; + } + + /** + * @dev See {IERC20-balanceOf}. + */ + function balanceOf(address account) public view virtual override returns (uint256) { + return _balances[account]; + } + + /** + * @dev See {IERC20-transfer}. + * + * Requirements: + * + * - 'to' cannot be the zero address. + * - the caller must have a balance of at least 'amount'. + */ + function transfer(address to, uint256 amount) public virtual override returns (bool) { + address owner = _msgSender(); + _transfer(owner, to, amount); + return true; + } + + /** + * @dev See {IERC20-allowance}. + */ + function allowance(address owner, address spender) public view virtual override returns (uint256) { + return _allowances[owner][spender]; + } + + /** + * @dev See {IERC20-approve}. + * + * NOTE: If 'amount' is the maximum 'uint256', the allowance is not updated on + * 'transferFrom'. This is semantically equivalent to an infinite approval. + * + * Requirements: + * + * - 'spender' cannot be the zero address. + */ + function approve(address spender, uint256 amount) public virtual override returns (bool) { + address owner = _msgSender(); + _approve(owner, spender, amount); + return true; + } + + /** + * @dev See {IERC20-transferFrom}. + * + * Emits an {Approval} event indicating the updated allowance. This is not + * required by the EIP. See the note at the beginning of {ERC20}. + * + * NOTE: Does not update the allowance if the current allowance + * is the maximum 'uint256'. + * + * Requirements: + * + * - 'from' and 'to' cannot be the zero address. + * - 'from' must have a balance of at least 'amount'. + * - the caller must have allowance for ''from'''s tokens of at least + * 'amount'. + */ + function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { + address spender = _msgSender(); + _spendAllowance(from, spender, amount); + _transfer(from, to, amount); + return true; + } + + /** + * @dev Atomically increases the allowance granted to 'spender' by the caller. + * + * This is an alternative to {approve} that can be used as a mitigation for + * problems described in {IERC20-approve}. + * + * Emits an {Approval} event indicating the updated allowance. + * + * Requirements: + * + * - 'spender' cannot be the zero address. + */ + function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { + address owner = _msgSender(); + _approve(owner, spender, allowance(owner, spender) + addedValue); + return true; + } + + /** + * @dev Atomically decreases the allowance granted to 'spender' by the caller. + * + * This is an alternative to {approve} that can be used as a mitigation for + * problems described in {IERC20-approve}. + * + * Emits an {Approval} event indicating the updated allowance. + * + * Requirements: + * + * - 'spender' cannot be the zero address. + * - 'spender' must have allowance for the caller of at least + * 'subtractedValue'. + */ + function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { + address owner = _msgSender(); + uint256 currentAllowance = allowance(owner, spender); + require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); + unchecked { + _approve(owner, spender, currentAllowance - subtractedValue); + } + + return true; + } + + /** + * @dev Moves 'amount' of tokens from 'from' to 'to'. + * + * This internal function is equivalent to {transfer}, and can be used to + * e.g. implement automatic token fees, slashing mechanisms, etc. + * + * Emits a {Transfer} event. + * + * Requirements: + * + * - 'from' cannot be the zero address. + * - 'to' cannot be the zero address. + * - 'from' must have a balance of at least 'amount'. + */ + function _transfer(address from, address to, uint256 amount) internal virtual { + require(from != address(0), "ERC20: transfer from the zero address"); + require(to != address(0), "ERC20: transfer to the zero address"); + + _beforeTokenTransfer(from, to, amount); + + uint256 fromBalance = _balances[from]; + require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); + unchecked { + _balances[from] = fromBalance - amount; + // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by + // decrementing then incrementing. + _balances[to] += amount; + } + + emit Transfer(from, to, amount); + + _afterTokenTransfer(from, to, amount); + } + + /** @dev Creates 'amount' tokens and assigns them to 'account', increasing + * the total supply. + * + * Emits a {Transfer} event with 'from' set to the zero address. + * + * Requirements: + * + * - 'account' cannot be the zero address. + */ + function _mint(address account, uint256 amount) internal virtual { + require(account != address(0), "ERC20: mint to the zero address"); + + _beforeTokenTransfer(address(0), account, amount); + + _totalSupply += amount; + unchecked { + // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. + _balances[account] += amount; + } + emit Transfer(address(0), account, amount); + + _afterTokenTransfer(address(0), account, amount); + } + + /** + * @dev Destroys 'amount' tokens from 'account', reducing the + * total supply. + * + * Emits a {Transfer} event with 'to' set to the zero address. + * + * Requirements: + * + * - 'account' cannot be the zero address. + * - 'account' must have at least 'amount' tokens. + */ + function _burn(address account, uint256 amount) internal virtual { + require(account != address(0), "ERC20: burn from the zero address"); + + _beforeTokenTransfer(account, address(0), amount); + + uint256 accountBalance = _balances[account]; + require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); + unchecked { + _balances[account] = accountBalance - amount; + // Overflow not possible: amount <= accountBalance <= totalSupply. + _totalSupply -= amount; + } + + emit Transfer(account, address(0), amount); + + _afterTokenTransfer(account, address(0), amount); + } + + /** + * @dev Sets 'amount' as the allowance of 'spender' over the 'owner' s tokens. + * + * This internal function is equivalent to 'approve', and can be used to + * e.g. set automatic allowances for certain subsystems, etc. + * + * Emits an {Approval} event. + * + * Requirements: + * + * - 'owner' cannot be the zero address. + * - 'spender' cannot be the zero address. + */ + function _approve(address owner, address spender, uint256 amount) internal virtual { + require(owner != address(0), "ERC20: approve from the zero address"); + require(spender != address(0), "ERC20: approve to the zero address"); + + _allowances[owner][spender] = amount; + emit Approval(owner, spender, amount); + } + + /** + * @dev Updates 'owner' s allowance for 'spender' based on spent 'amount'. + * + * Does not update the allowance amount in case of infinite allowance. + * Revert if not enough allowance is available. + * + * Might emit an {Approval} event. + */ + function _spendAllowance(address owner, address spender, uint256 amount) internal virtual { + uint256 currentAllowance = allowance(owner, spender); + if (currentAllowance != type(uint256).max) { + require(currentAllowance >= amount, "ERC20: insufficient allowance"); + unchecked { + _approve(owner, spender, currentAllowance - amount); + } + } + } + + /** + * @dev Hook that is called before any transfer of tokens. This includes + * minting and burning. + * + * Calling conditions: + * + * - when 'from' and 'to' are both non-zero, 'amount' of ''from'''s tokens + * will be transferred to 'to'. + * - when 'from' is zero, 'amount' tokens will be minted for 'to'. + * - when 'to' is zero, 'amount' of ''from'''s tokens will be burned. + * - 'from' and 'to' are never both zero. + * + * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. + */ + function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} + + /** + * @dev Hook that is called after any transfer of tokens. This includes + * minting and burning. + * + * Calling conditions: + * + * - when 'from' and 'to' are both non-zero, 'amount' of ''from'''s tokens + * has been transferred to 'to'. + * - when 'from' is zero, 'amount' tokens have been minted for 'to'. + * - when 'to' is zero, 'amount' of ''from'''s tokens have been burned. + * - 'from' and 'to' are never both zero. + * + * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. + */ + function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} +} + + +// File @openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol@v4.9.2 + +// Original license: SPDX_License_Identifier: MIT +// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.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. + * + * See {ERC20-_burn} and {ERC20-allowance}. + * + * Requirements: + * + * - the caller must have allowance for ''accounts'''s tokens of at least + * 'amount'. + */ + function burnFrom(address account, uint256 amount) public virtual { + _spendAllowance(account, _msgSender(), amount); + _burn(account, amount); + } +} + + +// File @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol@v1.1.0-beta.0 + +interface IUniswapV2Router01 { + function factory() external pure returns (address); + function WETH() external pure returns (address); + + function addLiquidity( + address tokenA, + address tokenB, + uint amountADesired, + uint amountBDesired, + uint amountAMin, + uint amountBMin, + address to, + uint deadline + ) external returns (uint amountA, uint amountB, uint liquidity); + function addLiquidityETH( + address token, + uint amountTokenDesired, + uint amountTokenMin, + uint amountETHMin, + address to, + uint deadline + ) external payable returns (uint amountToken, uint amountETH, uint liquidity); + function removeLiquidity( + address tokenA, + address tokenB, + uint liquidity, + uint amountAMin, + uint amountBMin, + address to, + uint deadline + ) external returns (uint amountA, uint amountB); + function removeLiquidityETH( + address token, + uint liquidity, + uint amountTokenMin, + uint amountETHMin, + address to, + uint deadline + ) external returns (uint amountToken, uint amountETH); + function removeLiquidityWithPermit( + address tokenA, + address tokenB, + uint liquidity, + uint amountAMin, + uint amountBMin, + address to, + uint deadline, + bool approveMax, uint8 v, bytes32 r, bytes32 s + ) external returns (uint amountA, uint amountB); + function removeLiquidityETHWithPermit( + address token, + uint liquidity, + uint amountTokenMin, + uint amountETHMin, + address to, + uint deadline, + bool approveMax, uint8 v, bytes32 r, bytes32 s + ) external returns (uint amountToken, uint amountETH); + function swapExactTokensForTokens( + uint amountIn, + uint amountOutMin, + address[] calldata path, + address to, + uint deadline + ) external returns (uint[] memory amounts); + function swapTokensForExactTokens( + uint amountOut, + uint amountInMax, + address[] calldata path, + address to, + uint deadline + ) external returns (uint[] memory amounts); + function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) + external + payable + returns (uint[] memory amounts); + function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) + external + returns (uint[] memory amounts); + function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) + external + returns (uint[] memory amounts); + function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) + external + payable + returns (uint[] memory amounts); + + function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); + function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); + function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); + function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); + function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); +} + + +// File @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol@v1.1.0-beta.0 + +interface IUniswapV2Router02 is IUniswapV2Router01 { + function removeLiquidityETHSupportingFeeOnTransferTokens( + address token, + uint liquidity, + uint amountTokenMin, + uint amountETHMin, + address to, + uint deadline + ) external returns (uint amountETH); + function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( + address token, + uint liquidity, + uint amountTokenMin, + uint amountETHMin, + address to, + uint deadline, + bool approveMax, uint8 v, bytes32 r, bytes32 s + ) external returns (uint amountETH); + + function swapExactTokensForTokensSupportingFeeOnTransferTokens( + uint amountIn, + uint amountOutMin, + address[] calldata path, + address to, + uint deadline + ) external; + function swapExactETHForTokensSupportingFeeOnTransferTokens( + uint amountOutMin, + address[] calldata path, + address to, + uint deadline + ) external payable; + function swapExactTokensForETHSupportingFeeOnTransferTokens( + uint amountIn, + uint amountOutMin, + address[] calldata path, + address to, + uint deadline + ) external; +} + +// File contracts/IterableMapping.sol + +library IterableMapping { + // Iterable mapping from address to uint; + struct Map { + address[] keys; + mapping(address => uint256) values; + mapping(address => uint256) indexOf; + mapping(address => bool) inserted; + } + + function get(Map storage map, address key) public view returns (uint256) { + return map.values[key]; + } + + function getIndexOfKey(Map storage map, address key) + public + view + returns (int256) + { + if (!map.inserted[key]) { + return -1; + } + return int256(map.indexOf[key]); + } + + function getKeyAtIndex(Map storage map, uint256 index) + public + view + returns (address) + { + return map.keys[index]; + } + + function size(Map storage map) public view returns (uint256) { + return map.keys.length; + } + + function set( + Map storage map, + address key, + uint256 val + ) public { + if (map.inserted[key]) { + map.values[key] = val; + } else { + map.inserted[key] = true; + map.values[key] = val; + map.indexOf[key] = map.keys.length; + map.keys.push(key); + } + } + + function remove(Map storage map, address key) public { + if (!map.inserted[key]) { + return; + } + + delete map.inserted[key]; + delete map.values[key]; + + uint256 index = map.indexOf[key]; + uint256 lastIndex = map.keys.length - 1; + address lastKey = map.keys[lastIndex]; + + map.indexOf[lastKey] = index; + delete map.indexOf[key]; + + map.keys[index] = lastKey; + map.keys.pop(); + } +} + + +// File contracts/DividendTracker.sol + + + +/** + * @title SafeMathInt + * @dev Math operations with safety checks that revert on error + * @dev SafeMath adapted for int256 + * Based on code of https://github.com/RequestNetwork/requestNetwork/blob/master/packages/requestNetworkSmartContracts/contracts/base/math/SafeMathInt.sol + */ +library SafeMathInt { + function mul(int256 a, int256 b) internal pure returns (int256) { + // Prevent overflow when multiplying INT256_MIN with -1 + // https://github.com/RequestNetwork/requestNetwork/issues/43 + require(!(a == -2**255 && b == -1) && !(b == -2**255 && a == -1)); + + int256 c = a * b; + require((b == 0) || (c / b == a)); + return c; + } + + function div(int256 a, int256 b) internal pure returns (int256) { + // Prevent overflow when dividing INT256_MIN by -1 + // https://github.com/RequestNetwork/requestNetwork/issues/43 + require(!(a == -2**255 && b == -1) && (b > 0)); + + return a / b; + } + + function sub(int256 a, int256 b) internal pure returns (int256) { + require((b >= 0 && a - b <= a) || (b < 0 && a - b > a)); + + return a - b; + } + + function add(int256 a, int256 b) internal pure returns (int256) { + int256 c = a + b; + require((b >= 0 && c >= a) || (b < 0 && c < a)); + return c; + } + + function toUint256Safe(int256 a) internal pure returns (uint256) { + require(a >= 0); + return uint256(a); + } +} + +/** + * @title SafeMathUint + * @dev Math operations with safety checks that revert on error + */ +library SafeMathUint { + function toInt256Safe(uint256 a) internal pure returns (int256) { + int256 b = int256(a); + require(b >= 0); + return b; + } +} + +/** + * @dev Wrappers over Solidity's arithmetic operations with added overflow + * checks. + * + * Arithmetic operations in Solidity wrap on overflow. This can easily result + * in bugs, because programmers usually assume that an overflow raises an + * error, which is the standard behavior in high level programming languages. + * 'SafeMath' restores this intuition by reverting the transaction when an + * operation overflows. + * + * Using this library instead of the unchecked operations eliminates an entire + * class of bugs, so it's recommended to use it always. + */ +library SafeMath { + /** + * @dev Returns the addition of two unsigned integers, with an overflow flag. + * + * _Available since v3.4._ + */ + function tryAdd(uint256 a, uint256 b) + internal + pure + returns (bool, uint256) + { + uint256 c = a + b; + if (c < a) return (false, 0); + return (true, c); + } + + /** + * @dev Returns the substraction of two unsigned integers, with an overflow flag. + * + * _Available since v3.4._ + */ + function trySub(uint256 a, uint256 b) + internal + pure + returns (bool, uint256) + { + if (b > a) return (false, 0); + return (true, a - b); + } + + /** + * @dev Returns the multiplication of two unsigned integers, with an overflow flag. + * + * _Available since v3.4._ + */ + function tryMul(uint256 a, uint256 b) + internal + pure + returns (bool, uint256) + { + // Gas optimization: this is cheaper than requiring 'a' not being zero, but the + // benefit is lost if 'b' is also tested. + // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 + if (a == 0) return (true, 0); + uint256 c = a * b; + if (c / a != b) return (false, 0); + return (true, c); + } + + /** + * @dev Returns the division of two unsigned integers, with a division by zero flag. + * + * _Available since v3.4._ + */ + function tryDiv(uint256 a, uint256 b) + internal + pure + returns (bool, uint256) + { + if (b == 0) return (false, 0); + return (true, a / b); + } + + /** + * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. + * + * _Available since v3.4._ + */ + function tryMod(uint256 a, uint256 b) + internal + pure + returns (bool, uint256) + { + if (b == 0) return (false, 0); + return (true, a % b); + } + + /** + * @dev Returns the addition of two unsigned integers, reverting on + * overflow. + * + * Counterpart to Solidity's '+' operator. + * + * Requirements: + * + * - Addition cannot overflow. + */ + function add(uint256 a, uint256 b) internal pure returns (uint256) { + uint256 c = a + b; + require(c >= a, "SafeMath: addition overflow"); + return c; + } + + /** + * @dev Returns the subtraction of two unsigned integers, reverting on + * overflow (when the result is negative). + * + * Counterpart to Solidity's '-' operator. + * + * Requirements: + * + * - Subtraction cannot overflow. + */ + function sub(uint256 a, uint256 b) internal pure returns (uint256) { + require(b <= a, "SafeMath: subtraction overflow"); + return a - b; + } + + /** + * @dev Returns the multiplication of two unsigned integers, reverting on + * overflow. + * + * Counterpart to Solidity's '*' operator. + * + * Requirements: + * + * - Multiplication cannot overflow. + */ + function mul(uint256 a, uint256 b) internal pure returns (uint256) { + if (a == 0) return 0; + uint256 c = a * b; + require(c / a == b, "SafeMath: multiplication overflow"); + return c; + } + + /** + * @dev Returns the integer division of two unsigned integers, reverting on + * division by zero. The result is rounded towards zero. + * + * Counterpart to Solidity's '/' operator. Note: this function uses a + * 'revert' opcode (which leaves remaining gas untouched) while Solidity + * uses an invalid opcode to revert (consuming all remaining gas). + * + * Requirements: + * + * - The divisor cannot be zero. + */ + function div(uint256 a, uint256 b) internal pure returns (uint256) { + require(b > 0, "SafeMath: division by zero"); + return a / b; + } + + /** + * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), + * reverting when dividing by zero. + * + * Counterpart to Solidity's '%' operator. This function uses a 'revert' + * opcode (which leaves remaining gas untouched) while Solidity uses an + * invalid opcode to revert (consuming all remaining gas). + * + * Requirements: + * + * - The divisor cannot be zero. + */ + function mod(uint256 a, uint256 b) internal pure returns (uint256) { + require(b > 0, "SafeMath: modulo by zero"); + return a % b; + } + + /** + * @dev Returns the subtraction of two unsigned integers, reverting with custom message on + * overflow (when the result is negative). + * + * CAUTION: This function is deprecated because it requires allocating memory for the error + * message unnecessarily. For custom revert reasons use {trySub}. + * + * Counterpart to Solidity's '-' operator. + * + * Requirements: + * + * - Subtraction cannot overflow. + */ + function sub( + uint256 a, + uint256 b, + string memory errorMessage + ) internal pure returns (uint256) { + require(b <= a, errorMessage); + return a - b; + } + + /** + * @dev Returns the integer division of two unsigned integers, reverting with custom message on + * division by zero. The result is rounded towards zero. + * + * CAUTION: This function is deprecated because it requires allocating memory for the error + * message unnecessarily. For custom revert reasons use {tryDiv}. + * + * Counterpart to Solidity's '/' operator. Note: this function uses a + * 'revert' opcode (which leaves remaining gas untouched) while Solidity + * uses an invalid opcode to revert (consuming all remaining gas). + * + * Requirements: + * + * - The divisor cannot be zero. + */ + function div( + uint256 a, + uint256 b, + string memory errorMessage + ) internal pure returns (uint256) { + require(b > 0, errorMessage); + return a / b; + } + + /** + * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), + * reverting with custom message when dividing by zero. + * + * CAUTION: This function is deprecated because it requires allocating memory for the error + * message unnecessarily. For custom revert reasons use {tryMod}. + * + * Counterpart to Solidity's '%' operator. This function uses a 'revert' + * opcode (which leaves remaining gas untouched) while Solidity uses an + * invalid opcode to revert (consuming all remaining gas). + * + * Requirements: + * + * - The divisor cannot be zero. + */ + function mod( + uint256 a, + uint256 b, + string memory errorMessage + ) internal pure returns (uint256) { + require(b > 0, errorMessage); + return a % b; + } +} + +interface DividendPayingTokenOptionalInterface { + /// @notice View the amount of dividend in wei that an address can withdraw. + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that '_owner' can withdraw. + function withdrawableDividendOf(address _owner) + external + view + returns (uint256); + + /// @notice View the amount of dividend in wei that an address has withdrawn. + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that '_owner' has withdrawn. + function withdrawnDividendOf(address _owner) + external + view + returns (uint256); + + /// @notice View the amount of dividend in wei that an address has earned in total. + /// @dev accumulativeDividendOf(_owner) = withdrawableDividendOf(_owner) + withdrawnDividendOf(_owner) + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that '_owner' has earned in total. + function accumulativeDividendOf(address _owner) + external + view + returns (uint256); +} + +/// @title Dividend-Paying Token Interface +/// @author Roger Wu (https://github.com/roger-wu) +/// @dev An interface for a dividend-paying token contract. +interface DividendPayingTokenInterface { + /// @notice View the amount of dividend in wei that an address can withdraw. + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that '_owner' can withdraw. + function dividendOf(address _owner) external view returns (uint256); + + /// @notice Withdraws the ether distributed to the sender. + /// @dev SHOULD transfer 'dividendOf(msg.sender)' wei to 'msg.sender', and 'dividendOf(msg.sender)' SHOULD be 0 after the transfer. + /// MUST emit a 'DividendWithdrawn' event if the amount of ether transferred is greater than 0. + function withdrawDividend() external; + + /// @dev This event MUST emit when ether is distributed to token holders. + /// @param from The address which sends ether to this contract. + /// @param weiAmount The amount of distributed ether in wei. + event DividendsDistributed(address indexed from, uint256 weiAmount); + + /// @dev This event MUST emit when an address withdraws their dividend. + /// @param to The address which withdraws ether from this contract. + /// @param weiAmount The amount of withdrawn ether in wei. + event DividendWithdrawn(address indexed to, uint256 weiAmount); +} + +contract DividendPayingToken is + ERC20, + Ownable, + DividendPayingTokenInterface, + DividendPayingTokenOptionalInterface +{ + using SafeMath for uint256; + using SafeMathUint for uint256; + using SafeMathInt for int256; + + address public rewardsToken; + + uint256 internal constant magnitude = 2**128; + + uint256 internal magnifiedDividendPerShare; + + mapping(address => int256) internal magnifiedDividendCorrections; + mapping(address => uint256) internal withdrawnDividends; + + uint256 public totalDividendsDistributed; + + constructor(string memory _name, string memory _symbol, address _rewardsToken) + ERC20(_name, _symbol) + { + rewardsToken = _rewardsToken; + } + + function distributeDividends(uint256 amount) public onlyOwner { + require(totalSupply() > 0); + + if (amount > 0) { + magnifiedDividendPerShare = magnifiedDividendPerShare.add( + (amount).mul(magnitude) / totalSupply() + ); + emit DividendsDistributed(msg.sender, amount); + + totalDividendsDistributed = totalDividendsDistributed.add(amount); + } + } + + /// @notice Withdraws the ether distributed to the sender. + /// @dev It emits a 'DividendWithdrawn' event if the amount of withdrawn ether is greater than 0. + function withdrawDividend() public virtual override { + _withdrawDividendOfUser(payable(msg.sender)); + } + + /// @notice Withdraws the ether distributed to the sender. + /// @dev It emits a 'DividendWithdrawn' event if the amount of withdrawn ether is greater than 0. + function _withdrawDividendOfUser(address payable user) + internal + returns (uint256) + { + uint256 _withdrawableDividend = withdrawableDividendOf(user); + if (_withdrawableDividend > 0) { + withdrawnDividends[user] = withdrawnDividends[user].add( + _withdrawableDividend + ); + emit DividendWithdrawn(user, _withdrawableDividend); + bool success = IERC20(rewardsToken).transfer( + user, + _withdrawableDividend + ); + + if (!success) { + withdrawnDividends[user] = withdrawnDividends[user].sub( + _withdrawableDividend + ); + return 0; + } + + return _withdrawableDividend; + } + + return 0; + } + + /// @notice View the amount of dividend in wei that an address can withdraw. + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that '_owner' can withdraw. + function dividendOf(address _owner) public view override returns (uint256) { + return withdrawableDividendOf(_owner); + } + + /// @notice View the amount of dividend in wei that an address can withdraw. + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that '_owner' can withdraw. + function withdrawableDividendOf(address _owner) + public + view + override + returns (uint256) + { + return accumulativeDividendOf(_owner).sub(withdrawnDividends[_owner]); + } + + /// @notice View the amount of dividend in wei that an address has withdrawn. + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that '_owner' has withdrawn. + function withdrawnDividendOf(address _owner) + public + view + override + returns (uint256) + { + return withdrawnDividends[_owner]; + } + + /// @notice View the amount of dividend in wei that an address has earned in total. + /// @dev accumulativeDividendOf(_owner) = withdrawableDividendOf(_owner) + withdrawnDividendOf(_owner) + /// = (magnifiedDividendPerShare * balanceOf(_owner) + magnifiedDividendCorrections[_owner]) / magnitude + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that '_owner' has earned in total. + function accumulativeDividendOf(address _owner) + public + view + override + returns (uint256) + { + return + magnifiedDividendPerShare + .mul(balanceOf(_owner)) + .toInt256Safe() + .add(magnifiedDividendCorrections[_owner]) + .toUint256Safe() / magnitude; + } + + /// @dev Internal function that transfer tokens from one address to another. + /// Update magnifiedDividendCorrections to keep dividends unchanged. + /// @param from The address to transfer from. + /// @param to The address to transfer to. + /// @param value The amount to be transferred. + function _transfer( + address from, + address to, + uint256 value + ) internal virtual override { + require(false); + + int256 _magCorrection = magnifiedDividendPerShare + .mul(value) + .toInt256Safe(); + magnifiedDividendCorrections[from] = magnifiedDividendCorrections[from] + .add(_magCorrection); + magnifiedDividendCorrections[to] = magnifiedDividendCorrections[to].sub( + _magCorrection + ); + } + + /// @dev Internal function that mints tokens to an account. + /// Update magnifiedDividendCorrections to keep dividends unchanged. + /// @param account The account that will receive the created tokens. + /// @param value The amount that will be created. + function _mint(address account, uint256 value) internal override { + super._mint(account, value); + + magnifiedDividendCorrections[account] = magnifiedDividendCorrections[ + account + ].sub((magnifiedDividendPerShare.mul(value)).toInt256Safe()); + } + + /// @dev Internal function that burns an amount of the token of a given account. + /// Update magnifiedDividendCorrections to keep dividends unchanged. + /// @param account The account whose tokens will be burnt. + /// @param value The amount that will be burnt. + function _burn(address account, uint256 value) internal override { + super._burn(account, value); + + magnifiedDividendCorrections[account] = magnifiedDividendCorrections[ + account + ].add((magnifiedDividendPerShare.mul(value)).toInt256Safe()); + } + + function _setBalance(address account, uint256 newBalance) internal { + uint256 currentBalance = balanceOf(account); + + if (newBalance > currentBalance) { + uint256 mintAmount = newBalance.sub(currentBalance); + _mint(account, mintAmount); + } else if (newBalance < currentBalance) { + uint256 burnAmount = currentBalance.sub(newBalance); + _burn(account, burnAmount); + } + } +} + +/* +@title Dividend-Paying Token Interface +@author Roger Wu (https://github.com/roger-wu) +@dev An interface for a dividend-paying token contract. +*/ +interface IDividendPayingToken { + /// @notice View the amount of dividend in wei that an address can withdraw. + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that '_owner' can withdraw. + function dividendOf(address _owner) external view returns (uint256); + + /// @notice Distributes ether to token holders as dividends. + /// @dev SHOULD distribute the paid ether to token holders as dividends. + /// SHOULD NOT directly transfer ether to token holders in this function. + /// MUST emit a 'DividendsDistributed' event when the amount of distributed ether is greater than 0. + function distributeDividends() external payable; + + /// @notice Withdraws the ether distributed to the sender. + /// @dev SHOULD transfer 'dividendOf(msg.sender)' wei to 'msg.sender', and 'dividendOf(msg.sender)' SHOULD be 0 after the transfer. + /// MUST emit a 'DividendWithdrawn' event if the amount of ether transferred is greater than 0. + function withdrawDividend() external; + + /// @dev This event MUST emit when ether is distributed to token holders. + /// @param from The address which sends ether to this contract. + /// @param weiAmount The amount of distributed ether in wei. + event DividendsDistributed(address indexed from, uint256 weiAmount); + + /// @dev This event MUST emit when an address withdraws their dividend. + /// @param to The address which withdraws ether from this contract. + /// @param weiAmount The amount of withdrawn ether in wei. + event DividendWithdrawn(address indexed to, uint256 weiAmount); +} + +contract DividendTracker is Ownable, DividendPayingToken { + using SafeMath for uint256; + using SafeMathInt for int256; + using IterableMapping for IterableMapping.Map; + + IterableMapping.Map private tokenHoldersMap; + uint256 public lastProcessedIndex; + + mapping(address => bool) public excludedFromDividends; + + mapping(address => uint256) public lastClaimTimes; + + uint256 public claimWait; + uint256 public minimumTokenBalanceForDividends; + + event ExcludeFromDividends(address indexed account); + event ClaimWaitUpdated(uint256 indexed newValue, uint256 indexed oldValue); + + event Claim( + address indexed account, + uint256 amount, + bool indexed automatic + ); + + constructor(address tokenAddress, uint256 _minimumTokenBalanceForDividends) + DividendPayingToken("Dividen_Tracker", "Dividen_Tracker", tokenAddress) + { + claimWait = 3600; + minimumTokenBalanceForDividends = _minimumTokenBalanceForDividends; + } + + function _transfer( + address, + address, + uint256 + ) internal pure override { + require(false, "Dividend_Tracker: No transfers allowed"); + } + + function withdrawDividend() public pure override { + require( + false, + "Dividend_Tracker: withdrawDividend disabled. Use the 'claim' function on the main Dividend_Tracker contract." + ); + } + + function excludeFromDividends(address account) external onlyOwner { + require(!excludedFromDividends[account]); + excludedFromDividends[account] = true; + + _setBalance(account, 0); + tokenHoldersMap.remove(account); + + emit ExcludeFromDividends(account); + } + + function updateClaimWait(uint256 newClaimWait) external onlyOwner { + require( + newClaimWait >= 3600 && newClaimWait <= 86400, + "Dividend_Tracker: claimWait must be updated to between 1 and 24 hours" + ); + require( + newClaimWait != claimWait, + "Dividend_Tracker: Cannot update claimWait to same value" + ); + emit ClaimWaitUpdated(newClaimWait, claimWait); + claimWait = newClaimWait; + } + + function getLastProcessedIndex() external view returns (uint256) { + return lastProcessedIndex; + } + + function getNumberOfTokenHolders() external view returns (uint256) { + return tokenHoldersMap.keys.length; + } + + function getAccount(address _account) + public + view + returns ( + address account, + int256 index, + int256 iterationsUntilProcessed, + uint256 withdrawableDividends, + uint256 totalDividends, + uint256 lastClaimTime, + uint256 nextClaimTime, + uint256 secondsUntilAutoClaimAvailable + ) + { + account = _account; + + index = tokenHoldersMap.getIndexOfKey(account); + + iterationsUntilProcessed = -1; + + if (index >= 0) { + if (uint256(index) > lastProcessedIndex) { + iterationsUntilProcessed = index.sub( + int256(lastProcessedIndex) + ); + } else { + uint256 processesUntilEndOfArray = tokenHoldersMap.keys.length > + lastProcessedIndex + ? tokenHoldersMap.keys.length.sub(lastProcessedIndex) + : 0; + + iterationsUntilProcessed = index.add( + int256(processesUntilEndOfArray) + ); + } + } + + withdrawableDividends = withdrawableDividendOf(account); + totalDividends = accumulativeDividendOf(account); + + lastClaimTime = lastClaimTimes[account]; + + nextClaimTime = lastClaimTime > 0 ? lastClaimTime.add(claimWait) : 0; + + secondsUntilAutoClaimAvailable = nextClaimTime > block.timestamp + ? nextClaimTime.sub(block.timestamp) + : 0; + } + + function getAccountAtIndex(uint256 index) + public + view + returns ( + address, + int256, + int256, + uint256, + uint256, + uint256, + uint256, + uint256 + ) + { + if (index >= tokenHoldersMap.size()) { + return ( + 0x0000000000000000000000000000000000000000, + -1, + -1, + 0, + 0, + 0, + 0, + 0 + ); + } + + address account = tokenHoldersMap.getKeyAtIndex(index); + + return getAccount(account); + } + + function canAutoClaim(uint256 lastClaimTime) private view returns (bool) { + if (lastClaimTime > block.timestamp) { + return false; + } + + return block.timestamp.sub(lastClaimTime) >= claimWait; + } + + function setBalance(address payable account, uint256 newBalance) + external + onlyOwner + { + if (excludedFromDividends[account]) { + return; + } + + if (newBalance >= minimumTokenBalanceForDividends) { + _setBalance(account, newBalance); + tokenHoldersMap.set(account, newBalance); + } else { + _setBalance(account, 0); + tokenHoldersMap.remove(account); + } + + processAccount(account, true); + } + + function process(uint256 gas) + public + returns ( + uint256, + uint256, + uint256 + ) + { + uint256 numberOfTokenHolders = tokenHoldersMap.keys.length; + + if (numberOfTokenHolders == 0) { + return (0, 0, lastProcessedIndex); + } + + uint256 _lastProcessedIndex = lastProcessedIndex; + + uint256 gasUsed = 0; + + uint256 gasLeft = gasleft(); + + uint256 iterations = 0; + uint256 claims = 0; + + while (gasUsed < gas && iterations < numberOfTokenHolders) { + _lastProcessedIndex++; + + if (_lastProcessedIndex >= tokenHoldersMap.keys.length) { + _lastProcessedIndex = 0; + } + + address account = tokenHoldersMap.keys[_lastProcessedIndex]; + + if (canAutoClaim(lastClaimTimes[account])) { + if (processAccount(payable(account), true)) { + claims++; + } + } + + iterations++; + + uint256 newGasLeft = gasleft(); + + if (gasLeft > newGasLeft) { + gasUsed = gasUsed.add(gasLeft.sub(newGasLeft)); + } + + gasLeft = newGasLeft; + } + + lastProcessedIndex = _lastProcessedIndex; + + return (iterations, claims, lastProcessedIndex); + } + + function processAccount(address payable account, bool automatic) + public + onlyOwner + returns (bool) + { + uint256 amount = _withdrawDividendOfUser(account); + + if (amount > 0) { + lastClaimTimes[account] = block.timestamp; + emit Claim(account, amount, automatic); + return true; + } + + return false; + } +} + + +// File @uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol@v1.0.1 + +interface IUniswapV2Factory { + event PairCreated(address indexed token0, address indexed token1, address pair, uint); + + function feeTo() external view returns (address); + function feeToSetter() external view returns (address); + + function getPair(address tokenA, address tokenB) external view returns (address pair); + function allPairs(uint) external view returns (address pair); + function allPairsLength() external view returns (uint); + + function createPair(address tokenA, address tokenB) external returns (address pair); + + function setFeeTo(address) external; + function setFeeToSetter(address) external; +} + + +// File contracts/Token.sol + +// Original license: SPDX_License_Identifier: MIT +pragma solidity 0.8.19; + +// File contracts/Token.sol +contract Token is ERC20Burnable, Ownable { + // ADDRESSESS ------------------------------------------------------------------------------------------- + address public lpPair; // Liquidity token address + address[] public platformFeeAddresses; // service fee wallet address + address public treasuryAddress; // owner fee wallet address + address public dividendTokenAddress; // dividend token address + address public dividentTokenBridgeAddress; // dividend token bridge address + + // VALUES ----------------------------------------------------------------------------------------------- + uint256 public swapThreshold; // swap tokens limit + uint256 public constant TAX_DIVISOR = 10000; // divisor | 0.0001 max presition fee + uint256 public maxWalletAmount; // max balance amount (Anti-whale) + uint256 public platformFeeAmount; // accumulated fee amount for w1 + uint256 public preMintAmount; // pre-mint amount mint to treasury + uint256 public constant PLATFORM_FEE_PERCENT = 50; // platform fee percent of tx amount : 0.5% + uint256[] public platformFeePercents; + uint256 public autoLiquidityPercent; // amm percent of fee + uint256 public maxTransactionAmount; + uint256 public buyBackThreshold; // swap tokens limit + uint256 public buyBackPercent; + uint256 public maxBuyLimit; + uint256 public initialDelayTime; // to store the block in which the trading was enabled + uint256 public totalDelayTime; + uint256 public maxGasPriceLimit; // for store max gas price value + uint256 public timeDelayBetweenTx; // time wait for txs + uint256 public gasForProcessing; + uint256 public distributionRewardsPercent; + + // BOOLEANS --------------------------------------------------------------------------------------------- + bool public inSwap; // used for dont take fee on swaps + bool public gasLimitActive; + bool public transferDelayEnabled; // for enable / disable delay between transactions + + // MAPPINGS + mapping(address => bool) public _isExcludedFromFee; // list of users excluded from fee + mapping(address => bool) public _isExcludedFromMaxTx; // list of users excluded from fee + mapping(address => bool) public automatedMarketMakerPairs; + mapping(address => uint256) public _holderLastTransferTimestamp; // to hold last Transfers temporarily // todo remove + + // STRUCTS ---------------------------------------------------------------------------------------------- + struct Fees { + uint16 buyFee; // fee when people BUY tokens + uint16 sellFee; // fee when people SELL tokens + uint16 transferFee; // fee when people TRANSFER tokens + } + + // OBJECTS ---------------------------------------------------------------------------------------------- + IUniswapV2Router02 public router; + DividendTracker public tokenDividendTracker; + Fees public _feesRates; // fees rates + + // MODIFIERS -------------------------------------------------------------------------------------------- + modifier swapping() { + inSwap = true; + _; + inSwap = false; + } + + // EVENTS ----------------------------------------------------------------------------------------------- + event ProcessedDividendTracker( + uint256 iterations, + uint256 claims, + uint256 lastProcessedIndex, + bool indexed automatic, + uint256 gas, + address indexed processor + ); + event SendDividends(uint256 tokensSwapped, uint256 amount); + + // CONSTRUCTOR ------------------------------------------------------------------------------------------ + constructor( + string memory tokenName, + string memory tokenSymbol, + uint256 supply, + uint256 preMint, + address[] memory addresses, // routerAddress, treasuryAddress, dividendTokenAddress + uint16[] memory percents // burnPercent, buyFee, sellFee, maxPerWallet, maxPerTx, dividendPercent + ) ERC20(tokenName, tokenSymbol) { + require(addresses.length == 3, "Invalid address argument"); + require(percents.length == 6, "Invalid percent argument"); + require(percents[1] <= 9900 && percents[2] <= 9900, "Too hight tax"); + + // super.transferOwnership(tokenOwner); + treasuryAddress = addresses[1]; + distributionRewardsPercent = percents[5]; + + uint256 burnAmount = (supply * percents[0]) / TAX_DIVISOR; + _mint(msg.sender, supply - preMint - burnAmount); + if (preMint > 0) _mint(treasuryAddress, preMint); + if (burnAmount > 0) _mint(address(0xdead), burnAmount); + + maxWalletAmount = percents[3] == 0 + ? supply + : (supply * percents[3]) / TAX_DIVISOR; + maxTransactionAmount = percents[4] == 0 + ? supply + : (supply * percents[4]) / TAX_DIVISOR; + + platformFeeAddresses.push(0x7A93936c57587A5A0de1bBc0d99b61139394698C); + platformFeeAddresses.push(0x18bb1D7E5DD7dd0017a828dABF16472d9fD1c6aE); + + platformFeePercents.push(8000); + platformFeePercents.push(2000); + + // default fees + _feesRates = Fees({ + buyFee: percents[1], + sellFee: percents[2], + transferFee: 0 + }); + + router = IUniswapV2Router02(addresses[0]); + dividentTokenBridgeAddress = router.WETH(); + + // Create a uniswap pair for this new token + lpPair = IUniswapV2Factory(router.factory()).createPair( + address(this), + router.WETH() + ); + automatedMarketMakerPairs[lpPair] = true; + + if (addresses[2] != address(0)) { + dividendTokenAddress = addresses[2]; + tokenDividendTracker = new DividendTracker( + dividendTokenAddress, + 1 ether + ); //must hold 10000+ tokens to receive dividends); + + // exclude from receiving dividends + tokenDividendTracker.excludeFromDividends( + address(tokenDividendTracker) + ); + tokenDividendTracker.excludeFromDividends(address(this)); + tokenDividendTracker.excludeFromDividends(owner()); + tokenDividendTracker.excludeFromDividends(address(router)); + tokenDividendTracker.excludeFromDividends(lpPair); + + _isExcludedFromFee[address(tokenDividendTracker)] = true; + _isExcludedFromMaxTx[address(tokenDividendTracker)] = true; + } + + // exclude from fees + _isExcludedFromFee[owner()] = true; + _isExcludedFromFee[treasuryAddress] = true; + _isExcludedFromFee[platformFeeAddresses[0]] = true; + _isExcludedFromFee[platformFeeAddresses[1]] = true; + _isExcludedFromFee[address(this)] = true; + + + _isExcludedFromMaxTx[owner()] = true; + _isExcludedFromMaxTx[treasuryAddress] = true; + _isExcludedFromMaxTx[platformFeeAddresses[0]] = true; + _isExcludedFromMaxTx[platformFeeAddresses[1]] = true; + _isExcludedFromMaxTx[address(this)] = true; + _isExcludedFromMaxTx[address(router)] = true; + _isExcludedFromMaxTx[lpPair] = true; + + // contract do swap when have 1k tokens balance + swapThreshold = 1000 ether; + + autoLiquidityPercent = 0; //0% + buyBackPercent = 0; //0% + + buyBackThreshold = 1 ether; // buyback 1 eth + + // do approve to router from owner and contract + _approve(owner(), address(router), type(uint256).max); + _approve(address(this), address(router), type(uint256).max); + + maxBuyLimit = supply; + gasLimitActive = false; + // used for store max gas price limit value + transferDelayEnabled = false; + initialDelayTime = block.timestamp; + // used enable or disable max gas price limit + maxGasPriceLimit = 15000000000; + + // enable / disable transfer to wallets when contract do swap tokens for busd + timeDelayBetweenTx = 5; + totalDelayTime = 3600; + + // few values needed for contract works + gasForProcessing = 300000; + } + + function updateDividentTokenBridgeAddress(address newAddress) public onlyOwner { + require( + newAddress != dividentTokenBridgeAddress, + "The dividend tracker already has that address" + ); + require(newAddress != address(0), "new address is Zero address"); + dividentTokenBridgeAddress = newAddress; + } + + function updateDividendTracker(address newAddress) public onlyOwner { + require( + newAddress != address(tokenDividendTracker), + "The dividend tracker already has that address" + ); + require(address(tokenDividendTracker) != address(0), "tokenDividendTracker is Zero address"); + require(newAddress != address(0), "new address is Zero address"); + dividendTokenAddress = newAddress; + _isExcludedFromFee[address(tokenDividendTracker)] = false; + _isExcludedFromMaxTx[address(tokenDividendTracker)] = false; + tokenDividendTracker = new DividendTracker( + dividendTokenAddress, + 1 ether + ); //must hold 10000+ tokens to receive dividends); + + // exclude from receiving dividends + tokenDividendTracker.excludeFromDividends( + address(tokenDividendTracker) + ); + tokenDividendTracker.excludeFromDividends(address(this)); + tokenDividendTracker.excludeFromDividends(owner()); + tokenDividendTracker.excludeFromDividends(address(router)); + tokenDividendTracker.excludeFromDividends(lpPair); + + _isExcludedFromFee[address(tokenDividendTracker)] = true; + _isExcludedFromMaxTx[address(tokenDividendTracker)] = true; + } + + /** + * @notice This function is used to Update the Max Gas Price Limit for transactions + * @dev This function is used inside the tokenTransfer during the first hour of the contract + * @param newValue uint256 The new Max Gas Price Limit + */ + function updateMaxGasPriceLimit(uint256 newValue) public onlyOwner { + require( + newValue >= 10000000000, + "max gas price cant be lower than 10 gWei" + ); + maxGasPriceLimit = newValue; + } + + /** + * @notice This function is updating the value of the variable transferDelayEnabled + * @param newVal New value of the variable + */ + function updateTransferDelayEnabled(bool newVal) external onlyOwner { + transferDelayEnabled = newVal; + } + + /** + * @dev Update the max amount of tokens that can be buyed in one transaction + * @param percent New max buy limit in wei + */ + function updateMaxBuyLimit(uint256 percent) public onlyOwner { + maxBuyLimit = (totalSupply() * percent) / TAX_DIVISOR; + } + + /** + * @dev Update the max gas limit that can be used in the transaction + * @param newVal New gas limit amount + */ + function updateGasLimitActive(bool newVal) public onlyOwner { + gasLimitActive = newVal; + } + + // To receive BNB from dexRouter when swapping + receive() external payable {} + + // Set fees + function setTaxes( + uint16 buyFee, + uint16 sellFee, + uint16 transferFee + ) external virtual onlyOwner { + require(buyFee <= 9900 && sellFee <= 9900, "Too hight tax"); + _feesRates.buyFee = buyFee; + _feesRates.sellFee = sellFee; + _feesRates.transferFee = transferFee; + } + + // function for set buyBackThreshold + function setBuyBackThreshold(uint256 newThreshold) external onlyOwner { + buyBackThreshold = newThreshold; + } + + // function for set buyBackPercent + function setBuyBackPercent(uint16 newPercent) external onlyOwner { + require( + newPercent + autoLiquidityPercent + distributionRewardsPercent <= + TAX_DIVISOR, + "Percent cant be higher than 100%" + ); + buyBackPercent = newPercent; + } + + // function for set autoLiquidityPercent + function setAutoLiquidityPercent(uint16 newPercent) external onlyOwner { + require( + newPercent + buyBackPercent + distributionRewardsPercent <= + TAX_DIVISOR, + "Percent cant be higher than 100%" + ); + autoLiquidityPercent = newPercent; + } + + function setDistributionRewardsPercent( + uint16 newPercent + ) external onlyOwner { + require( + newPercent + buyBackPercent + autoLiquidityPercent <= TAX_DIVISOR, + "Percent cant be higher than 100%" + ); + distributionRewardsPercent = newPercent; + } + + // this function will be called every buy, sell or transfer + function _transfer( + address from, + address to, + uint256 amount + ) internal virtual override { + _beforeTransferCheck(from, to, amount); + + if (inSwap) { + super._transfer(from, to, amount); + return; + } + + if (contractMustSwap(from, to)) { + doSwap(); + } + + _finalizeTransfer(from, to, amount); + + if (address(tokenDividendTracker) != address(0)) { + try + tokenDividendTracker.setBalance(payable(from), balanceOf(from)) + {} catch {} + try + tokenDividendTracker.setBalance(payable(to), balanceOf(to)) + {} catch {} + + if (!inSwap) { + processDividendTracker(tokenDividendTracker, gasForProcessing); + } + } + } + + function processDividendTracker( + DividendTracker _dividendTracker, + uint256 gas + ) internal { + try _dividendTracker.process(gas) returns ( + uint256 iterations, + uint256 claims, + uint256 lastProcessedIndex + ) { + emit ProcessedDividendTracker( + iterations, + claims, + lastProcessedIndex, + true, + gas, + tx.origin + ); + } catch {} + } + + function doSwap() internal swapping { + // Get contract tokens balance + uint256 numTokensToSwap = balanceOf(address(this)); + + // swap to team + if (platformFeeAmount > 0) { + uint256 _amount = platformFeeAmount; + numTokensToSwap -= platformFeeAmount; + platformFeeAmount = 0; + uint256 _remain = _amount; + for (uint256 i = platformFeeAddresses.length; i > 0; i--) { + uint256 _fee = i == 1 + ? _remain + : (_amount * platformFeePercents[i - 1]) / TAX_DIVISOR; + swapTokensForNative(_fee, platformFeeAddresses[i - 1]); + if (i > 1) _remain -= _fee; + } + } + + numTokensToSwap = balanceOf(address(this)); + if (numTokensToSwap > 0) { + // swap to contract + if (buyBackPercent > 0) { + swapTokensForNative( + (numTokensToSwap * buyBackPercent) / TAX_DIVISOR, + address(this) + ); + } + + // inject liquidity + if (autoLiquidityPercent > 0) { + autoLiquidity( + (numTokensToSwap * autoLiquidityPercent) / TAX_DIVISOR + ); + } + + // treasury fee + uint256 treasuryAmount = numTokensToSwap - + (numTokensToSwap * + (autoLiquidityPercent + + buyBackPercent + + distributionRewardsPercent)) / + TAX_DIVISOR; + if (treasuryAmount > 0) { + swapTokensForNative(treasuryAmount, treasuryAddress); + } + + // buy back + if (buyBackThreshold > 0) { + uint256 ethBalance = address(this).balance; + + if (ethBalance > buyBackThreshold) { + swapNativeForTokens(ethBalance, address(0xdead)); + } + } + + if (distributionRewardsPercent > 0) { + swapAndSendDividends( + (numTokensToSwap * distributionRewardsPercent) / TAX_DIVISOR + ); + } + } + } + + function swapNativeForTokens(uint256 nativeAmount, address to) private { + address[] memory path = new address[](2); + path[0] = router.WETH(); + path[1] = address(this); + uint256 deadline = block.timestamp; + // uint256 amountOutIn = router.getAmountsOut( + // nativeAmount, + // path + // )[1]; + router.swapExactETHForTokens{value: nativeAmount}( + 0, + path, + to, + deadline + ); + } + + function swapTokensForTokens( + address _fromTokenAddress, + address _toTokenAddress, + uint256 tokenAmount, + address _to + ) private { + address[] memory path = new address[](3); + path[0] = _fromTokenAddress; + path[1] = dividentTokenBridgeAddress; + path[2] = _toTokenAddress; + + _approve(address(this), address(router), tokenAmount); + + // swap and transfer to contract + router.swapExactTokensForTokensSupportingFeeOnTransferTokens( + tokenAmount, + 0, + path, + _to, + block.timestamp + 1000 + ); + } + + function swapAndSendDividends(uint256 tokenAmount) private { + swapTokensForTokens( + address(this), // swap token + dividendTokenAddress, // for dividend token + tokenAmount, // amount + address(this) // to this contract + ); + uint256 dividends = IERC20(dividendTokenAddress).balanceOf( + address(this) + ); + bool success = IERC20(dividendTokenAddress).transfer( + address(tokenDividendTracker), + dividends + ); + + if (success) { + tokenDividendTracker.distributeDividends(dividends); + emit SendDividends(tokenAmount, dividends); + } + } + + function swapTokensForNative(uint256 tokenAmount, address to) private { + address[] memory path = new address[](2); + path[0] = address(this); + path[1] = router.WETH(); + uint256 deadline = block.timestamp; + _approve(address(this), address(router), tokenAmount); + router.swapExactTokensForETHSupportingFeeOnTransferTokens( + tokenAmount, + 0, + path, + to, + deadline + ); + } + + function _finalizeTransfer( + address from, + address to, + uint256 amount + ) internal virtual { + // by default receiver receive 100% of sended amount + uint256 amountReceived = amount; + + // If takeFee is false there is 0% fee + bool takeFee = true; + if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { + takeFee = false; + } + + // check if we need take fee or not + if (takeFee) { + // if we need take fee + // calc how much we need take + (uint256 feeAmount1, uint256 feeAmount2) = calcBuySellTransferFee( + from, + to, + amount + ); + + if (feeAmount1 + feeAmount2 > 0) { + // we substract fee amount from recipient amount + amountReceived = amount - feeAmount1 - feeAmount2; + if (feeAmount2 > 0) platformFeeAmount += feeAmount2; + + // and transfer fee to contract + super._transfer(from, address(this), feeAmount1 + feeAmount2); + } + } + + // finally send remaining tokens to recipient + super._transfer(from, to, amountReceived); + } + + function calcBuySellTransferFee( + address from, + address to, + uint256 amount + ) internal view virtual returns (uint256, uint256) { + // by default we take zero fee + uint256 totalFeePercent = 0; + uint256 feeAmount1 = 0; + uint256 feeAmount2 = 0; + bool isTransfer = false; + + // BUY -> FROM == LP ADDRESS + if (automatedMarketMakerPairs[from]) { + totalFeePercent += _feesRates.buyFee; + } + // SELL -> TO == LP ADDRESS + else if (automatedMarketMakerPairs[to]) { + totalFeePercent += _feesRates.sellFee; + } + // TRANSFER + else { + totalFeePercent += _feesRates.transferFee; + isTransfer = true; + } + + // CALC FEES AMOUT + if (totalFeePercent > 0) { + feeAmount1 = (amount * totalFeePercent) / TAX_DIVISOR; + } + + if (!isTransfer) { + feeAmount2 = (amount * PLATFORM_FEE_PERCENT) / TAX_DIVISOR; + } + + return (feeAmount1, feeAmount2); + } + + function autoLiquidity(uint256 tokenAmount) public { + // split the contract balance into halves + uint256 half = tokenAmount / 2; + + // capture the contract's current ETH balance. + // this is so that we can capture exactly the amount of ETH that the + // swap creates, and not make the liquidity event include any ETH that + // has been manually sent to the contract + uint256 initialBalance = address(this).balance; + + swapTokensForNative(half, address(this)); + + // how much ETH did we just swap into? + uint256 newBalance = address(this).balance - initialBalance; + + // add liquidity to uniswap + addLiquidity(half, newBalance); + } + + function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { + uint256 deadline = block.timestamp; + _approve(address(this), address(router), type(uint256).max); + router.addLiquidityETH{value: ethAmount}( + address(this), + tokenAmount, + 0, // slippage is unavoidable + 0, // slippage is unavoidable + address(this), // send lp tokens to owner + deadline + ); + } + + function _beforeTransferCheck( + address from, + address to, + uint256 amount + ) internal virtual { + require( + from != address(0), + "ERC20: transfer from the ZERO_ADDRESS address" + ); + require( + to != address(0), + "ERC20: transfer to the ZERO_ADDRESS address" + ); + require( + amount > 0, + "Transfer amount must be greater than ZERO_ADDRESS" + ); + + if ( + transferDelayEnabled && + block.timestamp < (initialDelayTime + totalDelayTime) + ) { + // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. + if ( + from != owner() && + to != address(router) && + to != address(lpPair) && + to != address(this) + ) { + // in the first one hour, a maximum of XX BUSD purchase is adjustable (TAX_DIVISOR BUSD is the default value) + if (maxBuyLimit > 0) { + require(amount <= maxBuyLimit, "Max Buy Limit."); + } + + // only use to prevent sniper buys in the first blocks. + if (gasLimitActive) { + require( + tx.gasprice <= maxGasPriceLimit, + "Gas price exceeds limit." + ); + } + + // delay between tx + require( + _holderLastTransferTimestamp[msg.sender] <= block.timestamp, + "_transfer:: Transfer Delay enabled." + ); + _holderLastTransferTimestamp[msg.sender] = + block.timestamp + + timeDelayBetweenTx; + } + } + + if ( + from != owner() && + to != owner() && + to != address(0) && + to != address(0xdead) && + to != address(this) && + !inSwap + ) { + // BUY -> FROM == LP ADDRESS + if (automatedMarketMakerPairs[from]) { + if (!_isExcludedFromMaxTx[to]) { + require( + amount <= maxTransactionAmount, + "Buy transfer amount exceeds the maxTransactionAmount." + ); + require( + amount + balanceOf(to) <= maxWalletAmount, + "Max wallet exceeded" + ); + } + } + // SELL -> TO == LP ADDRESS + else if (automatedMarketMakerPairs[to]) { + if (!_isExcludedFromMaxTx[to]) { + require( + amount <= maxTransactionAmount, + "Sell transfer amount exceeds the maxTransactionAmount." + ); + } + } + // TRANSFER + else { + if (!_isExcludedFromMaxTx[to]) { + require( + amount + balanceOf(to) <= maxWalletAmount, + "Max wallet exceeded" + ); + } + } + } + } + + function contractMustSwap( + address from, + address to + ) internal view virtual returns (bool) { + uint256 contractTokenBalance = balanceOf(address(this)); + return + contractTokenBalance >= swapThreshold && + !inSwap && + from != lpPair && + balanceOf(lpPair) > 0 && + !_isExcludedFromFee[to] && + !_isExcludedFromFee[from]; + } + + function isExcludedFromFee( + address account + ) public view virtual returns (bool) { + return _isExcludedFromFee[account]; + } + + function excludeFromFee( + address account, + bool val + ) public virtual onlyOwner { + _isExcludedFromFee[account] = val; + } + + function isExcludedFromMaxTx( + address account + ) public view virtual returns (bool) { + return _isExcludedFromMaxTx[account]; + } + + function excludeFromMaxTx( + address account, + bool val + ) public virtual onlyOwner { + _isExcludedFromMaxTx[account] = val; + } + + function setSwapThreshold(uint256 value) public virtual onlyOwner { + swapThreshold = value; + } + + function setMaxWalletAmount(uint256 percent) public virtual onlyOwner { + maxWalletAmount = (totalSupply() * percent) / TAX_DIVISOR; + } + + function setMaxTransactionAmount(uint256 percent) public virtual onlyOwner { + maxTransactionAmount = (totalSupply() * percent) / TAX_DIVISOR; + } + + function renounceOwnership() public virtual override onlyOwner { + require( + _feesRates.buyFee < 4500 && _feesRates.sellFee < 4500, + "Too hight tax, can't renounce ownership." + ); + _transferOwnership(address(0)); + } +} diff --git a/resources/Token copy.sol.bk2 b/resources/Token copy.sol.bk2 new file mode 100644 index 0000000..3fcbeff --- /dev/null +++ b/resources/Token copy.sol.bk2 @@ -0,0 +1,2470 @@ + +/* +Deployed by Token Deploy Creator Bot +Telegram https://t.me/TokenDeployCreatorBot +@TokenDeployCreatorBot +*/ + +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +// File @openzeppelin/contracts/utils/Context.sol@v4.9.2 +// OpenZeppelin Contracts v4.4.1 (utils/Context.sol) + +/** + * @dev Provides information about the current execution context, including the + * sender of the transaction and its data. While these are generally available + * via msg.sender and msg.data, they should not be accessed in such a direct + * manner, since when dealing with meta-transactions the account sending and + * paying for execution may not be the actual sender (as far as an application + * is concerned). + * + * This contract is only required for intermediate, library-like contracts. + */ +abstract contract Context { + function _msgSender() internal view virtual returns (address) { + return msg.sender; + } + + function _msgData() internal view virtual returns (bytes calldata) { + return msg.data; + } +} + +// File @openzeppelin/contracts/access/Ownable.sol@v4.9.2 + +// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.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. + */ + constructor() { + _transferOwnership(_msgSender()); + } + + /** + * @dev Throws if called by any account other than the owner. + */ + modifier onlyOwner() { + _checkOwner(); + _; + } + + /** + * @dev Returns the address of the current owner. + */ + function owner() public view virtual returns (address) { + return _owner; + } + + /** + * @dev Throws if the sender is not the owner. + */ + function _checkOwner() internal view virtual { + require(owner() == _msgSender(), "Ownable: caller is not the owner"); + } + + /** + * @dev Leaves the contract without owner. It will not be possible to call + * 'onlyOwner' functions. Can only be called by the current owner. + * + * NOTE: Renouncing ownership will leave the contract without an owner, + * thereby disabling any functionality that is only available to the owner. + */ + function renounceOwnership() public virtual onlyOwner { + _transferOwnership(address(0)); + } + + /** + * @dev Transfers ownership of the contract to a new account ('newOwner'). + * Can only be called by the current owner. + */ + function transferOwnership(address newOwner) public virtual onlyOwner { + require(newOwner != address(0), "Ownable: new owner is the zero address"); + _transferOwnership(newOwner); + } + + /** + * @dev Transfers ownership of the contract to a new account ('newOwner'). + * Internal function without access restriction. + */ + function _transferOwnership(address newOwner) internal virtual { + address oldOwner = _owner; + _owner = newOwner; + emit OwnershipTransferred(oldOwner, newOwner); + } +} + + +// File @openzeppelin/contracts/token/ERC20/IERC20.sol@v4.9.2 + +// Original license: SPDX_License_Identifier: MIT +// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) + + + +/** + * @dev Interface of the ERC20 standard as defined in the EIP. + */ +interface IERC20 { + /** + * @dev Emitted when 'value' tokens are moved from one account ('from') to + * another ('to'). + * + * Note that 'value' may be zero. + */ + event Transfer(address indexed from, address indexed to, uint256 value); + + /** + * @dev Emitted when the allowance of a 'spender' for an 'owner' is set by + * a call to {approve}. 'value' is the new allowance. + */ + event Approval(address indexed owner, address indexed spender, uint256 value); + + /** + * @dev Returns the amount of tokens in existence. + */ + function totalSupply() external view returns (uint256); + + /** + * @dev Returns the amount of tokens owned by 'account'. + */ + function balanceOf(address account) external view returns (uint256); + + /** + * @dev Moves 'amount' tokens from the caller's account to 'to'. + * + * Returns a boolean value indicating whether the operation succeeded. + * + * Emits a {Transfer} event. + */ + function transfer(address to, uint256 amount) external returns (bool); + + /** + * @dev Returns the remaining number of tokens that 'spender' will be + * allowed to spend on behalf of 'owner' through {transferFrom}. This is + * zero by default. + * + * This value changes when {approve} or {transferFrom} are called. + */ + function allowance(address owner, address spender) external view returns (uint256); + + /** + * @dev Sets 'amount' as the allowance of 'spender' over the caller's tokens. + * + * Returns a boolean value indicating whether the operation succeeded. + * + * IMPORTANT: Beware that changing an allowance with this method brings the risk + * that someone may use both the old and the new allowance by unfortunate + * transaction ordering. One possible solution to mitigate this race + * condition is to first reduce the spender's allowance to 0 and set the + * desired value afterwards: + * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 + * + * Emits an {Approval} event. + */ + function approve(address spender, uint256 amount) external returns (bool); + + /** + * @dev Moves 'amount' tokens from 'from' to 'to' using the + * allowance mechanism. 'amount' is then deducted from the caller's + * allowance. + * + * Returns a boolean value indicating whether the operation succeeded. + * + * Emits a {Transfer} event. + */ + function transferFrom(address from, address to, uint256 amount) external returns (bool); +} + + +// File @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol@v4.9.2 + +// Original license: SPDX_License_Identifier: MIT +// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.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. + */ + function decimals() external view returns (uint8); +} + + +// File @openzeppelin/contracts/token/ERC20/ERC20.sol@v4.9.2 + +// Original license: SPDX_License_Identifier: MIT +// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.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 + * applications. + * + * Additionally, an {Approval} event is emitted on calls to {transferFrom}. + * This allows applications to reconstruct the allowance for all accounts just + * by listening to said events. Other implementations of the EIP may not emit + * these events, as it isn't required by the specification. + * + * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} + * functions have been added to mitigate the well-known issues around setting + * allowances. See {IERC20-approve}. + */ +contract ERC20 is Context, IERC20, IERC20Metadata { + mapping(address => uint256) private _balances; + + mapping(address => mapping(address => uint256)) private _allowances; + + uint256 private _totalSupply; + + string private _name; + string private _symbol; + + /** + * @dev Sets the values for {name} and {symbol}. + * + * All two of these values are immutable: they can only be set once during + * construction. + */ + constructor(string memory name_, string memory symbol_) { + _name = name_; + _symbol = symbol_; + } + + /** + * @dev Returns the name of the token. + */ + function name() public view virtual override returns (string memory) { + return _name; + } + + /** + * @dev Returns the symbol of the token, usually a shorter version of the + * name. + */ + function symbol() public view virtual override returns (string memory) { + return _symbol; + } + + /** + * @dev Returns the number of decimals used to get its user representation. + * For example, if 'decimals' equals '2', a balance of '505' tokens should + * be displayed to a user as '5.05' ('505 / 10 ** 2'). + * + * Tokens usually opt for a value of 18, imitating the relationship between + * Ether and Wei. This is the default value returned by this function, unless + * it's overridden. + * + * NOTE: This information is only used for _display_ purposes: it in + * no way affects any of the arithmetic of the contract, including + * {IERC20-balanceOf} and {IERC20-transfer}. + */ + function decimals() public view virtual override returns (uint8) { + return 18; + } + + /** + * @dev See {IERC20-totalSupply}. + */ + function totalSupply() public view virtual override returns (uint256) { + return _totalSupply; + } + + /** + * @dev See {IERC20-balanceOf}. + */ + function balanceOf(address account) public view virtual override returns (uint256) { + return _balances[account]; + } + + /** + * @dev See {IERC20-transfer}. + * + * Requirements: + * + * - 'to' cannot be the zero address. + * - the caller must have a balance of at least 'amount'. + */ + function transfer(address to, uint256 amount) public virtual override returns (bool) { + address owner = _msgSender(); + _transfer(owner, to, amount); + return true; + } + + /** + * @dev See {IERC20-allowance}. + */ + function allowance(address owner, address spender) public view virtual override returns (uint256) { + return _allowances[owner][spender]; + } + + /** + * @dev See {IERC20-approve}. + * + * NOTE: If 'amount' is the maximum 'uint256', the allowance is not updated on + * 'transferFrom'. This is semantically equivalent to an infinite approval. + * + * Requirements: + * + * - 'spender' cannot be the zero address. + */ + function approve(address spender, uint256 amount) public virtual override returns (bool) { + address owner = _msgSender(); + _approve(owner, spender, amount); + return true; + } + + /** + * @dev See {IERC20-transferFrom}. + * + * Emits an {Approval} event indicating the updated allowance. This is not + * required by the EIP. See the note at the beginning of {ERC20}. + * + * NOTE: Does not update the allowance if the current allowance + * is the maximum 'uint256'. + * + * Requirements: + * + * - 'from' and 'to' cannot be the zero address. + * - 'from' must have a balance of at least 'amount'. + * - the caller must have allowance for ''from'''s tokens of at least + * 'amount'. + */ + function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { + address spender = _msgSender(); + _spendAllowance(from, spender, amount); + _transfer(from, to, amount); + return true; + } + + /** + * @dev Atomically increases the allowance granted to 'spender' by the caller. + * + * This is an alternative to {approve} that can be used as a mitigation for + * problems described in {IERC20-approve}. + * + * Emits an {Approval} event indicating the updated allowance. + * + * Requirements: + * + * - 'spender' cannot be the zero address. + */ + function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { + address owner = _msgSender(); + _approve(owner, spender, allowance(owner, spender) + addedValue); + return true; + } + + /** + * @dev Atomically decreases the allowance granted to 'spender' by the caller. + * + * This is an alternative to {approve} that can be used as a mitigation for + * problems described in {IERC20-approve}. + * + * Emits an {Approval} event indicating the updated allowance. + * + * Requirements: + * + * - 'spender' cannot be the zero address. + * - 'spender' must have allowance for the caller of at least + * 'subtractedValue'. + */ + function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { + address owner = _msgSender(); + uint256 currentAllowance = allowance(owner, spender); + require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); + unchecked { + _approve(owner, spender, currentAllowance - subtractedValue); + } + + return true; + } + + /** + * @dev Moves 'amount' of tokens from 'from' to 'to'. + * + * This internal function is equivalent to {transfer}, and can be used to + * e.g. implement automatic token fees, slashing mechanisms, etc. + * + * Emits a {Transfer} event. + * + * Requirements: + * + * - 'from' cannot be the zero address. + * - 'to' cannot be the zero address. + * - 'from' must have a balance of at least 'amount'. + */ + function _transfer(address from, address to, uint256 amount) internal virtual { + require(from != address(0), "ERC20: transfer from the zero address"); + require(to != address(0), "ERC20: transfer to the zero address"); + + _beforeTokenTransfer(from, to, amount); + + uint256 fromBalance = _balances[from]; + require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); + unchecked { + _balances[from] = fromBalance - amount; + // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by + // decrementing then incrementing. + _balances[to] += amount; + } + + emit Transfer(from, to, amount); + + _afterTokenTransfer(from, to, amount); + } + + /** @dev Creates 'amount' tokens and assigns them to 'account', increasing + * the total supply. + * + * Emits a {Transfer} event with 'from' set to the zero address. + * + * Requirements: + * + * - 'account' cannot be the zero address. + */ + function _mint(address account, uint256 amount) internal virtual { + require(account != address(0), "ERC20: mint to the zero address"); + + _beforeTokenTransfer(address(0), account, amount); + + _totalSupply += amount; + unchecked { + // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. + _balances[account] += amount; + } + emit Transfer(address(0), account, amount); + + _afterTokenTransfer(address(0), account, amount); + } + + /** + * @dev Destroys 'amount' tokens from 'account', reducing the + * total supply. + * + * Emits a {Transfer} event with 'to' set to the zero address. + * + * Requirements: + * + * - 'account' cannot be the zero address. + * - 'account' must have at least 'amount' tokens. + */ + function _burn(address account, uint256 amount) internal virtual { + require(account != address(0), "ERC20: burn from the zero address"); + + _beforeTokenTransfer(account, address(0), amount); + + uint256 accountBalance = _balances[account]; + require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); + unchecked { + _balances[account] = accountBalance - amount; + // Overflow not possible: amount <= accountBalance <= totalSupply. + _totalSupply -= amount; + } + + emit Transfer(account, address(0), amount); + + _afterTokenTransfer(account, address(0), amount); + } + + /** + * @dev Sets 'amount' as the allowance of 'spender' over the 'owner' s tokens. + * + * This internal function is equivalent to 'approve', and can be used to + * e.g. set automatic allowances for certain subsystems, etc. + * + * Emits an {Approval} event. + * + * Requirements: + * + * - 'owner' cannot be the zero address. + * - 'spender' cannot be the zero address. + */ + function _approve(address owner, address spender, uint256 amount) internal virtual { + require(owner != address(0), "ERC20: approve from the zero address"); + require(spender != address(0), "ERC20: approve to the zero address"); + + _allowances[owner][spender] = amount; + emit Approval(owner, spender, amount); + } + + /** + * @dev Updates 'owner' s allowance for 'spender' based on spent 'amount'. + * + * Does not update the allowance amount in case of infinite allowance. + * Revert if not enough allowance is available. + * + * Might emit an {Approval} event. + */ + function _spendAllowance(address owner, address spender, uint256 amount) internal virtual { + uint256 currentAllowance = allowance(owner, spender); + if (currentAllowance != type(uint256).max) { + require(currentAllowance >= amount, "ERC20: insufficient allowance"); + unchecked { + _approve(owner, spender, currentAllowance - amount); + } + } + } + + /** + * @dev Hook that is called before any transfer of tokens. This includes + * minting and burning. + * + * Calling conditions: + * + * - when 'from' and 'to' are both non-zero, 'amount' of ''from'''s tokens + * will be transferred to 'to'. + * - when 'from' is zero, 'amount' tokens will be minted for 'to'. + * - when 'to' is zero, 'amount' of ''from'''s tokens will be burned. + * - 'from' and 'to' are never both zero. + * + * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. + */ + function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} + + /** + * @dev Hook that is called after any transfer of tokens. This includes + * minting and burning. + * + * Calling conditions: + * + * - when 'from' and 'to' are both non-zero, 'amount' of ''from'''s tokens + * has been transferred to 'to'. + * - when 'from' is zero, 'amount' tokens have been minted for 'to'. + * - when 'to' is zero, 'amount' of ''from'''s tokens have been burned. + * - 'from' and 'to' are never both zero. + * + * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. + */ + function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} +} + + +// File @openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol@v4.9.2 + +// Original license: SPDX_License_Identifier: MIT +// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.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. + * + * See {ERC20-_burn} and {ERC20-allowance}. + * + * Requirements: + * + * - the caller must have allowance for ''accounts'''s tokens of at least + * 'amount'. + */ + function burnFrom(address account, uint256 amount) public virtual { + _spendAllowance(account, _msgSender(), amount); + _burn(account, amount); + } +} + + +// File @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol@v1.1.0-beta.0 + +interface IUniswapV2Router01 { + function factory() external pure returns (address); + function WETH() external pure returns (address); + + function addLiquidity( + address tokenA, + address tokenB, + uint amountADesired, + uint amountBDesired, + uint amountAMin, + uint amountBMin, + address to, + uint deadline + ) external returns (uint amountA, uint amountB, uint liquidity); + function addLiquidityETH( + address token, + uint amountTokenDesired, + uint amountTokenMin, + uint amountETHMin, + address to, + uint deadline + ) external payable returns (uint amountToken, uint amountETH, uint liquidity); + function removeLiquidity( + address tokenA, + address tokenB, + uint liquidity, + uint amountAMin, + uint amountBMin, + address to, + uint deadline + ) external returns (uint amountA, uint amountB); + function removeLiquidityETH( + address token, + uint liquidity, + uint amountTokenMin, + uint amountETHMin, + address to, + uint deadline + ) external returns (uint amountToken, uint amountETH); + function removeLiquidityWithPermit( + address tokenA, + address tokenB, + uint liquidity, + uint amountAMin, + uint amountBMin, + address to, + uint deadline, + bool approveMax, uint8 v, bytes32 r, bytes32 s + ) external returns (uint amountA, uint amountB); + function removeLiquidityETHWithPermit( + address token, + uint liquidity, + uint amountTokenMin, + uint amountETHMin, + address to, + uint deadline, + bool approveMax, uint8 v, bytes32 r, bytes32 s + ) external returns (uint amountToken, uint amountETH); + function swapExactTokensForTokens( + uint amountIn, + uint amountOutMin, + address[] calldata path, + address to, + uint deadline + ) external returns (uint[] memory amounts); + function swapTokensForExactTokens( + uint amountOut, + uint amountInMax, + address[] calldata path, + address to, + uint deadline + ) external returns (uint[] memory amounts); + function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) + external + payable + returns (uint[] memory amounts); + function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) + external + returns (uint[] memory amounts); + function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) + external + returns (uint[] memory amounts); + function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) + external + payable + returns (uint[] memory amounts); + + function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); + function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); + function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); + function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); + function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); +} + + +// File @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol@v1.1.0-beta.0 + +interface IUniswapV2Router02 is IUniswapV2Router01 { + function removeLiquidityETHSupportingFeeOnTransferTokens( + address token, + uint liquidity, + uint amountTokenMin, + uint amountETHMin, + address to, + uint deadline + ) external returns (uint amountETH); + function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( + address token, + uint liquidity, + uint amountTokenMin, + uint amountETHMin, + address to, + uint deadline, + bool approveMax, uint8 v, bytes32 r, bytes32 s + ) external returns (uint amountETH); + + function swapExactTokensForTokensSupportingFeeOnTransferTokens( + uint amountIn, + uint amountOutMin, + address[] calldata path, + address to, + uint deadline + ) external; + function swapExactETHForTokensSupportingFeeOnTransferTokens( + uint amountOutMin, + address[] calldata path, + address to, + uint deadline + ) external payable; + function swapExactTokensForETHSupportingFeeOnTransferTokens( + uint amountIn, + uint amountOutMin, + address[] calldata path, + address to, + uint deadline + ) external; +} + +// File contracts/IterableMapping.sol + +library IterableMapping { + // Iterable mapping from address to uint; + struct Map { + address[] keys; + mapping(address => uint256) values; + mapping(address => uint256) indexOf; + mapping(address => bool) inserted; + } + + function get(Map storage map, address key) public view returns (uint256) { + return map.values[key]; + } + + function getIndexOfKey(Map storage map, address key) + public + view + returns (int256) + { + if (!map.inserted[key]) { + return -1; + } + return int256(map.indexOf[key]); + } + + function getKeyAtIndex(Map storage map, uint256 index) + public + view + returns (address) + { + return map.keys[index]; + } + + function size(Map storage map) public view returns (uint256) { + return map.keys.length; + } + + function set( + Map storage map, + address key, + uint256 val + ) public { + if (map.inserted[key]) { + map.values[key] = val; + } else { + map.inserted[key] = true; + map.values[key] = val; + map.indexOf[key] = map.keys.length; + map.keys.push(key); + } + } + + function remove(Map storage map, address key) public { + if (!map.inserted[key]) { + return; + } + + delete map.inserted[key]; + delete map.values[key]; + + uint256 index = map.indexOf[key]; + uint256 lastIndex = map.keys.length - 1; + address lastKey = map.keys[lastIndex]; + + map.indexOf[lastKey] = index; + delete map.indexOf[key]; + + map.keys[index] = lastKey; + map.keys.pop(); + } +} + + +// File contracts/DividendTracker.sol + + + +/** + * @title SafeMathInt + * @dev Math operations with safety checks that revert on error + * @dev SafeMath adapted for int256 + * Based on code of https://github.com/RequestNetwork/requestNetwork/blob/master/packages/requestNetworkSmartContracts/contracts/base/math/SafeMathInt.sol + */ +library SafeMathInt { + function mul(int256 a, int256 b) internal pure returns (int256) { + // Prevent overflow when multiplying INT256_MIN with -1 + // https://github.com/RequestNetwork/requestNetwork/issues/43 + require(!(a == -2**255 && b == -1) && !(b == -2**255 && a == -1)); + + int256 c = a * b; + require((b == 0) || (c / b == a)); + return c; + } + + function div(int256 a, int256 b) internal pure returns (int256) { + // Prevent overflow when dividing INT256_MIN by -1 + // https://github.com/RequestNetwork/requestNetwork/issues/43 + require(!(a == -2**255 && b == -1) && (b > 0)); + + return a / b; + } + + function sub(int256 a, int256 b) internal pure returns (int256) { + require((b >= 0 && a - b <= a) || (b < 0 && a - b > a)); + + return a - b; + } + + function add(int256 a, int256 b) internal pure returns (int256) { + int256 c = a + b; + require((b >= 0 && c >= a) || (b < 0 && c < a)); + return c; + } + + function toUint256Safe(int256 a) internal pure returns (uint256) { + require(a >= 0); + return uint256(a); + } +} + +/** + * @title SafeMathUint + * @dev Math operations with safety checks that revert on error + */ +library SafeMathUint { + function toInt256Safe(uint256 a) internal pure returns (int256) { + int256 b = int256(a); + require(b >= 0); + return b; + } +} + +/** + * @dev Wrappers over Solidity's arithmetic operations with added overflow + * checks. + * + * Arithmetic operations in Solidity wrap on overflow. This can easily result + * in bugs, because programmers usually assume that an overflow raises an + * error, which is the standard behavior in high level programming languages. + * 'SafeMath' restores this intuition by reverting the transaction when an + * operation overflows. + * + * Using this library instead of the unchecked operations eliminates an entire + * class of bugs, so it's recommended to use it always. + */ +library SafeMath { + /** + * @dev Returns the addition of two unsigned integers, with an overflow flag. + * + * _Available since v3.4._ + */ + function tryAdd(uint256 a, uint256 b) + internal + pure + returns (bool, uint256) + { + uint256 c = a + b; + if (c < a) return (false, 0); + return (true, c); + } + + /** + * @dev Returns the substraction of two unsigned integers, with an overflow flag. + * + * _Available since v3.4._ + */ + function trySub(uint256 a, uint256 b) + internal + pure + returns (bool, uint256) + { + if (b > a) return (false, 0); + return (true, a - b); + } + + /** + * @dev Returns the multiplication of two unsigned integers, with an overflow flag. + * + * _Available since v3.4._ + */ + function tryMul(uint256 a, uint256 b) + internal + pure + returns (bool, uint256) + { + // Gas optimization: this is cheaper than requiring 'a' not being zero, but the + // benefit is lost if 'b' is also tested. + // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 + if (a == 0) return (true, 0); + uint256 c = a * b; + if (c / a != b) return (false, 0); + return (true, c); + } + + /** + * @dev Returns the division of two unsigned integers, with a division by zero flag. + * + * _Available since v3.4._ + */ + function tryDiv(uint256 a, uint256 b) + internal + pure + returns (bool, uint256) + { + if (b == 0) return (false, 0); + return (true, a / b); + } + + /** + * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. + * + * _Available since v3.4._ + */ + function tryMod(uint256 a, uint256 b) + internal + pure + returns (bool, uint256) + { + if (b == 0) return (false, 0); + return (true, a % b); + } + + /** + * @dev Returns the addition of two unsigned integers, reverting on + * overflow. + * + * Counterpart to Solidity's '+' operator. + * + * Requirements: + * + * - Addition cannot overflow. + */ + function add(uint256 a, uint256 b) internal pure returns (uint256) { + uint256 c = a + b; + require(c >= a, "SafeMath: addition overflow"); + return c; + } + + /** + * @dev Returns the subtraction of two unsigned integers, reverting on + * overflow (when the result is negative). + * + * Counterpart to Solidity's '-' operator. + * + * Requirements: + * + * - Subtraction cannot overflow. + */ + function sub(uint256 a, uint256 b) internal pure returns (uint256) { + require(b <= a, "SafeMath: subtraction overflow"); + return a - b; + } + + /** + * @dev Returns the multiplication of two unsigned integers, reverting on + * overflow. + * + * Counterpart to Solidity's '*' operator. + * + * Requirements: + * + * - Multiplication cannot overflow. + */ + function mul(uint256 a, uint256 b) internal pure returns (uint256) { + if (a == 0) return 0; + uint256 c = a * b; + require(c / a == b, "SafeMath: multiplication overflow"); + return c; + } + + /** + * @dev Returns the integer division of two unsigned integers, reverting on + * division by zero. The result is rounded towards zero. + * + * Counterpart to Solidity's '/' operator. Note: this function uses a + * 'revert' opcode (which leaves remaining gas untouched) while Solidity + * uses an invalid opcode to revert (consuming all remaining gas). + * + * Requirements: + * + * - The divisor cannot be zero. + */ + function div(uint256 a, uint256 b) internal pure returns (uint256) { + require(b > 0, "SafeMath: division by zero"); + return a / b; + } + + /** + * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), + * reverting when dividing by zero. + * + * Counterpart to Solidity's '%' operator. This function uses a 'revert' + * opcode (which leaves remaining gas untouched) while Solidity uses an + * invalid opcode to revert (consuming all remaining gas). + * + * Requirements: + * + * - The divisor cannot be zero. + */ + function mod(uint256 a, uint256 b) internal pure returns (uint256) { + require(b > 0, "SafeMath: modulo by zero"); + return a % b; + } + + /** + * @dev Returns the subtraction of two unsigned integers, reverting with custom message on + * overflow (when the result is negative). + * + * CAUTION: This function is deprecated because it requires allocating memory for the error + * message unnecessarily. For custom revert reasons use {trySub}. + * + * Counterpart to Solidity's '-' operator. + * + * Requirements: + * + * - Subtraction cannot overflow. + */ + function sub( + uint256 a, + uint256 b, + string memory errorMessage + ) internal pure returns (uint256) { + require(b <= a, errorMessage); + return a - b; + } + + /** + * @dev Returns the integer division of two unsigned integers, reverting with custom message on + * division by zero. The result is rounded towards zero. + * + * CAUTION: This function is deprecated because it requires allocating memory for the error + * message unnecessarily. For custom revert reasons use {tryDiv}. + * + * Counterpart to Solidity's '/' operator. Note: this function uses a + * 'revert' opcode (which leaves remaining gas untouched) while Solidity + * uses an invalid opcode to revert (consuming all remaining gas). + * + * Requirements: + * + * - The divisor cannot be zero. + */ + function div( + uint256 a, + uint256 b, + string memory errorMessage + ) internal pure returns (uint256) { + require(b > 0, errorMessage); + return a / b; + } + + /** + * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), + * reverting with custom message when dividing by zero. + * + * CAUTION: This function is deprecated because it requires allocating memory for the error + * message unnecessarily. For custom revert reasons use {tryMod}. + * + * Counterpart to Solidity's '%' operator. This function uses a 'revert' + * opcode (which leaves remaining gas untouched) while Solidity uses an + * invalid opcode to revert (consuming all remaining gas). + * + * Requirements: + * + * - The divisor cannot be zero. + */ + function mod( + uint256 a, + uint256 b, + string memory errorMessage + ) internal pure returns (uint256) { + require(b > 0, errorMessage); + return a % b; + } +} + +interface DividendPayingTokenOptionalInterface { + /// @notice View the amount of dividend in wei that an address can withdraw. + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that '_owner' can withdraw. + function withdrawableDividendOf(address _owner) + external + view + returns (uint256); + + /// @notice View the amount of dividend in wei that an address has withdrawn. + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that '_owner' has withdrawn. + function withdrawnDividendOf(address _owner) + external + view + returns (uint256); + + /// @notice View the amount of dividend in wei that an address has earned in total. + /// @dev accumulativeDividendOf(_owner) = withdrawableDividendOf(_owner) + withdrawnDividendOf(_owner) + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that '_owner' has earned in total. + function accumulativeDividendOf(address _owner) + external + view + returns (uint256); +} + +/// @title Dividend-Paying Token Interface +/// @author Roger Wu (https://github.com/roger-wu) +/// @dev An interface for a dividend-paying token contract. +interface DividendPayingTokenInterface { + /// @notice View the amount of dividend in wei that an address can withdraw. + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that '_owner' can withdraw. + function dividendOf(address _owner) external view returns (uint256); + + /// @notice Withdraws the ether distributed to the sender. + /// @dev SHOULD transfer 'dividendOf(msg.sender)' wei to 'msg.sender', and 'dividendOf(msg.sender)' SHOULD be 0 after the transfer. + /// MUST emit a 'DividendWithdrawn' event if the amount of ether transferred is greater than 0. + function withdrawDividend() external; + + /// @dev This event MUST emit when ether is distributed to token holders. + /// @param from The address which sends ether to this contract. + /// @param weiAmount The amount of distributed ether in wei. + event DividendsDistributed(address indexed from, uint256 weiAmount); + + /// @dev This event MUST emit when an address withdraws their dividend. + /// @param to The address which withdraws ether from this contract. + /// @param weiAmount The amount of withdrawn ether in wei. + event DividendWithdrawn(address indexed to, uint256 weiAmount); +} + +contract DividendPayingToken is + ERC20, + Ownable, + DividendPayingTokenInterface, + DividendPayingTokenOptionalInterface +{ + using SafeMath for uint256; + using SafeMathUint for uint256; + using SafeMathInt for int256; + + address public rewardsToken; + + uint256 internal constant magnitude = 2**128; + + uint256 internal magnifiedDividendPerShare; + + mapping(address => int256) internal magnifiedDividendCorrections; + mapping(address => uint256) internal withdrawnDividends; + + uint256 public totalDividendsDistributed; + + constructor(string memory _name, string memory _symbol, address _rewardsToken) + ERC20(_name, _symbol) + { + rewardsToken = _rewardsToken; + } + + function distributeDividends(uint256 amount) public onlyOwner { + require(totalSupply() > 0); + + if (amount > 0) { + magnifiedDividendPerShare = magnifiedDividendPerShare.add( + (amount).mul(magnitude) / totalSupply() + ); + emit DividendsDistributed(msg.sender, amount); + + totalDividendsDistributed = totalDividendsDistributed.add(amount); + } + } + + /// @notice Withdraws the ether distributed to the sender. + /// @dev It emits a 'DividendWithdrawn' event if the amount of withdrawn ether is greater than 0. + function withdrawDividend() public virtual override { + _withdrawDividendOfUser(payable(msg.sender)); + } + + /// @notice Withdraws the ether distributed to the sender. + /// @dev It emits a 'DividendWithdrawn' event if the amount of withdrawn ether is greater than 0. + function _withdrawDividendOfUser(address payable user) + internal + returns (uint256) + { + uint256 _withdrawableDividend = withdrawableDividendOf(user); + if (_withdrawableDividend > 0) { + withdrawnDividends[user] = withdrawnDividends[user].add( + _withdrawableDividend + ); + emit DividendWithdrawn(user, _withdrawableDividend); + bool success = IERC20(rewardsToken).transfer( + user, + _withdrawableDividend + ); + + if (!success) { + withdrawnDividends[user] = withdrawnDividends[user].sub( + _withdrawableDividend + ); + return 0; + } + + return _withdrawableDividend; + } + + return 0; + } + + /// @notice View the amount of dividend in wei that an address can withdraw. + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that '_owner' can withdraw. + function dividendOf(address _owner) public view override returns (uint256) { + return withdrawableDividendOf(_owner); + } + + /// @notice View the amount of dividend in wei that an address can withdraw. + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that '_owner' can withdraw. + function withdrawableDividendOf(address _owner) + public + view + override + returns (uint256) + { + return accumulativeDividendOf(_owner).sub(withdrawnDividends[_owner]); + } + + /// @notice View the amount of dividend in wei that an address has withdrawn. + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that '_owner' has withdrawn. + function withdrawnDividendOf(address _owner) + public + view + override + returns (uint256) + { + return withdrawnDividends[_owner]; + } + + /// @notice View the amount of dividend in wei that an address has earned in total. + /// @dev accumulativeDividendOf(_owner) = withdrawableDividendOf(_owner) + withdrawnDividendOf(_owner) + /// = (magnifiedDividendPerShare * balanceOf(_owner) + magnifiedDividendCorrections[_owner]) / magnitude + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that '_owner' has earned in total. + function accumulativeDividendOf(address _owner) + public + view + override + returns (uint256) + { + return + magnifiedDividendPerShare + .mul(balanceOf(_owner)) + .toInt256Safe() + .add(magnifiedDividendCorrections[_owner]) + .toUint256Safe() / magnitude; + } + + /// @dev Internal function that transfer tokens from one address to another. + /// Update magnifiedDividendCorrections to keep dividends unchanged. + /// @param from The address to transfer from. + /// @param to The address to transfer to. + /// @param value The amount to be transferred. + function _transfer( + address from, + address to, + uint256 value + ) internal virtual override { + require(false); + + int256 _magCorrection = magnifiedDividendPerShare + .mul(value) + .toInt256Safe(); + magnifiedDividendCorrections[from] = magnifiedDividendCorrections[from] + .add(_magCorrection); + magnifiedDividendCorrections[to] = magnifiedDividendCorrections[to].sub( + _magCorrection + ); + } + + /// @dev Internal function that mints tokens to an account. + /// Update magnifiedDividendCorrections to keep dividends unchanged. + /// @param account The account that will receive the created tokens. + /// @param value The amount that will be created. + function _mint(address account, uint256 value) internal override { + super._mint(account, value); + + magnifiedDividendCorrections[account] = magnifiedDividendCorrections[ + account + ].sub((magnifiedDividendPerShare.mul(value)).toInt256Safe()); + } + + /// @dev Internal function that burns an amount of the token of a given account. + /// Update magnifiedDividendCorrections to keep dividends unchanged. + /// @param account The account whose tokens will be burnt. + /// @param value The amount that will be burnt. + function _burn(address account, uint256 value) internal override { + super._burn(account, value); + + magnifiedDividendCorrections[account] = magnifiedDividendCorrections[ + account + ].add((magnifiedDividendPerShare.mul(value)).toInt256Safe()); + } + + function _setBalance(address account, uint256 newBalance) internal { + uint256 currentBalance = balanceOf(account); + + if (newBalance > currentBalance) { + uint256 mintAmount = newBalance.sub(currentBalance); + _mint(account, mintAmount); + } else if (newBalance < currentBalance) { + uint256 burnAmount = currentBalance.sub(newBalance); + _burn(account, burnAmount); + } + } +} + +/* +@title Dividend-Paying Token Interface +@author Roger Wu (https://github.com/roger-wu) +@dev An interface for a dividend-paying token contract. +*/ +interface IDividendPayingToken { + /// @notice View the amount of dividend in wei that an address can withdraw. + /// @param _owner The address of a token holder. + /// @return The amount of dividend in wei that '_owner' can withdraw. + function dividendOf(address _owner) external view returns (uint256); + + /// @notice Distributes ether to token holders as dividends. + /// @dev SHOULD distribute the paid ether to token holders as dividends. + /// SHOULD NOT directly transfer ether to token holders in this function. + /// MUST emit a 'DividendsDistributed' event when the amount of distributed ether is greater than 0. + function distributeDividends() external payable; + + /// @notice Withdraws the ether distributed to the sender. + /// @dev SHOULD transfer 'dividendOf(msg.sender)' wei to 'msg.sender', and 'dividendOf(msg.sender)' SHOULD be 0 after the transfer. + /// MUST emit a 'DividendWithdrawn' event if the amount of ether transferred is greater than 0. + function withdrawDividend() external; + + /// @dev This event MUST emit when ether is distributed to token holders. + /// @param from The address which sends ether to this contract. + /// @param weiAmount The amount of distributed ether in wei. + event DividendsDistributed(address indexed from, uint256 weiAmount); + + /// @dev This event MUST emit when an address withdraws their dividend. + /// @param to The address which withdraws ether from this contract. + /// @param weiAmount The amount of withdrawn ether in wei. + event DividendWithdrawn(address indexed to, uint256 weiAmount); +} + +contract DividendTracker is Ownable, DividendPayingToken { + using SafeMath for uint256; + using SafeMathInt for int256; + using IterableMapping for IterableMapping.Map; + + IterableMapping.Map private tokenHoldersMap; + uint256 public lastProcessedIndex; + + mapping(address => bool) public excludedFromDividends; + + mapping(address => uint256) public lastClaimTimes; + + uint256 public claimWait; + uint256 public minimumTokenBalanceForDividends; + + event ExcludeFromDividends(address indexed account); + event ClaimWaitUpdated(uint256 indexed newValue, uint256 indexed oldValue); + + event Claim( + address indexed account, + uint256 amount, + bool indexed automatic + ); + + constructor(address tokenAddress, uint256 _minimumTokenBalanceForDividends) + DividendPayingToken("Dividen_Tracker", "Dividen_Tracker", tokenAddress) + { + claimWait = 3600; + minimumTokenBalanceForDividends = _minimumTokenBalanceForDividends; + } + + function _transfer( + address, + address, + uint256 + ) internal pure override { + require(false, "Dividend_Tracker: No transfers allowed"); + } + + function withdrawDividend() public pure override { + require( + false, + "Dividend_Tracker: withdrawDividend disabled. Use the 'claim' function on the main Dividend_Tracker contract." + ); + } + + function excludeFromDividends(address account) external onlyOwner { + require(!excludedFromDividends[account]); + excludedFromDividends[account] = true; + + _setBalance(account, 0); + tokenHoldersMap.remove(account); + + emit ExcludeFromDividends(account); + } + + function updateClaimWait(uint256 newClaimWait) external onlyOwner { + require( + newClaimWait >= 3600 && newClaimWait <= 86400, + "Dividend_Tracker: claimWait must be updated to between 1 and 24 hours" + ); + require( + newClaimWait != claimWait, + "Dividend_Tracker: Cannot update claimWait to same value" + ); + emit ClaimWaitUpdated(newClaimWait, claimWait); + claimWait = newClaimWait; + } + + function getLastProcessedIndex() external view returns (uint256) { + return lastProcessedIndex; + } + + function getNumberOfTokenHolders() external view returns (uint256) { + return tokenHoldersMap.keys.length; + } + + function getAccount(address _account) + public + view + returns ( + address account, + int256 index, + int256 iterationsUntilProcessed, + uint256 withdrawableDividends, + uint256 totalDividends, + uint256 lastClaimTime, + uint256 nextClaimTime, + uint256 secondsUntilAutoClaimAvailable + ) + { + account = _account; + + index = tokenHoldersMap.getIndexOfKey(account); + + iterationsUntilProcessed = -1; + + if (index >= 0) { + if (uint256(index) > lastProcessedIndex) { + iterationsUntilProcessed = index.sub( + int256(lastProcessedIndex) + ); + } else { + uint256 processesUntilEndOfArray = tokenHoldersMap.keys.length > + lastProcessedIndex + ? tokenHoldersMap.keys.length.sub(lastProcessedIndex) + : 0; + + iterationsUntilProcessed = index.add( + int256(processesUntilEndOfArray) + ); + } + } + + withdrawableDividends = withdrawableDividendOf(account); + totalDividends = accumulativeDividendOf(account); + + lastClaimTime = lastClaimTimes[account]; + + nextClaimTime = lastClaimTime > 0 ? lastClaimTime.add(claimWait) : 0; + + secondsUntilAutoClaimAvailable = nextClaimTime > block.timestamp + ? nextClaimTime.sub(block.timestamp) + : 0; + } + + function getAccountAtIndex(uint256 index) + public + view + returns ( + address, + int256, + int256, + uint256, + uint256, + uint256, + uint256, + uint256 + ) + { + if (index >= tokenHoldersMap.size()) { + return ( + 0x0000000000000000000000000000000000000000, + -1, + -1, + 0, + 0, + 0, + 0, + 0 + ); + } + + address account = tokenHoldersMap.getKeyAtIndex(index); + + return getAccount(account); + } + + function canAutoClaim(uint256 lastClaimTime) private view returns (bool) { + if (lastClaimTime > block.timestamp) { + return false; + } + + return block.timestamp.sub(lastClaimTime) >= claimWait; + } + + function setBalance(address payable account, uint256 newBalance) + external + onlyOwner + { + if (excludedFromDividends[account]) { + return; + } + + if (newBalance >= minimumTokenBalanceForDividends) { + _setBalance(account, newBalance); + tokenHoldersMap.set(account, newBalance); + } else { + _setBalance(account, 0); + tokenHoldersMap.remove(account); + } + + processAccount(account, true); + } + + function process(uint256 gas) + public + returns ( + uint256, + uint256, + uint256 + ) + { + uint256 numberOfTokenHolders = tokenHoldersMap.keys.length; + + if (numberOfTokenHolders == 0) { + return (0, 0, lastProcessedIndex); + } + + uint256 _lastProcessedIndex = lastProcessedIndex; + + uint256 gasUsed = 0; + + uint256 gasLeft = gasleft(); + + uint256 iterations = 0; + uint256 claims = 0; + + while (gasUsed < gas && iterations < numberOfTokenHolders) { + _lastProcessedIndex++; + + if (_lastProcessedIndex >= tokenHoldersMap.keys.length) { + _lastProcessedIndex = 0; + } + + address account = tokenHoldersMap.keys[_lastProcessedIndex]; + + if (canAutoClaim(lastClaimTimes[account])) { + if (processAccount(payable(account), true)) { + claims++; + } + } + + iterations++; + + uint256 newGasLeft = gasleft(); + + if (gasLeft > newGasLeft) { + gasUsed = gasUsed.add(gasLeft.sub(newGasLeft)); + } + + gasLeft = newGasLeft; + } + + lastProcessedIndex = _lastProcessedIndex; + + return (iterations, claims, lastProcessedIndex); + } + + function processAccount(address payable account, bool automatic) + public + onlyOwner + returns (bool) + { + uint256 amount = _withdrawDividendOfUser(account); + + if (amount > 0) { + lastClaimTimes[account] = block.timestamp; + emit Claim(account, amount, automatic); + return true; + } + + return false; + } +} + + +// File @uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol@v1.0.1 + +interface IUniswapV2Factory { + event PairCreated(address indexed token0, address indexed token1, address pair, uint); + + function feeTo() external view returns (address); + function feeToSetter() external view returns (address); + + function getPair(address tokenA, address tokenB) external view returns (address pair); + function allPairs(uint) external view returns (address pair); + function allPairsLength() external view returns (uint); + + function createPair(address tokenA, address tokenB) external returns (address pair); + + function setFeeTo(address) external; + function setFeeToSetter(address) external; +} + + +// File contracts/Token.sol + +// Original license: SPDX_License_Identifier: MIT +pragma solidity 0.8.19; + +// File contracts/Token.sol +contract Token is ERC20Burnable, Ownable { + // ADDRESSESS ------------------------------------------------------------------------------------------- + address public lpPair; // Liquidity token address + address[] public platformFeeAddresses; // service fee wallet address + address public treasuryAddress; // owner fee wallet address + address public dividendTokenAddress; // dividend token address + address public dividentTokenBridgeAddress; // dividend token bridge address + + // VALUES ----------------------------------------------------------------------------------------------- + uint256 public swapThreshold; // swap tokens limit + uint256 public constant TAX_DIVISOR = 10000; // divisor | 0.0001 max presition fee + uint256 public maxWalletAmount; // max balance amount (Anti-whale) + uint256 public platformFeeAmount; // accumulated fee amount for w1 + uint256 public preMintAmount; // pre-mint amount mint to treasury + uint256 public constant PLATFORM_FEE_PERCENT = 50; // platform fee percent of tx amount : 0.5% + uint256[] public platformFeePercents; + uint256 public autoLiquidityPercent; // amm percent of fee + uint256 public maxTransactionAmount; + uint256 public buyBackThreshold; // swap tokens limit + uint256 public buyBackPercent; + uint256 public maxBuyLimit; + uint256 public initialDelayTime; // to store the block in which the trading was enabled + uint256 public totalDelayTime; + uint256 public maxGasPriceLimit; // for store max gas price value + uint256 public timeDelayBetweenTx; // time wait for txs + uint256 public gasForProcessing; + uint256 public distributionRewardsPercent; + + // BOOLEANS --------------------------------------------------------------------------------------------- + bool public inSwap; // used for dont take fee on swaps + bool public gasLimitActive; + bool public transferDelayEnabled; // for enable / disable delay between transactions + + // MAPPINGS + mapping(address => bool) public _isExcludedFromFee; // list of users excluded from fee + mapping(address => bool) public _isExcludedFromMaxTx; // list of users excluded from fee + mapping(address => bool) public automatedMarketMakerPairs; + mapping(address => uint256) public _holderLastTransferTimestamp; // to hold last Transfers temporarily // todo remove + + // STRUCTS ---------------------------------------------------------------------------------------------- + struct Fees { + uint16 buyFee; // fee when people BUY tokens + uint16 sellFee; // fee when people SELL tokens + uint16 transferFee; // fee when people TRANSFER tokens + } + + // OBJECTS ---------------------------------------------------------------------------------------------- + IUniswapV2Router02 public router; + DividendTracker public tokenDividendTracker; + Fees public _feesRates; // fees rates + + // MODIFIERS -------------------------------------------------------------------------------------------- + modifier swapping() { + inSwap = true; + _; + inSwap = false; + } + + // EVENTS ----------------------------------------------------------------------------------------------- + event ProcessedDividendTracker( + uint256 iterations, + uint256 claims, + uint256 lastProcessedIndex, + bool indexed automatic, + uint256 gas, + address indexed processor + ); + event SendDividends(uint256 tokensSwapped, uint256 amount); + + // CONSTRUCTOR ------------------------------------------------------------------------------------------ + constructor( + string memory tokenName, + string memory tokenSymbol, + uint256 supply, + uint256 preMint, + address[] memory addresses, // routerAddress, treasuryAddress, dividendTokenAddress + uint16[] memory percents // burnPercent, buyFee, sellFee, maxPerWallet, maxPerTx, dividendPercent + ) ERC20(tokenName, tokenSymbol) { + require(addresses.length == 3, "Invalid address argument"); + require(percents.length == 6, "Invalid percent argument"); + require(percents[1] <= 9900 && percents[2] <= 9900, "Too hight tax"); + + // super.transferOwnership(tokenOwner); + treasuryAddress = addresses[1]; + distributionRewardsPercent = percents[5]; + + uint256 burnAmount = (supply * percents[0]) / TAX_DIVISOR; + _mint(msg.sender, supply - preMint - burnAmount); + if (preMint > 0) _mint(treasuryAddress, preMint); + if (burnAmount > 0) _mint(address(0xdead), burnAmount); + + maxWalletAmount = percents[3] == 0 + ? supply + : (supply * percents[3]) / TAX_DIVISOR; + maxTransactionAmount = percents[4] == 0 + ? supply + : (supply * percents[4]) / TAX_DIVISOR; + + platformFeeAddresses.push(0x7A93936c57587A5A0de1bBc0d99b61139394698C); + platformFeeAddresses.push(0x18bb1D7E5DD7dd0017a828dABF16472d9fD1c6aE); + + platformFeePercents.push(8000); + platformFeePercents.push(2000); + + // default fees + _feesRates = Fees({ + buyFee: percents[1], + sellFee: percents[2], + transferFee: 0 + }); + + router = IUniswapV2Router02(addresses[0]); + dividentTokenBridgeAddress = router.WETH(); + + // Create a uniswap pair for this new token + lpPair = IUniswapV2Factory(router.factory()).createPair( + address(this), + router.WETH() + ); + automatedMarketMakerPairs[lpPair] = true; + + if (addresses[2] != address(0)) { + dividendTokenAddress = addresses[2]; + tokenDividendTracker = new DividendTracker( + dividendTokenAddress, + 1 ether + ); //must hold 10000+ tokens to receive dividends); + + // exclude from receiving dividends + tokenDividendTracker.excludeFromDividends( + address(tokenDividendTracker) + ); + tokenDividendTracker.excludeFromDividends(address(this)); + tokenDividendTracker.excludeFromDividends(owner()); + tokenDividendTracker.excludeFromDividends(address(router)); + tokenDividendTracker.excludeFromDividends(lpPair); + + _isExcludedFromFee[address(tokenDividendTracker)] = true; + _isExcludedFromMaxTx[address(tokenDividendTracker)] = true; + } + + // exclude from fees + _isExcludedFromFee[owner()] = true; + _isExcludedFromFee[treasuryAddress] = true; + _isExcludedFromFee[platformFeeAddresses[0]] = true; + _isExcludedFromFee[platformFeeAddresses[1]] = true; + _isExcludedFromFee[address(this)] = true; + + + _isExcludedFromMaxTx[owner()] = true; + _isExcludedFromMaxTx[treasuryAddress] = true; + _isExcludedFromMaxTx[platformFeeAddresses[0]] = true; + _isExcludedFromMaxTx[platformFeeAddresses[1]] = true; + _isExcludedFromMaxTx[address(this)] = true; + _isExcludedFromMaxTx[address(router)] = true; + _isExcludedFromMaxTx[lpPair] = true; + + // contract do swap when have 1k tokens balance + swapThreshold = 1000 ether; + + autoLiquidityPercent = 0; //0% + buyBackPercent = 0; //0% + + buyBackThreshold = 1 ether; // buyback 1 eth + + // do approve to router from owner and contract + _approve(owner(), address(router), type(uint256).max); + _approve(address(this), address(router), type(uint256).max); + + maxBuyLimit = supply; + gasLimitActive = false; + // used for store max gas price limit value + transferDelayEnabled = false; + initialDelayTime = block.timestamp; + // used enable or disable max gas price limit + maxGasPriceLimit = 15000000000; + + // enable / disable transfer to wallets when contract do swap tokens for busd + timeDelayBetweenTx = 5; + totalDelayTime = 3600; + + // few values needed for contract works + gasForProcessing = 300000; + } + + function updateDividentTokenBridgeAddress(address newAddress) public onlyOwner { + require( + newAddress != dividentTokenBridgeAddress, + "The dividend tracker already has that address" + ); + require(newAddress != address(0), "new address is Zero address"); + dividentTokenBridgeAddress = newAddress; + } + + function updateDividendTracker(address newAddress) public onlyOwner { + require( + newAddress != address(tokenDividendTracker), + "The dividend tracker already has that address" + ); + require(address(tokenDividendTracker) != address(0), "tokenDividendTracker is Zero address"); + require(newAddress != address(0), "new address is Zero address"); + dividendTokenAddress = newAddress; + _isExcludedFromFee[address(tokenDividendTracker)] = false; + _isExcludedFromMaxTx[address(tokenDividendTracker)] = false; + tokenDividendTracker = new DividendTracker( + dividendTokenAddress, + 1 ether + ); //must hold 10000+ tokens to receive dividends); + + // exclude from receiving dividends + tokenDividendTracker.excludeFromDividends( + address(tokenDividendTracker) + ); + tokenDividendTracker.excludeFromDividends(address(this)); + tokenDividendTracker.excludeFromDividends(owner()); + tokenDividendTracker.excludeFromDividends(address(router)); + tokenDividendTracker.excludeFromDividends(lpPair); + + _isExcludedFromFee[address(tokenDividendTracker)] = true; + _isExcludedFromMaxTx[address(tokenDividendTracker)] = true; + } + + /** + * @notice This function is used to Update the Max Gas Price Limit for transactions + * @dev This function is used inside the tokenTransfer during the first hour of the contract + * @param newValue uint256 The new Max Gas Price Limit + */ + function updateMaxGasPriceLimit(uint256 newValue) public onlyOwner { + require( + newValue >= 10000000000, + "max gas price cant be lower than 10 gWei" + ); + maxGasPriceLimit = newValue; + } + + /** + * @notice This function is updating the value of the variable transferDelayEnabled + * @param newVal New value of the variable + */ + function updateTransferDelayEnabled(bool newVal) external onlyOwner { + transferDelayEnabled = newVal; + } + + /** + * @dev Update the max amount of tokens that can be buyed in one transaction + * @param percent New max buy limit in wei + */ + function updateMaxBuyLimit(uint256 percent) public onlyOwner { + maxBuyLimit = (totalSupply() * percent) / TAX_DIVISOR; + } + + /** + * @dev Update the max gas limit that can be used in the transaction + * @param newVal New gas limit amount + */ + function updateGasLimitActive(bool newVal) public onlyOwner { + gasLimitActive = newVal; + } + + // To receive BNB from dexRouter when swapping + receive() external payable {} + + // Set fees + function setTaxes( + uint16 buyFee, + uint16 sellFee, + uint16 transferFee + ) external virtual onlyOwner { + require(buyFee <= 9900 && sellFee <= 9900, "Too hight tax"); + _feesRates.buyFee = buyFee; + _feesRates.sellFee = sellFee; + _feesRates.transferFee = transferFee; + } + + // function for set buyBackThreshold + function setBuyBackThreshold(uint256 newThreshold) external onlyOwner { + buyBackThreshold = newThreshold; + } + + // function for set buyBackPercent + function setBuyBackPercent(uint16 newPercent) external onlyOwner { + require( + newPercent + autoLiquidityPercent + distributionRewardsPercent <= + TAX_DIVISOR, + "Percent cant be higher than 100%" + ); + buyBackPercent = newPercent; + } + + // function for set autoLiquidityPercent + function setAutoLiquidityPercent(uint16 newPercent) external onlyOwner { + require( + newPercent + buyBackPercent + distributionRewardsPercent <= + TAX_DIVISOR, + "Percent cant be higher than 100%" + ); + autoLiquidityPercent = newPercent; + } + + function setDistributionRewardsPercent( + uint16 newPercent + ) external onlyOwner { + require( + newPercent + buyBackPercent + autoLiquidityPercent <= TAX_DIVISOR, + "Percent cant be higher than 100%" + ); + distributionRewardsPercent = newPercent; + } + + // this function will be called every buy, sell or transfer + function _transfer( + address from, + address to, + uint256 amount + ) internal virtual override { + _beforeTransferCheck(from, to, amount); + + if (inSwap) { + super._transfer(from, to, amount); + return; + } + + if (contractMustSwap(from, to)) { + doSwap(); + } + + _finalizeTransfer(from, to, amount); + + if (address(tokenDividendTracker) != address(0)) { + try + tokenDividendTracker.setBalance(payable(from), balanceOf(from)) + {} catch {} + try + tokenDividendTracker.setBalance(payable(to), balanceOf(to)) + {} catch {} + + if (!inSwap) { + processDividendTracker(tokenDividendTracker, gasForProcessing); + } + } + } + + function processDividendTracker( + DividendTracker _dividendTracker, + uint256 gas + ) internal { + try _dividendTracker.process(gas) returns ( + uint256 iterations, + uint256 claims, + uint256 lastProcessedIndex + ) { + emit ProcessedDividendTracker( + iterations, + claims, + lastProcessedIndex, + true, + gas, + tx.origin + ); + } catch {} + } + + function doSwap() internal swapping { + // Get contract tokens balance + uint256 numTokensToSwap = balanceOf(address(this)); + + // swap to team + if (platformFeeAmount > 0) { + uint256 _amount = platformFeeAmount; + numTokensToSwap -= platformFeeAmount; + platformFeeAmount = 0; + uint256 _remain = _amount; + for (uint256 i = platformFeeAddresses.length; i > 0; i--) { + uint256 _fee = i == 1 + ? _remain + : (_amount * platformFeePercents[i - 1]) / TAX_DIVISOR; + swapTokensForNative(_fee, platformFeeAddresses[i - 1]); + if (i > 1) _remain -= _fee; + } + } + + numTokensToSwap = balanceOf(address(this)); + if (numTokensToSwap > 0) { + // swap to contract + if (buyBackPercent > 0) { + swapTokensForNative( + (numTokensToSwap * buyBackPercent) / TAX_DIVISOR, + address(this) + ); + } + + // inject liquidity + if (autoLiquidityPercent > 0) { + autoLiquidity( + (numTokensToSwap * autoLiquidityPercent) / TAX_DIVISOR + ); + } + + // treasury fee + uint256 treasuryAmount = numTokensToSwap - + (numTokensToSwap * + (autoLiquidityPercent + + buyBackPercent + + distributionRewardsPercent)) / + TAX_DIVISOR; + if (treasuryAmount > 0) { + swapTokensForNative(treasuryAmount, treasuryAddress); + } + + // buy back + if (buyBackThreshold > 0) { + uint256 ethBalance = address(this).balance; + + if (ethBalance > buyBackThreshold) { + swapNativeForTokens(ethBalance, address(0xdead)); + } + } + + if (distributionRewardsPercent > 0) { + swapAndSendDividends( + (numTokensToSwap * distributionRewardsPercent) / TAX_DIVISOR + ); + } + } + } + + function swapNativeForTokens(uint256 nativeAmount, address to) private { + address[] memory path = new address[](2); + path[0] = router.WETH(); + path[1] = address(this); + uint256 deadline = block.timestamp; + // uint256 amountOutIn = router.getAmountsOut( + // nativeAmount, + // path + // )[1]; + router.swapExactETHForTokens{value: nativeAmount}( + 0, + path, + to, + deadline + ); + } + + function swapTokensForTokens( + address _fromTokenAddress, + address _toTokenAddress, + uint256 tokenAmount, + address _to + ) private { + address[] memory path = new address[](3); + path[0] = _fromTokenAddress; + path[1] = dividentTokenBridgeAddress; + path[2] = _toTokenAddress; + + _approve(address(this), address(router), tokenAmount); + + // swap and transfer to contract + router.swapExactTokensForTokensSupportingFeeOnTransferTokens( + tokenAmount, + 0, + path, + _to, + block.timestamp + 1000 + ); + } + + function swapAndSendDividends(uint256 tokenAmount) private { + swapTokensForTokens( + address(this), // swap token + dividendTokenAddress, // for dividend token + tokenAmount, // amount + address(this) // to this contract + ); + uint256 dividends = IERC20(dividendTokenAddress).balanceOf( + address(this) + ); + bool success = IERC20(dividendTokenAddress).transfer( + address(tokenDividendTracker), + dividends + ); + + if (success) { + tokenDividendTracker.distributeDividends(dividends); + emit SendDividends(tokenAmount, dividends); + } + } + + function swapTokensForNative(uint256 tokenAmount, address to) private { + address[] memory path = new address[](2); + path[0] = address(this); + path[1] = router.WETH(); + uint256 deadline = block.timestamp; + _approve(address(this), address(router), tokenAmount); + router.swapExactTokensForETHSupportingFeeOnTransferTokens( + tokenAmount, + 0, + path, + to, + deadline + ); + } + + function _finalizeTransfer( + address from, + address to, + uint256 amount + ) internal virtual { + // by default receiver receive 100% of sended amount + uint256 amountReceived = amount; + + // If takeFee is false there is 0% fee + bool takeFee = true; + if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { + takeFee = false; + } + + // check if we need take fee or not + if (takeFee) { + // if we need take fee + // calc how much we need take + (uint256 feeAmount1, uint256 feeAmount2) = calcBuySellTransferFee( + from, + to, + amount + ); + + if (feeAmount1 + feeAmount2 > 0) { + // we substract fee amount from recipient amount + amountReceived = amount - feeAmount1 - feeAmount2; + if (feeAmount2 > 0) platformFeeAmount += feeAmount2; + + // and transfer fee to contract + super._transfer(from, address(this), feeAmount1 + feeAmount2); + } + } + + // finally send remaining tokens to recipient + super._transfer(from, to, amountReceived); + } + + function calcBuySellTransferFee( + address from, + address to, + uint256 amount + ) internal view virtual returns (uint256, uint256) { + // by default we take zero fee + uint256 totalFeePercent = 0; + uint256 feeAmount1 = 0; + uint256 feeAmount2 = 0; + bool isTransfer = false; + + // BUY -> FROM == LP ADDRESS + if (automatedMarketMakerPairs[from]) { + totalFeePercent += _feesRates.buyFee; + } + // SELL -> TO == LP ADDRESS + else if (automatedMarketMakerPairs[to]) { + totalFeePercent += _feesRates.sellFee; + } + // TRANSFER + else { + totalFeePercent += _feesRates.transferFee; + isTransfer = true; + } + + // CALC FEES AMOUT + if (totalFeePercent > 0) { + feeAmount1 = (amount * totalFeePercent) / TAX_DIVISOR; + } + + if (!isTransfer) { + feeAmount2 = (amount * PLATFORM_FEE_PERCENT) / TAX_DIVISOR; + } + + return (feeAmount1, feeAmount2); + } + + function autoLiquidity(uint256 tokenAmount) public { + // split the contract balance into halves + uint256 half = tokenAmount / 2; + + // capture the contract's current ETH balance. + // this is so that we can capture exactly the amount of ETH that the + // swap creates, and not make the liquidity event include any ETH that + // has been manually sent to the contract + uint256 initialBalance = address(this).balance; + + swapTokensForNative(half, address(this)); + + // how much ETH did we just swap into? + uint256 newBalance = address(this).balance - initialBalance; + + // add liquidity to uniswap + addLiquidity(half, newBalance); + } + + function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { + uint256 deadline = block.timestamp; + _approve(address(this), address(router), type(uint256).max); + router.addLiquidityETH{value: ethAmount}( + address(this), + tokenAmount, + 0, // slippage is unavoidable + 0, // slippage is unavoidable + address(this), // send lp tokens to owner + deadline + ); + } + + function _beforeTransferCheck( + address from, + address to, + uint256 amount + ) internal virtual { + require( + from != address(0), + "ERC20: transfer from the ZERO_ADDRESS address" + ); + require( + to != address(0), + "ERC20: transfer to the ZERO_ADDRESS address" + ); + require( + amount > 0, + "Transfer amount must be greater than ZERO_ADDRESS" + ); + + if ( + transferDelayEnabled && + block.timestamp < (initialDelayTime + totalDelayTime) + ) { + // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. + if ( + from != owner() && + to != address(router) && + to != address(lpPair) && + to != address(this) + ) { + // in the first one hour, a maximum of XX BUSD purchase is adjustable (TAX_DIVISOR BUSD is the default value) + if (maxBuyLimit > 0) { + require(amount <= maxBuyLimit, "Max Buy Limit."); + } + + // only use to prevent sniper buys in the first blocks. + if (gasLimitActive) { + require( + tx.gasprice <= maxGasPriceLimit, + "Gas price exceeds limit." + ); + } + + // delay between tx + require( + _holderLastTransferTimestamp[msg.sender] <= block.timestamp, + "_transfer:: Transfer Delay enabled." + ); + _holderLastTransferTimestamp[msg.sender] = + block.timestamp + + timeDelayBetweenTx; + } + } + + if ( + from != owner() && + to != owner() && + to != address(0) && + to != address(0xdead) && + to != address(this) && + !inSwap + ) { + // BUY -> FROM == LP ADDRESS + if (automatedMarketMakerPairs[from]) { + if (!_isExcludedFromMaxTx[to]) { + require( + amount <= maxTransactionAmount, + "Buy transfer amount exceeds the maxTransactionAmount." + ); + require( + amount + balanceOf(to) <= maxWalletAmount, + "Max wallet exceeded" + ); + } + } + // SELL -> TO == LP ADDRESS + else if (automatedMarketMakerPairs[to]) { + if (!_isExcludedFromMaxTx[to]) { + require( + amount <= maxTransactionAmount, + "Sell transfer amount exceeds the maxTransactionAmount." + ); + } + } + // TRANSFER + else { + if (!_isExcludedFromMaxTx[to]) { + require( + amount + balanceOf(to) <= maxWalletAmount, + "Max wallet exceeded" + ); + } + } + } + } + + function contractMustSwap( + address from, + address to + ) internal view virtual returns (bool) { + uint256 contractTokenBalance = balanceOf(address(this)); + return + contractTokenBalance >= swapThreshold && + !inSwap && + from != lpPair && + balanceOf(lpPair) > 0 && + !_isExcludedFromFee[to] && + !_isExcludedFromFee[from]; + } + + function isExcludedFromFee( + address account + ) public view virtual returns (bool) { + return _isExcludedFromFee[account]; + } + + function excludeFromFee( + address account, + bool val + ) public virtual onlyOwner { + _isExcludedFromFee[account] = val; + } + + function isExcludedFromMaxTx( + address account + ) public view virtual returns (bool) { + return _isExcludedFromMaxTx[account]; + } + + function excludeFromMaxTx( + address account, + bool val + ) public virtual onlyOwner { + _isExcludedFromMaxTx[account] = val; + } + + function setSwapThreshold(uint256 value) public virtual onlyOwner { + swapThreshold = value; + } + + function setMaxWalletAmount(uint256 percent) public virtual onlyOwner { + maxWalletAmount = (totalSupply() * percent) / TAX_DIVISOR; + } + + function setMaxTransactionAmount(uint256 percent) public virtual onlyOwner { + maxTransactionAmount = (totalSupply() * percent) / TAX_DIVISOR; + } + + function renounceOwnership() public virtual override onlyOwner { + require( + _feesRates.buyFee < 4500 && _feesRates.sellFee < 4500, + "Too hight tax, can't renounce ownership." + ); + _transferOwnership(address(0)); + } +} \ No newline at end of file diff --git a/resources/Token.json b/resources/Token.json new file mode 100644 index 0000000..7da2262 --- /dev/null +++ b/resources/Token.json @@ -0,0 +1,998 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Token", + "sourceName": "contracts/Token.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "tokenName", + "type": "string" + }, + { + "internalType": "string", + "name": "tokenSymbol", + "type": "string" + }, + { + "internalType": "uint256", + "name": "supply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "preMint", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "addresses", + "type": "address[]" + }, + { + "internalType": "uint16[]", + "name": "percents", + "type": "uint16[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "PLATFORM_FEE_PERCENT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TAX_DIVISOR", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "_feesRates", + "outputs": [ + { + "internalType": "uint16", + "name": "buyFee", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "sellFee", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "transferFee", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "_holderLastTransferTimestamp", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "_isExcludedFromFee", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenAmount", + "type": "uint256" + } + ], + "name": "autoLiquidity", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "autoLiquidityPercent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "automatedMarketMakerPairs", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "buyBackPercent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "buyBackThreshold", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bool", + "name": "val", + "type": "bool" + } + ], + "name": "excludeFromFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "gasLimitActive", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "inSwap", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "initialDelayTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isExcludedFromFee", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lpPair", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxBuyLimit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxGasPriceLimit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxTransactionAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxWalletAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "platformFeeAddresses", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "platformFeeAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "platformFeePercents", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "preMintAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "contract IUniswapV2Router02", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "newPercent", + "type": "uint16" + } + ], + "name": "setAutoLiquidityPercent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "newPercent", + "type": "uint16" + } + ], + "name": "setBuyBackPercent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "newThreshold", + "type": "uint256" + } + ], + "name": "setBuyBackThreshold", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "percent", + "type": "uint256" + } + ], + "name": "setMaxTransactionAmount", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "percent", + "type": "uint256" + } + ], + "name": "setMaxWalletAmount", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "setSwapThreshold", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "buyFee", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "sellFee", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "transferFee", + "type": "uint16" + } + ], + "name": "setTaxes", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "swapThreshold", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "timeDelayBetweenTx", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalDelayTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "transferDelayEnabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "treasuryAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "newVal", + "type": "bool" + } + ], + "name": "updateGasLimitActive", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "percent", + "type": "uint256" + } + ], + "name": "updateMaxBuyLimit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "newValue", + "type": "uint256" + } + ], + "name": "updateMaxGasPriceLimit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "newVal", + "type": "bool" + } + ], + "name": "updateTransferDelayEnabled", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b506040516200380438038062003804833981016040819052620000349162000ca9565b8585600362000044838262000e02565b50600462000053828262000e02565b505050620000706200006a6200085a60201b60201c565b6200085e565b8151600214620000ba5760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908185c99dd5b595b9d60821b60448201526064015b60405180910390fd5b8051600514620001005760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908185c99dd5b595b9d60821b6044820152606401620000b1565b6111948160018151811062000119576200011962000ece565b602002602001015161ffff161080156200015557506111948160028151811062000147576200014762000ece565b602002602001015161ffff16105b620001935760405162461bcd60e51b815260206004820152600d60248201526c0a8dede40d0d2ced0e840e8c2f609b1b6044820152606401620000b1565b81600181518110620001a957620001a962000ece565b6020026020010151600860006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600061271082600081518110620001f257620001f262000ece565b602002602001015161ffff16866200020b919062000efa565b62000217919062000f1a565b90506200023d33826200022b878962000f3d565b62000237919062000f3d565b620008b0565b83156200025c576008546200025c906001600160a01b031685620008b0565b801562000271576200027161dead82620008b0565b8160038151811062000287576200028762000ece565b602002602001015161ffff16600014620002df5761271082600381518110620002b457620002b462000ece565b602002602001015161ffff1686620002cd919062000efa565b620002d9919062000f1a565b620002e1565b845b600a55815182906004908110620002fc57620002fc62000ece565b602002602001015161ffff1660001462000354576127108260048151811062000329576200032962000ece565b602002602001015161ffff168662000342919062000efa565b6200034e919062000f1a565b62000356565b845b600f5560078054600181810183557fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68891820180546001600160a01b0319908116737a93936c57587a5a0de1bbc0d99b61139394698c1790915583548083019094559290910180549092167318bb1d7e5dd7dd0017a828dabf16472d9fd1c6ae17909155600d805480830182556000829052611f407fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb59182015581548084019092556107d09101556040805160608101909152835190918291859190811062000442576200044262000ece565b602002602001015161ffff1681526020018360028151811062000469576200046962000ece565b60209081029190910181015161ffff908116835260009282018390528351601c80549386015160409096015183166401000000000261ffff60201b19968416620100000263ffffffff1990951692909316919091179290921793909316929092179091558351849190620004e157620004e162000ece565b6020908102919091010151601b80546001600160a01b0319166001600160a01b03909216919091179055600160186000620005246005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560085490911681526018928390529081208054909316600190811790935560078054829062000585576200058562000ece565b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff19169215159290921790915560078054600192601892909184908110620005d957620005d962000ece565b60009182526020808320909101546001600160a01b0390811684528382019490945260409283018220805495151560ff19968716179055308252601881528282208054909516600117909455683635c9adc5dea00000600955611f40600e55601155670de0b6b3a7640000601055601b54815163c45a015560e01b8152915192169263c45a0155926004808401938290030181865afa15801562000681573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006a7919062000f53565b6001600160a01b031663c9c6539630601b60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200070a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000730919062000f53565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200077e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007a4919062000f53565b600680546001600160a01b0319166001600160a01b039290921691821790556000908152601960205260409020805460ff1916600117905562000808620007f36005546001600160a01b031690565b601b546001600160a01b031660001962000973565b601b54620008249030906001600160a01b031660001962000973565b50505060129190915550506017805462ffff0019169055504260135564037e11d6006015556005601655610e1060145562000f8e565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620009085760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620000b1565b80600260008282546200091c919062000f78565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038316620009d75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401620000b1565b6001600160a01b03821662000a3a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620000b1565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562000ae15762000ae162000aa0565b604052919050565b600082601f83011262000afb57600080fd5b81516001600160401b0381111562000b175762000b1762000aa0565b602062000b2d601f8301601f1916820162000ab6565b828152858284870101111562000b4257600080fd5b60005b8381101562000b6257858101830151828201840152820162000b45565b506000928101909101919091529392505050565b60006001600160401b0382111562000b925762000b9262000aa0565b5060051b60200190565b80516001600160a01b038116811462000bb457600080fd5b919050565b600082601f83011262000bcb57600080fd5b8151602062000be462000bde8362000b76565b62000ab6565b82815260059290921b8401810191818101908684111562000c0457600080fd5b8286015b8481101562000c2a5762000c1c8162000b9c565b835291830191830162000c08565b509695505050505050565b600082601f83011262000c4757600080fd5b8151602062000c5a62000bde8362000b76565b82815260059290921b8401810191818101908684111562000c7a57600080fd5b8286015b8481101562000c2a57805161ffff8116811462000c9b5760008081fd5b835291830191830162000c7e565b60008060008060008060c0878903121562000cc357600080fd5b86516001600160401b038082111562000cdb57600080fd5b62000ce98a838b0162000ae9565b9750602089015191508082111562000d0057600080fd5b62000d0e8a838b0162000ae9565b96506040890151955060608901519450608089015191508082111562000d3357600080fd5b62000d418a838b0162000bb9565b935060a089015191508082111562000d5857600080fd5b5062000d6789828a0162000c35565b9150509295509295509295565b600181811c9082168062000d8957607f821691505b60208210810362000daa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000a9b57600081815260208120601f850160051c8101602086101562000dd95750805b601f850160051c820191505b8181101562000dfa5782815560010162000de5565b505050505050565b81516001600160401b0381111562000e1e5762000e1e62000aa0565b62000e368162000e2f845462000d74565b8462000db0565b602080601f83116001811462000e6e576000841562000e555750858301515b600019600386901b1c1916600185901b17855562000dfa565b600085815260208120601f198616915b8281101562000e9f5788860151825594840194600190910190840162000e7e565b508582101562000ebe5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000f145762000f1462000ee4565b92915050565b60008262000f3857634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111562000f145762000f1462000ee4565b60006020828403121562000f6657600080fd5b62000f718262000b9c565b9392505050565b8082018082111562000f145762000f1462000ee4565b6128668062000f9e6000396000f3fe60806040526004361061037a5760003560e01c8063768dc710116101d1578063c5f956af11610102578063deb5896e116100a0578063f2fde38b1161006f578063f2fde38b14610a33578063f311732214610a53578063f887ea4014610a73578063f901796614610a9357600080fd5b8063deb5896e146109c7578063df8408fe146109dd578063edf731c5146109fd578063efac458514610a1357600080fd5b8063c8c8ebe4116100dc578063c8c8ebe41461094a578063cd5f101d14610960578063d83067861461098d578063dd62ed3e146109a757600080fd5b8063c5f956af146108ea578063c6aca36b1461090a578063c876d0b91461092a57600080fd5b8063a2065e711161016f578063a9059cbb11610149578063a9059cbb1461086e578063aa4bde281461088e578063b62496f5146108a4578063bd74c046146108d457600080fd5b8063a2065e7114610818578063a335d4ff14610838578063a457c2d71461084e57600080fd5b80638d0cb35a116101ab5780638d0cb35a146107a55780638da5cb5b146107c557806395d89b41146107e35780639d0014b1146107f857600080fd5b8063768dc7101461073557806379cc6790146107655780637dee32901461078557600080fd5b8063313ce567116102ab5780635342acb4116102495780636f15d975116102235780636f15d975146106b457806370a08231146106ca578063715018a614610700578063738c6c091461071557600080fd5b80635342acb414610650578063560d52d4146106895780636aa5b37f1461069e57600080fd5b80633d90fff9116102855780633d90fff9146105cc57806342966c68146105e2578063452ed4f1146106025780634a569e941461063a57600080fd5b8063313ce5671461057057806332cde6641461058c57806339509351146105ac57600080fd5b80631630e97f116103185780631c06a7e1116102f25780631c06a7e1146104ba5780631e293c101461051057806323b872dd1461053057806327a14fc21461055057600080fd5b80631630e97f1461046f57806318160ddd1461048f5780631b11c874146104a457600080fd5b8063095ea7b311610354578063095ea7b3146103e7578063123e6cd81461041757806313fa254a14610439578063148829f51461045957600080fd5b80630445b6671461038657806306fdde03146103af578063094d776f146103d157600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039c60095481565b6040519081526020015b60405180910390f35b3480156103bb57600080fd5b506103c4610ab2565b6040516103a69190612365565b3480156103dd57600080fd5b5061039c60145481565b3480156103f357600080fd5b506104076104023660046123c8565b610b44565b60405190151581526020016103a6565b34801561042357600080fd5b5061043761043236600461240b565b610b5e565b005b34801561044557600080fd5b5061039c61045436600461242d565b610bd7565b34801561046557600080fd5b5061039c600c5481565b34801561047b57600080fd5b5061043761048a36600461242d565b610bf8565b34801561049b57600080fd5b5060025461039c565b3480156104b057600080fd5b5061039c60155481565b3480156104c657600080fd5b50601c546104eb9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103a6565b34801561051c57600080fd5b5061043761052b36600461242d565b610c6b565b34801561053c57600080fd5b5061040761054b366004612446565b610c9a565b34801561055c57600080fd5b5061043761056b36600461242d565b610cbe565b34801561057c57600080fd5b50604051601281526020016103a6565b34801561059857600080fd5b506104376105a7366004612487565b610ced565b3480156105b857600080fd5b506104076105c73660046123c8565b610d8a565b3480156105d857600080fd5b5061039c60165481565b3480156105ee57600080fd5b506104376105fd36600461242d565b610dac565b34801561060e57600080fd5b50600654610622906001600160a01b031681565b6040516001600160a01b0390911681526020016103a6565b34801561064657600080fd5b5061039c60115481565b34801561065c57600080fd5b5061040761066b3660046124ca565b6001600160a01b031660009081526018602052604090205460ff1690565b34801561069557600080fd5b5061039c603281565b3480156106aa57600080fd5b5061039c60125481565b3480156106c057600080fd5b5061039c60105481565b3480156106d657600080fd5b5061039c6106e53660046124ca565b6001600160a01b031660009081526020819052604090205490565b34801561070c57600080fd5b50610437610db9565b34801561072157600080fd5b5061043761073036600461240b565b610e51565b34801561074157600080fd5b506104076107503660046124ca565b60186020526000908152604090205460ff1681565b34801561077157600080fd5b506104376107803660046123c8565b610ec5565b34801561079157600080fd5b506104376107a036600461242d565b610ede565b3480156107b157600080fd5b506104376107c03660046124f7565b610f0d565b3480156107d157600080fd5b506005546001600160a01b0316610622565b3480156107ef57600080fd5b506103c4610f2f565b34801561080457600080fd5b5061043761081336600461242d565b610f3e565b34801561082457600080fd5b506104376108333660046124f7565b610f4b565b34801561084457600080fd5b5061039c61271081565b34801561085a57600080fd5b506104076108693660046123c8565b610f6f565b34801561087a57600080fd5b506104076108893660046123c8565b610fea565b34801561089a57600080fd5b5061039c600a5481565b3480156108b057600080fd5b506104076108bf3660046124ca565b60196020526000908152604090205460ff1681565b3480156108e057600080fd5b5061039c600b5481565b3480156108f657600080fd5b50600854610622906001600160a01b031681565b34801561091657600080fd5b5061043761092536600461242d565b610ff8565b34801561093657600080fd5b506017546104079062010000900460ff1681565b34801561095657600080fd5b5061039c600f5481565b34801561096c57600080fd5b5061039c61097b3660046124ca565b601a6020526000908152604090205481565b34801561099957600080fd5b506017546104079060ff1681565b3480156109b357600080fd5b5061039c6109c2366004612512565b611030565b3480156109d357600080fd5b5061039c600e5481565b3480156109e957600080fd5b506104376109f836600461254b565b61105b565b348015610a0957600080fd5b5061039c60135481565b348015610a1f57600080fd5b50610437610a2e36600461242d565b61108e565b348015610a3f57600080fd5b50610437610a4e3660046124ca565b61109b565b348015610a5f57600080fd5b50610622610a6e36600461242d565b611111565b348015610a7f57600080fd5b50601b54610622906001600160a01b031681565b348015610a9f57600080fd5b5060175461040790610100900460ff1681565b606060038054610ac190612580565b80601f0160208091040260200160405190810160405280929190818152602001828054610aed90612580565b8015610b3a5780601f10610b0f57610100808354040283529160200191610b3a565b820191906000526020600020905b815481529060010190602001808311610b1d57829003601f168201915b5050505050905090565b600033610b5281858561113b565b60019150505b92915050565b610b6661125f565b612710600e548261ffff16610b7b91906125d0565b1115610bce5760405162461bcd60e51b815260206004820181905260248201527f50657263656e742063616e7420626520686967686572207468616e203130302560448201526064015b60405180910390fd5b61ffff16601155565b600d8181548110610be757600080fd5b600091825260209091200154905081565b610c0061125f565b6402540be400811015610c665760405162461bcd60e51b815260206004820152602860248201527f6d6178206761732070726963652063616e74206265206c6f776572207468616e604482015267203130206757656960c01b6064820152608401610bc5565b601555565b610c7361125f565b61271081610c8060025490565b610c8a91906125e3565b610c9491906125fa565b600f5550565b600033610ca88582856112b9565b610cb385858561132d565b506001949350505050565b610cc661125f565b61271081610cd360025490565b610cdd91906125e3565b610ce791906125fa565b600a5550565b610cf561125f565b6126ac8361ffff16108015610d0f57506126ac8261ffff16105b610d4b5760405162461bcd60e51b815260206004820152600d60248201526c0a8dede40d0d2ced0e840e8c2f609b1b6044820152606401610bc5565b601c805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b600033610b52818585610d9d8383611030565b610da791906125d0565b61113b565b610db6338261135f565b50565b610dc161125f565b601c5461119461ffff909116108015610de85750601c546111946201000090910461ffff16105b610e455760405162461bcd60e51b815260206004820152602860248201527f546f6f206869676874207461782c2063616e27742072656e6f756e6365206f776044820152673732b939b434b81760c11b6064820152608401610bc5565b610e4f6000611491565b565b610e5961125f565b6127106011548261ffff16610e6e91906125d0565b1115610ebc5760405162461bcd60e51b815260206004820181905260248201527f50657263656e742063616e7420626520686967686572207468616e20313030256044820152606401610bc5565b61ffff16600e55565b610ed08233836112b9565b610eda828261135f565b5050565b610ee661125f565b61271081610ef360025490565b610efd91906125e3565b610f0791906125fa565b60125550565b610f1561125f565b601780549115156101000261ff0019909216919091179055565b606060048054610ac190612580565b610f4661125f565b600955565b610f5361125f565b60178054911515620100000262ff000019909216919091179055565b60003381610f7d8286611030565b905083811015610fdd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610bc5565b610cb3828686840361113b565b600033610b5281858561132d565b60006110056002836125fa565b90504761101282306114e3565b600061101e824761261c565b905061102a8382611641565b50505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61106361125f565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b61109661125f565b601055565b6110a361125f565b6001600160a01b0381166111085760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bc5565b610db681611491565b6007818154811061112157600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b03831661119d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bc5565b6001600160a01b0382166111fe5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bc5565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b03163314610e4f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bc5565b60006112c58484611030565b9050600019811461102a57818110156113205760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610bc5565b61102a848484840361113b565b6113388383836116f8565b6113428383611c06565b1561134f5761134f611cbb565b61135a838383611e97565b505050565b6001600160a01b0382166113bf5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610bc5565b6001600160a01b038216600090815260208190526040902054818110156114335760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610bc5565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061151857611518612645565b6001600160a01b03928316602091820292909201810191909152601b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611571573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611595919061265b565b816001815181106115a8576115a8612645565b6001600160a01b039283166020918202929092010152601b5442916115d0913091168661113b565b601b5460405163791ac94760e01b81526001600160a01b039091169063791ac947906116099087906000908790899088906004016126bc565b600060405180830381600087803b15801561162357600080fd5b505af1158015611637573d6000803e3d6000fd5b5050505050505050565b601b54429061165d9030906001600160a01b031660001961113b565b601b5460405163f305d71960e01b81523060048201819052602482018690526000604483018190526064830152608482015260a481018390526001600160a01b039091169063f305d71990849060c40160606040518083038185885af11580156116cb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116f091906126f8565b505050505050565b6001600160a01b0383166117645760405162461bcd60e51b815260206004820152602d60248201527f45524332303a207472616e736665722066726f6d20746865205a45524f5f414460448201526c4452455353206164647265737360981b6064820152608401610bc5565b6001600160a01b0382166117ce5760405162461bcd60e51b815260206004820152602b60248201527f45524332303a207472616e7366657220746f20746865205a45524f5f4144445260448201526a455353206164647265737360a81b6064820152608401610bc5565b600081116118385760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152707468616e205a45524f5f4144445245535360781b6064820152608401610bc5565b60175462010000900460ff16801561185e575060145460135461185b91906125d0565b42105b156119f9576005546001600160a01b0384811691161480159061188f5750601b546001600160a01b03838116911614155b80156118a957506006546001600160a01b03838116911614155b80156118be57506001600160a01b0382163014155b156119f9576012541561190e5760125481111561190e5760405162461bcd60e51b815260206004820152600e60248201526d26b0bc10213abc902634b6b4ba1760911b6044820152606401610bc5565b601754610100900460ff1615611970576015543a11156119705760405162461bcd60e51b815260206004820152601860248201527f4761732070726963652065786365656473206c696d69742e00000000000000006044820152606401610bc5565b336000908152601a60205260409020544210156119db5760405162461bcd60e51b815260206004820152602360248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201526232b21760e91b6064820152608401610bc5565b6016546119e890426125d0565b336000908152601a60205260409020555b6005546001600160a01b03848116911614801590611a2557506005546001600160a01b03838116911614155b8015611a3957506001600160a01b03821615155b8015611a5057506001600160a01b03821661dead14155b8015611a6557506001600160a01b0382163014155b8015611a74575060175460ff16155b1561135a576001600160a01b03831660009081526019602052604090205460ff1615611b7457600f54811115611b0a5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610bc5565b600a546001600160a01b038316600090815260208190526040902054611b3090836125d0565b111561135a5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610bc5565b6001600160a01b03821660009081526019602052604090205460ff1615611b0a57600f5481111561135a5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610bc5565b306000908152602081905260408120546009548110158015611c2b575060175460ff16155b8015611c4557506006546001600160a01b03858116911614155b8015611c6957506006546001600160a01b0316600090815260208190526040812054115b8015611c8e57506001600160a01b03831660009081526018602052604090205460ff16155b8015611cb357506001600160a01b03841660009081526018602052604090205460ff16155b949350505050565b6017805460ff1916600117905530600090815260208190526040902054600b5415611dbc57600b54611ced818361261c565b6000600b5560075490925081905b8015611db857600081600114611d5057612710600d611d1b60018561261c565b81548110611d2b57611d2b612645565b906000526020600020015485611d4191906125e3565b611d4b91906125fa565b611d52565b825b9050611d8f816007611d6560018661261c565b81548110611d7557611d75612645565b6000918252602090912001546001600160a01b03166114e3565b6001821115611da557611da2818461261c565b92505b5080611db081612726565b915050611cfb565b5050505b8015611e8a5760115415611dee57611dee61271060115483611dde91906125e3565b611de891906125fa565b306114e3565b600e5415611e1457611e14612710600e5483611e0a91906125e3565b61092591906125fa565b6000612710601154600e54611e2991906125d0565b611e3390846125e3565b611e3d91906125fa565b611e47908361261c565b90508015611e6657600854611e669082906001600160a01b03166114e3565b60105415611e88576010544790811115611e8657611e868161dead611f72565b505b505b506017805460ff19169055565b6017546001600160a01b038416600090815260186020526040902054829160ff90811615911680611ee057506001600160a01b03841660009081526018602052604090205460ff165b15611ee9575060005b8015611f6057600080611efd8787876120d8565b90925090506000611f0e82846125d0565b1115611f5d5780611f1f838761261c565b611f29919061261c565b93508015611f495780600b6000828254611f4391906125d0565b90915550505b611f5d8730611f5884866125d0565b6121c1565b50505b611f6b8585846121c1565b5050505050565b6040805160028082526060820183526000926020830190803683375050601b54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611fdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612000919061265b565b8160008151811061201357612013612645565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061204757612047612645565b6001600160a01b039283166020918202929092010152601b54604051637ff36ab560e01b815242929190911690637ff36ab59086906120919060009087908990889060040161273d565b60006040518083038185885af11580156120af573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611f6b9190810190612772565b6001600160a01b0383166000908152601960205260408120548190819081908190819060ff161561211b57601c546121149061ffff16856125d0565b9350612173565b6001600160a01b03881660009081526019602052604090205460ff161561215357601c546121149062010000900461ffff16856125d0565b601c5461216c90640100000000900461ffff16856125d0565b9350600190505b83156121935761271061218685896125e3565b61219091906125fa565b92505b806121b3576127106121a66032896125e3565b6121b091906125fa565b91505b509097909650945050505050565b6001600160a01b0383166122255760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bc5565b6001600160a01b0382166122875760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bc5565b6001600160a01b038316600090815260208190526040902054818110156122ff5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610bc5565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361102a565b600060208083528351808285015260005b8181101561239257858101830151858201604001528201612376565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610db657600080fd5b600080604083850312156123db57600080fd5b82356123e6816123b3565b946020939093013593505050565b803561ffff8116811461240657600080fd5b919050565b60006020828403121561241d57600080fd5b612426826123f4565b9392505050565b60006020828403121561243f57600080fd5b5035919050565b60008060006060848603121561245b57600080fd5b8335612466816123b3565b92506020840135612476816123b3565b929592945050506040919091013590565b60008060006060848603121561249c57600080fd5b6124a5846123f4565b92506124b3602085016123f4565b91506124c1604085016123f4565b90509250925092565b6000602082840312156124dc57600080fd5b8135612426816123b3565b8035801515811461240657600080fd5b60006020828403121561250957600080fd5b612426826124e7565b6000806040838503121561252557600080fd5b8235612530816123b3565b91506020830135612540816123b3565b809150509250929050565b6000806040838503121561255e57600080fd5b8235612569816123b3565b9150612577602084016124e7565b90509250929050565b600181811c9082168061259457607f821691505b6020821081036125b457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b5857610b586125ba565b8082028115828204841417610b5857610b586125ba565b60008261261757634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610b5857610b586125ba565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561266d57600080fd5b8151612426816123b3565b600081518084526020808501945080840160005b838110156126b15781516001600160a01b03168752958201959082019060010161268c565b509495945050505050565b85815284602082015260a0604082015260006126db60a0830186612678565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561270d57600080fd5b8351925060208401519150604084015190509250925092565b600081612735576127356125ba565b506000190190565b8481526080602082015260006127566080830186612678565b6001600160a01b03949094166040830152506060015292915050565b6000602080838503121561278557600080fd5b825167ffffffffffffffff8082111561279d57600080fd5b818501915085601f8301126127b157600080fd5b8151818111156127c3576127c361262f565b8060051b604051601f19603f830116810181811085821117156127e8576127e861262f565b60405291825284820192508381018501918883111561280657600080fd5b938501935b828510156128245784518452938501939285019261280b565b9897505050505050505056fea26469706673582212203b9838ccc9753e7bee57f27f71d6a57ee2f32ef23c409fc2d3440fd66e8343a264736f6c63430008130033", + "deployedBytecode": "0x60806040526004361061037a5760003560e01c8063768dc710116101d1578063c5f956af11610102578063deb5896e116100a0578063f2fde38b1161006f578063f2fde38b14610a33578063f311732214610a53578063f887ea4014610a73578063f901796614610a9357600080fd5b8063deb5896e146109c7578063df8408fe146109dd578063edf731c5146109fd578063efac458514610a1357600080fd5b8063c8c8ebe4116100dc578063c8c8ebe41461094a578063cd5f101d14610960578063d83067861461098d578063dd62ed3e146109a757600080fd5b8063c5f956af146108ea578063c6aca36b1461090a578063c876d0b91461092a57600080fd5b8063a2065e711161016f578063a9059cbb11610149578063a9059cbb1461086e578063aa4bde281461088e578063b62496f5146108a4578063bd74c046146108d457600080fd5b8063a2065e7114610818578063a335d4ff14610838578063a457c2d71461084e57600080fd5b80638d0cb35a116101ab5780638d0cb35a146107a55780638da5cb5b146107c557806395d89b41146107e35780639d0014b1146107f857600080fd5b8063768dc7101461073557806379cc6790146107655780637dee32901461078557600080fd5b8063313ce567116102ab5780635342acb4116102495780636f15d975116102235780636f15d975146106b457806370a08231146106ca578063715018a614610700578063738c6c091461071557600080fd5b80635342acb414610650578063560d52d4146106895780636aa5b37f1461069e57600080fd5b80633d90fff9116102855780633d90fff9146105cc57806342966c68146105e2578063452ed4f1146106025780634a569e941461063a57600080fd5b8063313ce5671461057057806332cde6641461058c57806339509351146105ac57600080fd5b80631630e97f116103185780631c06a7e1116102f25780631c06a7e1146104ba5780631e293c101461051057806323b872dd1461053057806327a14fc21461055057600080fd5b80631630e97f1461046f57806318160ddd1461048f5780631b11c874146104a457600080fd5b8063095ea7b311610354578063095ea7b3146103e7578063123e6cd81461041757806313fa254a14610439578063148829f51461045957600080fd5b80630445b6671461038657806306fdde03146103af578063094d776f146103d157600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039c60095481565b6040519081526020015b60405180910390f35b3480156103bb57600080fd5b506103c4610ab2565b6040516103a69190612365565b3480156103dd57600080fd5b5061039c60145481565b3480156103f357600080fd5b506104076104023660046123c8565b610b44565b60405190151581526020016103a6565b34801561042357600080fd5b5061043761043236600461240b565b610b5e565b005b34801561044557600080fd5b5061039c61045436600461242d565b610bd7565b34801561046557600080fd5b5061039c600c5481565b34801561047b57600080fd5b5061043761048a36600461242d565b610bf8565b34801561049b57600080fd5b5060025461039c565b3480156104b057600080fd5b5061039c60155481565b3480156104c657600080fd5b50601c546104eb9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103a6565b34801561051c57600080fd5b5061043761052b36600461242d565b610c6b565b34801561053c57600080fd5b5061040761054b366004612446565b610c9a565b34801561055c57600080fd5b5061043761056b36600461242d565b610cbe565b34801561057c57600080fd5b50604051601281526020016103a6565b34801561059857600080fd5b506104376105a7366004612487565b610ced565b3480156105b857600080fd5b506104076105c73660046123c8565b610d8a565b3480156105d857600080fd5b5061039c60165481565b3480156105ee57600080fd5b506104376105fd36600461242d565b610dac565b34801561060e57600080fd5b50600654610622906001600160a01b031681565b6040516001600160a01b0390911681526020016103a6565b34801561064657600080fd5b5061039c60115481565b34801561065c57600080fd5b5061040761066b3660046124ca565b6001600160a01b031660009081526018602052604090205460ff1690565b34801561069557600080fd5b5061039c603281565b3480156106aa57600080fd5b5061039c60125481565b3480156106c057600080fd5b5061039c60105481565b3480156106d657600080fd5b5061039c6106e53660046124ca565b6001600160a01b031660009081526020819052604090205490565b34801561070c57600080fd5b50610437610db9565b34801561072157600080fd5b5061043761073036600461240b565b610e51565b34801561074157600080fd5b506104076107503660046124ca565b60186020526000908152604090205460ff1681565b34801561077157600080fd5b506104376107803660046123c8565b610ec5565b34801561079157600080fd5b506104376107a036600461242d565b610ede565b3480156107b157600080fd5b506104376107c03660046124f7565b610f0d565b3480156107d157600080fd5b506005546001600160a01b0316610622565b3480156107ef57600080fd5b506103c4610f2f565b34801561080457600080fd5b5061043761081336600461242d565b610f3e565b34801561082457600080fd5b506104376108333660046124f7565b610f4b565b34801561084457600080fd5b5061039c61271081565b34801561085a57600080fd5b506104076108693660046123c8565b610f6f565b34801561087a57600080fd5b506104076108893660046123c8565b610fea565b34801561089a57600080fd5b5061039c600a5481565b3480156108b057600080fd5b506104076108bf3660046124ca565b60196020526000908152604090205460ff1681565b3480156108e057600080fd5b5061039c600b5481565b3480156108f657600080fd5b50600854610622906001600160a01b031681565b34801561091657600080fd5b5061043761092536600461242d565b610ff8565b34801561093657600080fd5b506017546104079062010000900460ff1681565b34801561095657600080fd5b5061039c600f5481565b34801561096c57600080fd5b5061039c61097b3660046124ca565b601a6020526000908152604090205481565b34801561099957600080fd5b506017546104079060ff1681565b3480156109b357600080fd5b5061039c6109c2366004612512565b611030565b3480156109d357600080fd5b5061039c600e5481565b3480156109e957600080fd5b506104376109f836600461254b565b61105b565b348015610a0957600080fd5b5061039c60135481565b348015610a1f57600080fd5b50610437610a2e36600461242d565b61108e565b348015610a3f57600080fd5b50610437610a4e3660046124ca565b61109b565b348015610a5f57600080fd5b50610622610a6e36600461242d565b611111565b348015610a7f57600080fd5b50601b54610622906001600160a01b031681565b348015610a9f57600080fd5b5060175461040790610100900460ff1681565b606060038054610ac190612580565b80601f0160208091040260200160405190810160405280929190818152602001828054610aed90612580565b8015610b3a5780601f10610b0f57610100808354040283529160200191610b3a565b820191906000526020600020905b815481529060010190602001808311610b1d57829003601f168201915b5050505050905090565b600033610b5281858561113b565b60019150505b92915050565b610b6661125f565b612710600e548261ffff16610b7b91906125d0565b1115610bce5760405162461bcd60e51b815260206004820181905260248201527f50657263656e742063616e7420626520686967686572207468616e203130302560448201526064015b60405180910390fd5b61ffff16601155565b600d8181548110610be757600080fd5b600091825260209091200154905081565b610c0061125f565b6402540be400811015610c665760405162461bcd60e51b815260206004820152602860248201527f6d6178206761732070726963652063616e74206265206c6f776572207468616e604482015267203130206757656960c01b6064820152608401610bc5565b601555565b610c7361125f565b61271081610c8060025490565b610c8a91906125e3565b610c9491906125fa565b600f5550565b600033610ca88582856112b9565b610cb385858561132d565b506001949350505050565b610cc661125f565b61271081610cd360025490565b610cdd91906125e3565b610ce791906125fa565b600a5550565b610cf561125f565b6126ac8361ffff16108015610d0f57506126ac8261ffff16105b610d4b5760405162461bcd60e51b815260206004820152600d60248201526c0a8dede40d0d2ced0e840e8c2f609b1b6044820152606401610bc5565b601c805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b600033610b52818585610d9d8383611030565b610da791906125d0565b61113b565b610db6338261135f565b50565b610dc161125f565b601c5461119461ffff909116108015610de85750601c546111946201000090910461ffff16105b610e455760405162461bcd60e51b815260206004820152602860248201527f546f6f206869676874207461782c2063616e27742072656e6f756e6365206f776044820152673732b939b434b81760c11b6064820152608401610bc5565b610e4f6000611491565b565b610e5961125f565b6127106011548261ffff16610e6e91906125d0565b1115610ebc5760405162461bcd60e51b815260206004820181905260248201527f50657263656e742063616e7420626520686967686572207468616e20313030256044820152606401610bc5565b61ffff16600e55565b610ed08233836112b9565b610eda828261135f565b5050565b610ee661125f565b61271081610ef360025490565b610efd91906125e3565b610f0791906125fa565b60125550565b610f1561125f565b601780549115156101000261ff0019909216919091179055565b606060048054610ac190612580565b610f4661125f565b600955565b610f5361125f565b60178054911515620100000262ff000019909216919091179055565b60003381610f7d8286611030565b905083811015610fdd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610bc5565b610cb3828686840361113b565b600033610b5281858561132d565b60006110056002836125fa565b90504761101282306114e3565b600061101e824761261c565b905061102a8382611641565b50505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61106361125f565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b61109661125f565b601055565b6110a361125f565b6001600160a01b0381166111085760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bc5565b610db681611491565b6007818154811061112157600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b03831661119d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bc5565b6001600160a01b0382166111fe5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bc5565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b03163314610e4f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bc5565b60006112c58484611030565b9050600019811461102a57818110156113205760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610bc5565b61102a848484840361113b565b6113388383836116f8565b6113428383611c06565b1561134f5761134f611cbb565b61135a838383611e97565b505050565b6001600160a01b0382166113bf5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610bc5565b6001600160a01b038216600090815260208190526040902054818110156114335760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610bc5565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061151857611518612645565b6001600160a01b03928316602091820292909201810191909152601b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611571573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611595919061265b565b816001815181106115a8576115a8612645565b6001600160a01b039283166020918202929092010152601b5442916115d0913091168661113b565b601b5460405163791ac94760e01b81526001600160a01b039091169063791ac947906116099087906000908790899088906004016126bc565b600060405180830381600087803b15801561162357600080fd5b505af1158015611637573d6000803e3d6000fd5b5050505050505050565b601b54429061165d9030906001600160a01b031660001961113b565b601b5460405163f305d71960e01b81523060048201819052602482018690526000604483018190526064830152608482015260a481018390526001600160a01b039091169063f305d71990849060c40160606040518083038185885af11580156116cb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116f091906126f8565b505050505050565b6001600160a01b0383166117645760405162461bcd60e51b815260206004820152602d60248201527f45524332303a207472616e736665722066726f6d20746865205a45524f5f414460448201526c4452455353206164647265737360981b6064820152608401610bc5565b6001600160a01b0382166117ce5760405162461bcd60e51b815260206004820152602b60248201527f45524332303a207472616e7366657220746f20746865205a45524f5f4144445260448201526a455353206164647265737360a81b6064820152608401610bc5565b600081116118385760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152707468616e205a45524f5f4144445245535360781b6064820152608401610bc5565b60175462010000900460ff16801561185e575060145460135461185b91906125d0565b42105b156119f9576005546001600160a01b0384811691161480159061188f5750601b546001600160a01b03838116911614155b80156118a957506006546001600160a01b03838116911614155b80156118be57506001600160a01b0382163014155b156119f9576012541561190e5760125481111561190e5760405162461bcd60e51b815260206004820152600e60248201526d26b0bc10213abc902634b6b4ba1760911b6044820152606401610bc5565b601754610100900460ff1615611970576015543a11156119705760405162461bcd60e51b815260206004820152601860248201527f4761732070726963652065786365656473206c696d69742e00000000000000006044820152606401610bc5565b336000908152601a60205260409020544210156119db5760405162461bcd60e51b815260206004820152602360248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201526232b21760e91b6064820152608401610bc5565b6016546119e890426125d0565b336000908152601a60205260409020555b6005546001600160a01b03848116911614801590611a2557506005546001600160a01b03838116911614155b8015611a3957506001600160a01b03821615155b8015611a5057506001600160a01b03821661dead14155b8015611a6557506001600160a01b0382163014155b8015611a74575060175460ff16155b1561135a576001600160a01b03831660009081526019602052604090205460ff1615611b7457600f54811115611b0a5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610bc5565b600a546001600160a01b038316600090815260208190526040902054611b3090836125d0565b111561135a5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610bc5565b6001600160a01b03821660009081526019602052604090205460ff1615611b0a57600f5481111561135a5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610bc5565b306000908152602081905260408120546009548110158015611c2b575060175460ff16155b8015611c4557506006546001600160a01b03858116911614155b8015611c6957506006546001600160a01b0316600090815260208190526040812054115b8015611c8e57506001600160a01b03831660009081526018602052604090205460ff16155b8015611cb357506001600160a01b03841660009081526018602052604090205460ff16155b949350505050565b6017805460ff1916600117905530600090815260208190526040902054600b5415611dbc57600b54611ced818361261c565b6000600b5560075490925081905b8015611db857600081600114611d5057612710600d611d1b60018561261c565b81548110611d2b57611d2b612645565b906000526020600020015485611d4191906125e3565b611d4b91906125fa565b611d52565b825b9050611d8f816007611d6560018661261c565b81548110611d7557611d75612645565b6000918252602090912001546001600160a01b03166114e3565b6001821115611da557611da2818461261c565b92505b5080611db081612726565b915050611cfb565b5050505b8015611e8a5760115415611dee57611dee61271060115483611dde91906125e3565b611de891906125fa565b306114e3565b600e5415611e1457611e14612710600e5483611e0a91906125e3565b61092591906125fa565b6000612710601154600e54611e2991906125d0565b611e3390846125e3565b611e3d91906125fa565b611e47908361261c565b90508015611e6657600854611e669082906001600160a01b03166114e3565b60105415611e88576010544790811115611e8657611e868161dead611f72565b505b505b506017805460ff19169055565b6017546001600160a01b038416600090815260186020526040902054829160ff90811615911680611ee057506001600160a01b03841660009081526018602052604090205460ff165b15611ee9575060005b8015611f6057600080611efd8787876120d8565b90925090506000611f0e82846125d0565b1115611f5d5780611f1f838761261c565b611f29919061261c565b93508015611f495780600b6000828254611f4391906125d0565b90915550505b611f5d8730611f5884866125d0565b6121c1565b50505b611f6b8585846121c1565b5050505050565b6040805160028082526060820183526000926020830190803683375050601b54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611fdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612000919061265b565b8160008151811061201357612013612645565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061204757612047612645565b6001600160a01b039283166020918202929092010152601b54604051637ff36ab560e01b815242929190911690637ff36ab59086906120919060009087908990889060040161273d565b60006040518083038185885af11580156120af573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611f6b9190810190612772565b6001600160a01b0383166000908152601960205260408120548190819081908190819060ff161561211b57601c546121149061ffff16856125d0565b9350612173565b6001600160a01b03881660009081526019602052604090205460ff161561215357601c546121149062010000900461ffff16856125d0565b601c5461216c90640100000000900461ffff16856125d0565b9350600190505b83156121935761271061218685896125e3565b61219091906125fa565b92505b806121b3576127106121a66032896125e3565b6121b091906125fa565b91505b509097909650945050505050565b6001600160a01b0383166122255760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bc5565b6001600160a01b0382166122875760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bc5565b6001600160a01b038316600090815260208190526040902054818110156122ff5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610bc5565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361102a565b600060208083528351808285015260005b8181101561239257858101830151858201604001528201612376565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610db657600080fd5b600080604083850312156123db57600080fd5b82356123e6816123b3565b946020939093013593505050565b803561ffff8116811461240657600080fd5b919050565b60006020828403121561241d57600080fd5b612426826123f4565b9392505050565b60006020828403121561243f57600080fd5b5035919050565b60008060006060848603121561245b57600080fd5b8335612466816123b3565b92506020840135612476816123b3565b929592945050506040919091013590565b60008060006060848603121561249c57600080fd5b6124a5846123f4565b92506124b3602085016123f4565b91506124c1604085016123f4565b90509250925092565b6000602082840312156124dc57600080fd5b8135612426816123b3565b8035801515811461240657600080fd5b60006020828403121561250957600080fd5b612426826124e7565b6000806040838503121561252557600080fd5b8235612530816123b3565b91506020830135612540816123b3565b809150509250929050565b6000806040838503121561255e57600080fd5b8235612569816123b3565b9150612577602084016124e7565b90509250929050565b600181811c9082168061259457607f821691505b6020821081036125b457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b5857610b586125ba565b8082028115828204841417610b5857610b586125ba565b60008261261757634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610b5857610b586125ba565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561266d57600080fd5b8151612426816123b3565b600081518084526020808501945080840160005b838110156126b15781516001600160a01b03168752958201959082019060010161268c565b509495945050505050565b85815284602082015260a0604082015260006126db60a0830186612678565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561270d57600080fd5b8351925060208401519150604084015190509250925092565b600081612735576127356125ba565b506000190190565b8481526080602082015260006127566080830186612678565b6001600160a01b03949094166040830152506060015292915050565b6000602080838503121561278557600080fd5b825167ffffffffffffffff8082111561279d57600080fd5b818501915085601f8301126127b157600080fd5b8151818111156127c3576127c361262f565b8060051b604051601f19603f830116810181811085821117156127e8576127e861262f565b60405291825284820192508381018501918883111561280657600080fd5b938501935b828510156128245784518452938501939285019261280b565b9897505050505050505056fea26469706673582212203b9838ccc9753e7bee57f27f71d6a57ee2f32ef23c409fc2d3440fd66e8343a264736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/resources/Token.sol b/resources/Token.sol new file mode 100644 index 0000000..441bf9d --- /dev/null +++ b/resources/Token.sol @@ -0,0 +1,1572 @@ +/* +Deployed by Token Deploy Creator Bot +Telegram https://t.me/TokenDeployCreatorBot +@TokenDeployCreatorBot +*/ + +// SPDX-License-Identifier: MIT + +/** + * @dev Provides information about the current execution context, including the + * sender of the transaction and its data. While these are generally available + * via msg.sender and msg.data, they should not be accessed in such a direct + * manner, since when dealing with meta-transactions the account sending and + * paying for execution may not be the actual sender (as far as an application + * is concerned). + * + * This contract is only required for intermediate, library-like contracts. + */ +abstract contract Context { + function _msgSender() internal view virtual returns (address) { + return msg.sender; + } + + function _msgData() internal view virtual returns (bytes calldata) { + return msg.data; + } +} + + +// File @openzeppelin/contracts/access/Ownable.sol@v4.9.2 + +// Original license: SPDX_License_Identifier: MIT +// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.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. + */ + constructor() { + _transferOwnership(_msgSender()); + } + + /** + * @dev Throws if called by any account other than the owner. + */ + modifier onlyOwner() { + _checkOwner(); + _; + } + + /** + * @dev Returns the address of the current owner. + */ + function owner() public view virtual returns (address) { + return _owner; + } + + /** + * @dev Throws if the sender is not the owner. + */ + function _checkOwner() internal view virtual { + require(owner() == _msgSender(), "Ownable: caller is not the owner"); + } + + /** + * @dev Leaves the contract without owner. It will not be possible to call + * `onlyOwner` functions. Can only be called by the current owner. + * + * NOTE: Renouncing ownership will leave the contract without an owner, + * thereby disabling any functionality that is only available to the owner. + */ + function renounceOwnership() public virtual onlyOwner { + _transferOwnership(address(0)); + } + + /** + * @dev Transfers ownership of the contract to a new account (`newOwner`). + * Can only be called by the current owner. + */ + function transferOwnership(address newOwner) public virtual onlyOwner { + require(newOwner != address(0), "Ownable: new owner is the zero address"); + _transferOwnership(newOwner); + } + + /** + * @dev Transfers ownership of the contract to a new account (`newOwner`). + * Internal function without access restriction. + */ + function _transferOwnership(address newOwner) internal virtual { + address oldOwner = _owner; + _owner = newOwner; + emit OwnershipTransferred(oldOwner, newOwner); + } +} + + +// File @openzeppelin/contracts/token/ERC20/IERC20.sol@v4.9.2 + +// Original license: SPDX_License_Identifier: MIT +// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) + + + +/** + * @dev Interface of the ERC20 standard as defined in the EIP. + */ +interface IERC20 { + /** + * @dev Emitted when `value` tokens are moved from one account (`from`) to + * another (`to`). + * + * Note that `value` may be zero. + */ + event Transfer(address indexed from, address indexed to, uint256 value); + + /** + * @dev Emitted when the allowance of a `spender` for an `owner` is set by + * a call to {approve}. `value` is the new allowance. + */ + event Approval(address indexed owner, address indexed spender, uint256 value); + + /** + * @dev Returns the amount of tokens in existence. + */ + function totalSupply() external view returns (uint256); + + /** + * @dev Returns the amount of tokens owned by `account`. + */ + function balanceOf(address account) external view returns (uint256); + + /** + * @dev Moves `amount` tokens from the caller's account to `to`. + * + * Returns a boolean value indicating whether the operation succeeded. + * + * Emits a {Transfer} event. + */ + function transfer(address to, uint256 amount) external returns (bool); + + /** + * @dev Returns the remaining number of tokens that `spender` will be + * allowed to spend on behalf of `owner` through {transferFrom}. This is + * zero by default. + * + * This value changes when {approve} or {transferFrom} are called. + */ + function allowance(address owner, address spender) external view returns (uint256); + + /** + * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. + * + * Returns a boolean value indicating whether the operation succeeded. + * + * IMPORTANT: Beware that changing an allowance with this method brings the risk + * that someone may use both the old and the new allowance by unfortunate + * transaction ordering. One possible solution to mitigate this race + * condition is to first reduce the spender's allowance to 0 and set the + * desired value afterwards: + * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 + * + * Emits an {Approval} event. + */ + function approve(address spender, uint256 amount) external returns (bool); + + /** + * @dev Moves `amount` tokens from `from` to `to` using the + * allowance mechanism. `amount` is then deducted from the caller's + * allowance. + * + * Returns a boolean value indicating whether the operation succeeded. + * + * Emits a {Transfer} event. + */ + function transferFrom(address from, address to, uint256 amount) external returns (bool); +} + + +// File @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol@v4.9.2 + +// Original license: SPDX_License_Identifier: MIT +// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.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. + */ + function decimals() external view returns (uint8); +} + + +// File @openzeppelin/contracts/token/ERC20/ERC20.sol@v4.9.2 + +// Original license: SPDX_License_Identifier: MIT +// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.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 + * applications. + * + * Additionally, an {Approval} event is emitted on calls to {transferFrom}. + * This allows applications to reconstruct the allowance for all accounts just + * by listening to said events. Other implementations of the EIP may not emit + * these events, as it isn't required by the specification. + * + * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} + * functions have been added to mitigate the well-known issues around setting + * allowances. See {IERC20-approve}. + */ +contract ERC20 is Context, IERC20, IERC20Metadata { + mapping(address => uint256) private _balances; + + mapping(address => mapping(address => uint256)) private _allowances; + + uint256 private _totalSupply; + + string private _name; + string private _symbol; + + /** + * @dev Sets the values for {name} and {symbol}. + * + * All two of these values are immutable: they can only be set once during + * construction. + */ + constructor(string memory name_, string memory symbol_) { + _name = name_; + _symbol = symbol_; + } + + /** + * @dev Returns the name of the token. + */ + function name() public view virtual override returns (string memory) { + return _name; + } + + /** + * @dev Returns the symbol of the token, usually a shorter version of the + * name. + */ + function symbol() public view virtual override returns (string memory) { + return _symbol; + } + + /** + * @dev Returns the number of decimals used to get its user representation. + * For example, if `decimals` equals `2`, a balance of `505` tokens should + * be displayed to a user as `5.05` (`505 / 10 ** 2`). + * + * Tokens usually opt for a value of 18, imitating the relationship between + * Ether and Wei. This is the default value returned by this function, unless + * it's overridden. + * + * NOTE: This information is only used for _display_ purposes: it in + * no way affects any of the arithmetic of the contract, including + * {IERC20-balanceOf} and {IERC20-transfer}. + */ + function decimals() public view virtual override returns (uint8) { + return 18; + } + + /** + * @dev See {IERC20-totalSupply}. + */ + function totalSupply() public view virtual override returns (uint256) { + return _totalSupply; + } + + /** + * @dev See {IERC20-balanceOf}. + */ + function balanceOf(address account) public view virtual override returns (uint256) { + return _balances[account]; + } + + /** + * @dev See {IERC20-transfer}. + * + * Requirements: + * + * - `to` cannot be the zero address. + * - the caller must have a balance of at least `amount`. + */ + function transfer(address to, uint256 amount) public virtual override returns (bool) { + address owner = _msgSender(); + _transfer(owner, to, amount); + return true; + } + + /** + * @dev See {IERC20-allowance}. + */ + function allowance(address owner, address spender) public view virtual override returns (uint256) { + return _allowances[owner][spender]; + } + + /** + * @dev See {IERC20-approve}. + * + * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on + * `transferFrom`. This is semantically equivalent to an infinite approval. + * + * Requirements: + * + * - `spender` cannot be the zero address. + */ + function approve(address spender, uint256 amount) public virtual override returns (bool) { + address owner = _msgSender(); + _approve(owner, spender, amount); + return true; + } + + /** + * @dev See {IERC20-transferFrom}. + * + * Emits an {Approval} event indicating the updated allowance. This is not + * required by the EIP. See the note at the beginning of {ERC20}. + * + * NOTE: Does not update the allowance if the current allowance + * is the maximum `uint256`. + * + * Requirements: + * + * - `from` and `to` cannot be the zero address. + * - `from` must have a balance of at least `amount`. + * - the caller must have allowance for ``from``'s tokens of at least + * `amount`. + */ + function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { + address spender = _msgSender(); + _spendAllowance(from, spender, amount); + _transfer(from, to, amount); + return true; + } + + /** + * @dev Atomically increases the allowance granted to `spender` by the caller. + * + * This is an alternative to {approve} that can be used as a mitigation for + * problems described in {IERC20-approve}. + * + * Emits an {Approval} event indicating the updated allowance. + * + * Requirements: + * + * - `spender` cannot be the zero address. + */ + function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { + address owner = _msgSender(); + _approve(owner, spender, allowance(owner, spender) + addedValue); + return true; + } + + /** + * @dev Atomically decreases the allowance granted to `spender` by the caller. + * + * This is an alternative to {approve} that can be used as a mitigation for + * problems described in {IERC20-approve}. + * + * Emits an {Approval} event indicating the updated allowance. + * + * Requirements: + * + * - `spender` cannot be the zero address. + * - `spender` must have allowance for the caller of at least + * `subtractedValue`. + */ + function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { + address owner = _msgSender(); + uint256 currentAllowance = allowance(owner, spender); + require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); + unchecked { + _approve(owner, spender, currentAllowance - subtractedValue); + } + + return true; + } + + /** + * @dev Moves `amount` of tokens from `from` to `to`. + * + * This internal function is equivalent to {transfer}, and can be used to + * e.g. implement automatic token fees, slashing mechanisms, etc. + * + * Emits a {Transfer} event. + * + * Requirements: + * + * - `from` cannot be the zero address. + * - `to` cannot be the zero address. + * - `from` must have a balance of at least `amount`. + */ + function _transfer(address from, address to, uint256 amount) internal virtual { + require(from != address(0), "ERC20: transfer from the zero address"); + require(to != address(0), "ERC20: transfer to the zero address"); + + _beforeTokenTransfer(from, to, amount); + + uint256 fromBalance = _balances[from]; + require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); + unchecked { + _balances[from] = fromBalance - amount; + // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by + // decrementing then incrementing. + _balances[to] += amount; + } + + emit Transfer(from, to, amount); + + _afterTokenTransfer(from, to, amount); + } + + /** @dev Creates `amount` tokens and assigns them to `account`, increasing + * the total supply. + * + * Emits a {Transfer} event with `from` set to the zero address. + * + * Requirements: + * + * - `account` cannot be the zero address. + */ + function _mint(address account, uint256 amount) internal virtual { + require(account != address(0), "ERC20: mint to the zero address"); + + _beforeTokenTransfer(address(0), account, amount); + + _totalSupply += amount; + unchecked { + // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. + _balances[account] += amount; + } + emit Transfer(address(0), account, amount); + + _afterTokenTransfer(address(0), account, amount); + } + + /** + * @dev Destroys `amount` tokens from `account`, reducing the + * total supply. + * + * Emits a {Transfer} event with `to` set to the zero address. + * + * Requirements: + * + * - `account` cannot be the zero address. + * - `account` must have at least `amount` tokens. + */ + function _burn(address account, uint256 amount) internal virtual { + require(account != address(0), "ERC20: burn from the zero address"); + + _beforeTokenTransfer(account, address(0), amount); + + uint256 accountBalance = _balances[account]; + require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); + unchecked { + _balances[account] = accountBalance - amount; + // Overflow not possible: amount <= accountBalance <= totalSupply. + _totalSupply -= amount; + } + + emit Transfer(account, address(0), amount); + + _afterTokenTransfer(account, address(0), amount); + } + + /** + * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. + * + * This internal function is equivalent to `approve`, and can be used to + * e.g. set automatic allowances for certain subsystems, etc. + * + * Emits an {Approval} event. + * + * Requirements: + * + * - `owner` cannot be the zero address. + * - `spender` cannot be the zero address. + */ + function _approve(address owner, address spender, uint256 amount) internal virtual { + require(owner != address(0), "ERC20: approve from the zero address"); + require(spender != address(0), "ERC20: approve to the zero address"); + + _allowances[owner][spender] = amount; + emit Approval(owner, spender, amount); + } + + /** + * @dev Updates `owner` s allowance for `spender` based on spent `amount`. + * + * Does not update the allowance amount in case of infinite allowance. + * Revert if not enough allowance is available. + * + * Might emit an {Approval} event. + */ + function _spendAllowance(address owner, address spender, uint256 amount) internal virtual { + uint256 currentAllowance = allowance(owner, spender); + if (currentAllowance != type(uint256).max) { + require(currentAllowance >= amount, "ERC20: insufficient allowance"); + unchecked { + _approve(owner, spender, currentAllowance - amount); + } + } + } + + /** + * @dev Hook that is called before any transfer of tokens. This includes + * minting and burning. + * + * Calling conditions: + * + * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens + * will be transferred to `to`. + * - when `from` is zero, `amount` tokens will be minted for `to`. + * - when `to` is zero, `amount` of ``from``'s tokens will be burned. + * - `from` and `to` are never both zero. + * + * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. + */ + function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} + + /** + * @dev Hook that is called after any transfer of tokens. This includes + * minting and burning. + * + * Calling conditions: + * + * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens + * has been transferred to `to`. + * - when `from` is zero, `amount` tokens have been minted for `to`. + * - when `to` is zero, `amount` of ``from``'s tokens have been burned. + * - `from` and `to` are never both zero. + * + * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. + */ + function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} +} + + +// File @openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol@v4.9.2 + +// Original license: SPDX_License_Identifier: MIT +// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.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. + * + * See {ERC20-_burn} and {ERC20-allowance}. + * + * Requirements: + * + * - the caller must have allowance for ``accounts``'s tokens of at least + * `amount`. + */ + function burnFrom(address account, uint256 amount) public virtual { + _spendAllowance(account, _msgSender(), amount); + _burn(account, amount); + } +} + + +// File @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol@v1.1.0-beta.0 + +interface IUniswapV2Router01 { + function factory() external pure returns (address); + function WETH() external pure returns (address); + + function addLiquidity( + address tokenA, + address tokenB, + uint amountADesired, + uint amountBDesired, + uint amountAMin, + uint amountBMin, + address to, + uint deadline + ) external returns (uint amountA, uint amountB, uint liquidity); + function addLiquidityETH( + address token, + uint amountTokenDesired, + uint amountTokenMin, + uint amountETHMin, + address to, + uint deadline + ) external payable returns (uint amountToken, uint amountETH, uint liquidity); + function removeLiquidity( + address tokenA, + address tokenB, + uint liquidity, + uint amountAMin, + uint amountBMin, + address to, + uint deadline + ) external returns (uint amountA, uint amountB); + function removeLiquidityETH( + address token, + uint liquidity, + uint amountTokenMin, + uint amountETHMin, + address to, + uint deadline + ) external returns (uint amountToken, uint amountETH); + function removeLiquidityWithPermit( + address tokenA, + address tokenB, + uint liquidity, + uint amountAMin, + uint amountBMin, + address to, + uint deadline, + bool approveMax, uint8 v, bytes32 r, bytes32 s + ) external returns (uint amountA, uint amountB); + function removeLiquidityETHWithPermit( + address token, + uint liquidity, + uint amountTokenMin, + uint amountETHMin, + address to, + uint deadline, + bool approveMax, uint8 v, bytes32 r, bytes32 s + ) external returns (uint amountToken, uint amountETH); + function swapExactTokensForTokens( + uint amountIn, + uint amountOutMin, + address[] calldata path, + address to, + uint deadline + ) external returns (uint[] memory amounts); + function swapTokensForExactTokens( + uint amountOut, + uint amountInMax, + address[] calldata path, + address to, + uint deadline + ) external returns (uint[] memory amounts); + function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) + external + payable + returns (uint[] memory amounts); + function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) + external + returns (uint[] memory amounts); + function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) + external + returns (uint[] memory amounts); + function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) + external + payable + returns (uint[] memory amounts); + + function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); + function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); + function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); + function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); + function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); +} + + +// File @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol@v1.1.0-beta.0 + +interface IUniswapV2Router02 is IUniswapV2Router01 { + function removeLiquidityETHSupportingFeeOnTransferTokens( + address token, + uint liquidity, + uint amountTokenMin, + uint amountETHMin, + address to, + uint deadline + ) external returns (uint amountETH); + function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( + address token, + uint liquidity, + uint amountTokenMin, + uint amountETHMin, + address to, + uint deadline, + bool approveMax, uint8 v, bytes32 r, bytes32 s + ) external returns (uint amountETH); + + function swapExactTokensForTokensSupportingFeeOnTransferTokens( + uint amountIn, + uint amountOutMin, + address[] calldata path, + address to, + uint deadline + ) external; + function swapExactETHForTokensSupportingFeeOnTransferTokens( + uint amountOutMin, + address[] calldata path, + address to, + uint deadline + ) external payable; + function swapExactTokensForETHSupportingFeeOnTransferTokens( + uint amountIn, + uint amountOutMin, + address[] calldata path, + address to, + uint deadline + ) external; +} + + +// File @uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol@v1.0.1 + +interface IUniswapV2Factory { + event PairCreated(address indexed token0, address indexed token1, address pair, uint); + + function feeTo() external view returns (address); + function feeToSetter() external view returns (address); + + function getPair(address tokenA, address tokenB) external view returns (address pair); + function allPairs(uint) external view returns (address pair); + function allPairsLength() external view returns (uint); + + function createPair(address tokenA, address tokenB) external returns (address pair); + + function setFeeTo(address) external; + function setFeeToSetter(address) external; +} + + +// File contracts/IDividendTracker.sol + +// Original license: SPDX_License_Identifier: MIT + +interface IDividendTracker { + function excludeFromDividends(address account) external; + + function setBalance(address payable account, uint256 newBalance) external; + + function process(uint256 gas) external returns (uint256, uint256, uint256); + + function distributeDividends(uint256 amount) external; + + function rewardsToken() external view returns (address); +} + + +// File contracts/Token.sol + +// Original license: SPDX_License_Identifier: MIT +pragma solidity 0.8.19; + +// File contracts/Token.sol +contract Token is ERC20Burnable, Ownable { + // ADDRESSESS ------------------------------------------------------------------------------------------- + address public lpPair; // Liquidity token address + address[] public platformFeeAddresses; // service fee wallet address + address public treasuryAddress; // owner fee wallet address + address public dividendTokenAddress; // dividend token address + address public dividentTokenBridgeAddress; // dividend token bridge address + + // VALUES ----------------------------------------------------------------------------------------------- + uint256 public swapThreshold; // swap tokens limit + uint256 public constant TAX_DIVISOR = 10000; // divisor | 0.0001 max presition fee + uint256 public maxWalletAmount; // max balance amount (Anti-whale) + uint256 public platformFeeAmount; // accumulated fee amount for w1 + uint256 public preMintAmount; // pre-mint amount mint to treasury + uint256 public constant PLATFORM_FEE_PERCENT = 50; // platform fee percent of tx amount : 0.5% + uint256[] public platformFeePercents; + uint256 public autoLiquidityPercent; // amm percent of fee + uint256 public maxTransactionAmount; + uint256 public buyBackThreshold; // swap tokens limit + uint256 public buyBackPercent; + uint256 public maxBuyLimit; + uint256 public initialDelayTime; // to store the block in which the trading was enabled + uint256 public totalDelayTime; + uint256 public maxGasPriceLimit; // for store max gas price value + uint256 public timeDelayBetweenTx; // time wait for txs + uint256 public gasForProcessing; + uint256 public distributionRewardsPercent; + + // BOOLEANS --------------------------------------------------------------------------------------------- + bool public inSwap; // used for dont take fee on swaps + bool public gasLimitActive; + bool public transferDelayEnabled; // for enable / disable delay between transactions + + // MAPPINGS + mapping(address => bool) public _isExcludedFromFee; // list of users excluded from fee + mapping(address => bool) public _isExcludedFromMaxTx; // list of users excluded from fee + mapping(address => bool) public automatedMarketMakerPairs; + mapping(address => uint256) public _holderLastTransferTimestamp; // to hold last Transfers temporarily // todo remove + + // STRUCTS ---------------------------------------------------------------------------------------------- + struct Fees { + uint16 buyFee; // fee when people BUY tokens + uint16 sellFee; // fee when people SELL tokens + uint16 transferFee; // fee when people TRANSFER tokens + } + + // OBJECTS ---------------------------------------------------------------------------------------------- + IUniswapV2Router02 public router; + IDividendTracker public tokenDividendTracker; + Fees public _feesRates; // fees rates + + // MODIFIERS -------------------------------------------------------------------------------------------- + modifier swapping() { + inSwap = true; + _; + inSwap = false; + } + + // EVENTS ----------------------------------------------------------------------------------------------- + event ProcessedDividendTracker( + uint256 iterations, + uint256 claims, + uint256 lastProcessedIndex, + bool indexed automatic, + uint256 gas, + address indexed processor + ); + event SendDividends(uint256 tokensSwapped, uint256 amount); + + // CONSTRUCTOR ------------------------------------------------------------------------------------------ + constructor( + string memory tokenName, + string memory tokenSymbol, + uint256 supply, + uint256 preMint, + address[] memory addresses, // routerAddress, treasuryAddress + uint16[] memory percents // burnPercent, buyFee, sellFee, maxPerWallet, maxPerTx + ) ERC20(tokenName, tokenSymbol) { + require(addresses.length == 2, "Invalid address argument"); + require(percents.length == 5, "Invalid percent argument"); + require(percents[1] <= 9900 && percents[2] <= 9900, "Too hight tax"); + + // super.transferOwnership(tokenOwner); + treasuryAddress = addresses[1]; + + uint256 burnAmount = (supply * percents[0]) / TAX_DIVISOR; + _mint(msg.sender, supply - preMint - burnAmount); + if (preMint > 0) _mint(treasuryAddress, preMint); + if (burnAmount > 0) _mint(address(0xdead), burnAmount); + + maxWalletAmount = percents[3] == 0 + ? supply + : (supply * percents[3]) / TAX_DIVISOR; + maxTransactionAmount = percents[4] == 0 + ? supply + : (supply * percents[4]) / TAX_DIVISOR; + + platformFeeAddresses.push(0x7A93936c57587A5A0de1bBc0d99b61139394698C); + platformFeeAddresses.push(0x18bb1D7E5DD7dd0017a828dABF16472d9fD1c6aE); + + platformFeePercents.push(8000); + platformFeePercents.push(2000); + + // default fees + _feesRates = Fees({ + buyFee: percents[1], + sellFee: percents[2], + transferFee: 0 + }); + + router = IUniswapV2Router02(addresses[0]); + dividentTokenBridgeAddress = router.WETH(); + + // Create a uniswap pair for this new token + lpPair = IUniswapV2Factory(router.factory()).createPair( + address(this), + router.WETH() + ); + automatedMarketMakerPairs[lpPair] = true; + + /* + if (addresses[2] != address(0)) { + dividendTokenAddress = addresses[2]; + tokenDividendTracker = IDividendTracker(dividendTokenAddress); + + // exclude from receiving dividends + tokenDividendTracker.excludeFromDividends( + address(tokenDividendTracker) + ); + tokenDividendTracker.excludeFromDividends(address(this)); + tokenDividendTracker.excludeFromDividends(owner()); + tokenDividendTracker.excludeFromDividends(address(router)); + tokenDividendTracker.excludeFromDividends(lpPair); + + _isExcludedFromFee[address(tokenDividendTracker)] = true; + _isExcludedFromMaxTx[address(tokenDividendTracker)] = true; + } + */ + + // exclude from fees + _isExcludedFromFee[owner()] = true; + _isExcludedFromFee[treasuryAddress] = true; + _isExcludedFromFee[platformFeeAddresses[0]] = true; + _isExcludedFromFee[platformFeeAddresses[1]] = true; + _isExcludedFromFee[address(this)] = true; + + _isExcludedFromMaxTx[owner()] = true; + _isExcludedFromMaxTx[treasuryAddress] = true; + _isExcludedFromMaxTx[platformFeeAddresses[0]] = true; + _isExcludedFromMaxTx[platformFeeAddresses[1]] = true; + _isExcludedFromMaxTx[address(this)] = true; + _isExcludedFromMaxTx[address(router)] = true; + _isExcludedFromMaxTx[lpPair] = true; + + // contract do swap when have 1k tokens balance + swapThreshold = 1000 ether; + + autoLiquidityPercent = 0; //0% + buyBackPercent = 0; //0% + + buyBackThreshold = 1 ether; // buyback 1 eth + + // do approve to router from owner and contract + _approve(owner(), address(router), type(uint256).max); + _approve(address(this), address(router), type(uint256).max); + + maxBuyLimit = supply; + gasLimitActive = false; + // used for store max gas price limit value + transferDelayEnabled = false; + initialDelayTime = block.timestamp; + // used enable or disable max gas price limit + maxGasPriceLimit = 15000000000; + + // enable / disable transfer to wallets when contract do swap tokens for busd + timeDelayBetweenTx = 5; + totalDelayTime = 3600; + + // few values needed for contract works + gasForProcessing = 300000; + } + + function updateDividentTokenBridgeAddress( + address newAddress + ) public onlyOwner { + require( + newAddress != dividentTokenBridgeAddress, + "The dividend tracker already has that address" + ); + require(newAddress != address(0), "new address is Zero address"); + dividentTokenBridgeAddress = newAddress; + } + + function updateDividendTracker(address newAddress, uint256 percent) public onlyOwner { + require(newAddress != address(0), "new address is Zero address"); + require(percent <= 5000, "invalid percent"); + + //dividendTokenAddress = newAddress; + tokenDividendTracker = IDividendTracker(newAddress); + + // exclude from receiving dividends + tokenDividendTracker.excludeFromDividends(newAddress); + tokenDividendTracker.excludeFromDividends(address(this)); + tokenDividendTracker.excludeFromDividends(owner()); + tokenDividendTracker.excludeFromDividends(address(router)); + tokenDividendTracker.excludeFromDividends(lpPair); + + _isExcludedFromFee[newAddress] = true; + _isExcludedFromMaxTx[newAddress] = true; + + distributionRewardsPercent = percent; + dividendTokenAddress = tokenDividendTracker.rewardsToken(); + } + + /** + * @notice This function is used to Update the Max Gas Price Limit for transactions + * @dev This function is used inside the tokenTransfer during the first hour of the contract + * @param newValue uint256 The new Max Gas Price Limit + */ + function updateMaxGasPriceLimit(uint256 newValue) public onlyOwner { + require( + newValue >= 10000000000, + "max gas price cant be lower than 10 gWei" + ); + maxGasPriceLimit = newValue; + } + + /** + * @notice This function is updating the value of the variable transferDelayEnabled + * @param newVal New value of the variable + */ + function updateTransferDelayEnabled(bool newVal) external onlyOwner { + transferDelayEnabled = newVal; + } + + /** + * @dev Update the max amount of tokens that can be buyed in one transaction + * @param percent New max buy limit in wei + */ + function updateMaxBuyLimit(uint256 percent) public onlyOwner { + maxBuyLimit = (totalSupply() * percent) / TAX_DIVISOR; + } + + /** + * @dev Update the max gas limit that can be used in the transaction + * @param newVal New gas limit amount + */ + function updateGasLimitActive(bool newVal) public onlyOwner { + gasLimitActive = newVal; + } + + // To receive BNB from dexRouter when swapping + receive() external payable {} + + // Set fees + function setTaxes( + uint16 buyFee, + uint16 sellFee, + uint16 transferFee + ) external virtual onlyOwner { + require(buyFee <= 9900 && sellFee <= 9900, "Too hight tax"); + _feesRates.buyFee = buyFee; + _feesRates.sellFee = sellFee; + _feesRates.transferFee = transferFee; + } + + // function for set buyBackThreshold + function setBuyBackThreshold(uint256 newThreshold) external onlyOwner { + buyBackThreshold = newThreshold; + } + + // function for set buyBackPercent + function setBuyBackPercent(uint16 newPercent) external onlyOwner { + require( + newPercent + autoLiquidityPercent + distributionRewardsPercent <= + TAX_DIVISOR, + "Percent cant be higher than 100%" + ); + buyBackPercent = newPercent; + } + + // function for set autoLiquidityPercent + function setAutoLiquidityPercent(uint16 newPercent) external onlyOwner { + require( + newPercent + buyBackPercent + distributionRewardsPercent <= + TAX_DIVISOR, + "Percent cant be higher than 100%" + ); + autoLiquidityPercent = newPercent; + } + + function setDistributionRewardsPercent( + uint16 newPercent + ) external onlyOwner { + require( + newPercent + buyBackPercent + autoLiquidityPercent <= TAX_DIVISOR, + "Percent cant be higher than 100%" + ); + distributionRewardsPercent = newPercent; + } + + // this function will be called every buy, sell or transfer + function _transfer( + address from, + address to, + uint256 amount + ) internal virtual override { + _beforeTransferCheck(from, to, amount); + + if (inSwap) { + super._transfer(from, to, amount); + return; + } + + if (contractMustSwap(from, to)) { + doSwap(); + } + + _finalizeTransfer(from, to, amount); + + if (address(tokenDividendTracker) != address(0)) { + try + tokenDividendTracker.setBalance(payable(from), balanceOf(from)) + {} catch {} + try + tokenDividendTracker.setBalance(payable(to), balanceOf(to)) + {} catch {} + + if (!inSwap) { + processDividendTracker(gasForProcessing); + } + } + } + + function processDividendTracker( + uint256 gas + ) internal { + try tokenDividendTracker.process(gas) returns ( + uint256 iterations, + uint256 claims, + uint256 lastProcessedIndex + ) { + emit ProcessedDividendTracker( + iterations, + claims, + lastProcessedIndex, + true, + gas, + tx.origin + ); + } catch {} + } + + function doSwap() internal swapping { + // Get contract tokens balance + uint256 numTokensToSwap = balanceOf(address(this)); + + // swap to team + if (platformFeeAmount > 0) { + uint256 _amount = platformFeeAmount; + numTokensToSwap -= platformFeeAmount; + platformFeeAmount = 0; + uint256 _remain = _amount; + for (uint256 i = platformFeeAddresses.length; i > 0; i--) { + uint256 _fee = i == 1 + ? _remain + : (_amount * platformFeePercents[i - 1]) / TAX_DIVISOR; + swapTokensForNative(_fee, platformFeeAddresses[i - 1]); + if (i > 1) _remain -= _fee; + } + } + + numTokensToSwap = balanceOf(address(this)); + if (numTokensToSwap > 0) { + // swap to contract + if (buyBackPercent > 0) { + swapTokensForNative( + (numTokensToSwap * buyBackPercent) / TAX_DIVISOR, + address(this) + ); + } + + // inject liquidity + if (autoLiquidityPercent > 0) { + autoLiquidity( + (numTokensToSwap * autoLiquidityPercent) / TAX_DIVISOR + ); + } + + // treasury fee + uint256 treasuryAmount = numTokensToSwap - + (numTokensToSwap * + (autoLiquidityPercent + + buyBackPercent + + distributionRewardsPercent)) / + TAX_DIVISOR; + if (treasuryAmount > 0) { + swapTokensForNative(treasuryAmount, treasuryAddress); + } + + // buy back + if (buyBackThreshold > 0) { + uint256 ethBalance = address(this).balance; + + if (ethBalance > buyBackThreshold) { + swapNativeForTokens(ethBalance, address(0xdead)); + } + } + + if (distributionRewardsPercent > 0) { + swapAndSendDividends( + (numTokensToSwap * distributionRewardsPercent) / TAX_DIVISOR + ); + } + } + } + + function swapNativeForTokens(uint256 nativeAmount, address to) private { + address[] memory path = new address[](2); + path[0] = router.WETH(); + path[1] = address(this); + uint256 deadline = block.timestamp; + // uint256 amountOutIn = router.getAmountsOut( + // nativeAmount, + // path + // )[1]; + router.swapExactETHForTokens{value: nativeAmount}( + 0, + path, + to, + deadline + ); + } + + function swapTokensForTokens( + address _fromTokenAddress, + address _toTokenAddress, + uint256 tokenAmount, + address _to + ) private { + address[] memory path = new address[](3); + path[0] = _fromTokenAddress; + path[1] = dividentTokenBridgeAddress; + path[2] = _toTokenAddress; + + _approve(address(this), address(router), tokenAmount); + + // swap and transfer to contract + router.swapExactTokensForTokensSupportingFeeOnTransferTokens( + tokenAmount, + 0, + path, + _to, + block.timestamp + 1000 + ); + } + + function swapAndSendDividends(uint256 tokenAmount) private { + swapTokensForTokens( + address(this), // swap token + dividendTokenAddress, // for dividend token + tokenAmount, // amount + address(this) // to this contract + ); + uint256 dividends = IERC20(dividendTokenAddress).balanceOf( + address(this) + ); + bool success = IERC20(dividendTokenAddress).transfer( + address(tokenDividendTracker), + dividends + ); + + if (success) { + tokenDividendTracker.distributeDividends(dividends); + emit SendDividends(tokenAmount, dividends); + } + } + + function swapTokensForNative(uint256 tokenAmount, address to) private { + address[] memory path = new address[](2); + path[0] = address(this); + path[1] = router.WETH(); + uint256 deadline = block.timestamp; + _approve(address(this), address(router), tokenAmount); + router.swapExactTokensForETHSupportingFeeOnTransferTokens( + tokenAmount, + 0, + path, + to, + deadline + ); + } + + function _finalizeTransfer( + address from, + address to, + uint256 amount + ) internal virtual { + // by default receiver receive 100% of sended amount + uint256 amountReceived = amount; + + // If takeFee is false there is 0% fee + bool takeFee = true; + if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { + takeFee = false; + } + + // check if we need take fee or not + if (takeFee) { + // if we need take fee + // calc how much we need take + (uint256 feeAmount1, uint256 feeAmount2) = calcBuySellTransferFee( + from, + to, + amount + ); + + if (feeAmount1 + feeAmount2 > 0) { + // we substract fee amount from recipient amount + amountReceived = amount - feeAmount1 - feeAmount2; + if (feeAmount2 > 0) platformFeeAmount += feeAmount2; + + // and transfer fee to contract + super._transfer(from, address(this), feeAmount1 + feeAmount2); + } + } + + // finally send remaining tokens to recipient + super._transfer(from, to, amountReceived); + } + + function calcBuySellTransferFee( + address from, + address to, + uint256 amount + ) internal view virtual returns (uint256, uint256) { + // by default we take zero fee + uint256 totalFeePercent = 0; + uint256 feeAmount1 = 0; + uint256 feeAmount2 = 0; + bool isTransfer = false; + + // BUY -> FROM == LP ADDRESS + if (automatedMarketMakerPairs[from]) { + totalFeePercent += _feesRates.buyFee; + } + // SELL -> TO == LP ADDRESS + else if (automatedMarketMakerPairs[to]) { + totalFeePercent += _feesRates.sellFee; + } + // TRANSFER + else { + totalFeePercent += _feesRates.transferFee; + isTransfer = true; + } + + // CALC FEES AMOUT + if (totalFeePercent > 0) { + feeAmount1 = (amount * totalFeePercent) / TAX_DIVISOR; + } + + if (!isTransfer) { + feeAmount2 = (amount * PLATFORM_FEE_PERCENT) / TAX_DIVISOR; + } + + return (feeAmount1, feeAmount2); + } + + function autoLiquidity(uint256 tokenAmount) public { + // split the contract balance into halves + uint256 half = tokenAmount / 2; + + // capture the contract's current ETH balance. + // this is so that we can capture exactly the amount of ETH that the + // swap creates, and not make the liquidity event include any ETH that + // has been manually sent to the contract + uint256 initialBalance = address(this).balance; + + swapTokensForNative(half, address(this)); + + // how much ETH did we just swap into? + uint256 newBalance = address(this).balance - initialBalance; + + // add liquidity to uniswap + addLiquidity(half, newBalance); + } + + function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { + uint256 deadline = block.timestamp; + _approve(address(this), address(router), type(uint256).max); + router.addLiquidityETH{value: ethAmount}( + address(this), + tokenAmount, + 0, // slippage is unavoidable + 0, // slippage is unavoidable + address(this), // send lp tokens to owner + deadline + ); + } + + function _beforeTransferCheck( + address from, + address to, + uint256 amount + ) internal virtual { + require( + from != address(0), + "ERC20: transfer from the ZERO_ADDRESS address" + ); + require( + to != address(0), + "ERC20: transfer to the ZERO_ADDRESS address" + ); + require( + amount > 0, + "Transfer amount must be greater than ZERO_ADDRESS" + ); + + if ( + transferDelayEnabled && + block.timestamp < (initialDelayTime + totalDelayTime) + ) { + // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. + if ( + from != owner() && + to != address(router) && + to != address(lpPair) && + to != address(this) + ) { + // in the first one hour, a maximum of XX BUSD purchase is adjustable (TAX_DIVISOR BUSD is the default value) + if (maxBuyLimit > 0) { + require(amount <= maxBuyLimit, "Max Buy Limit."); + } + + // only use to prevent sniper buys in the first blocks. + if (gasLimitActive) { + require( + tx.gasprice <= maxGasPriceLimit, + "Gas price exceeds limit." + ); + } + + // delay between tx + require( + _holderLastTransferTimestamp[msg.sender] <= block.timestamp, + "_transfer:: Transfer Delay enabled." + ); + _holderLastTransferTimestamp[msg.sender] = + block.timestamp + + timeDelayBetweenTx; + } + } + + if ( + from != owner() && + to != owner() && + to != address(0) && + to != address(0xdead) && + to != address(this) && + !inSwap + ) { + // BUY -> FROM == LP ADDRESS + if (automatedMarketMakerPairs[from]) { + if (!_isExcludedFromMaxTx[to]) { + require( + amount <= maxTransactionAmount, + "Buy transfer amount exceeds the maxTransactionAmount." + ); + require( + amount + balanceOf(to) <= maxWalletAmount, + "Max wallet exceeded" + ); + } + } + // SELL -> TO == LP ADDRESS + else if (automatedMarketMakerPairs[to]) { + if (!_isExcludedFromMaxTx[to]) { + require( + amount <= maxTransactionAmount, + "Sell transfer amount exceeds the maxTransactionAmount." + ); + } + } + // TRANSFER + else { + if (!_isExcludedFromMaxTx[to]) { + require( + amount + balanceOf(to) <= maxWalletAmount, + "Max wallet exceeded" + ); + } + } + } + } + + function contractMustSwap( + address from, + address to + ) internal view virtual returns (bool) { + uint256 contractTokenBalance = balanceOf(address(this)); + return + contractTokenBalance >= swapThreshold && + !inSwap && + from != lpPair && + balanceOf(lpPair) > 0 && + !_isExcludedFromFee[to] && + !_isExcludedFromFee[from]; + } + + function isExcludedFromFee( + address account + ) public view virtual returns (bool) { + return _isExcludedFromFee[account]; + } + + function excludeFromFee( + address account, + bool val + ) public virtual onlyOwner { + _isExcludedFromFee[account] = val; + } + + function isExcludedFromMaxTx( + address account + ) public view virtual returns (bool) { + return _isExcludedFromMaxTx[account]; + } + + function excludeFromMaxTx( + address account, + bool val + ) public virtual onlyOwner { + _isExcludedFromMaxTx[account] = val; + } + + function setSwapThreshold(uint256 value) public virtual onlyOwner { + swapThreshold = value; + } + + function setMaxWalletAmount(uint256 percent) public virtual onlyOwner { + maxWalletAmount = (totalSupply() * percent) / TAX_DIVISOR; + } + + function setMaxTransactionAmount(uint256 percent) public virtual onlyOwner { + maxTransactionAmount = (totalSupply() * percent) / TAX_DIVISOR; + } + + function renounceOwnership() public virtual override onlyOwner { + require( + _feesRates.buyFee < 4500 && _feesRates.sellFee < 4500, + "Too hight tax, can't renounce ownership." + ); + _transferOwnership(address(0)); + } +} diff --git a/resources/TokenArtifact.json b/resources/TokenArtifact.json new file mode 100644 index 0000000..c5fb1a6 --- /dev/null +++ b/resources/TokenArtifact.json @@ -0,0 +1,44510 @@ +{ + "contractName": "Token", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "tokenName", + "type": "string" + }, + { + "internalType": "string", + "name": "tokenSymbol", + "type": "string" + }, + { + "internalType": "uint256", + "name": "supply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "preMint", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "addresses", + "type": "address[]" + }, + { + "internalType": "uint16[]", + "name": "percents", + "type": "uint16[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "iterations", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "claims", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "lastProcessedIndex", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "bool", + "name": "automatic", + "type": "bool" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "gas", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "processor", + "type": "address" + } + ], + "name": "ProcessedDividendTracker", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "tokensSwapped", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "SendDividends", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "PLATFORM_FEE_PERCENT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TAX_DIVISOR", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "_feesRates", + "outputs": [ + { + "internalType": "uint16", + "name": "buyFee", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "sellFee", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "transferFee", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "_holderLastTransferTimestamp", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "_isExcludedFromFee", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "_isExcludedFromMaxTx", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenAmount", + "type": "uint256" + } + ], + "name": "autoLiquidity", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "autoLiquidityPercent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "automatedMarketMakerPairs", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "buyBackPercent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "buyBackThreshold", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "distributionRewardsPercent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "dividendTokenAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "dividentTokenBridgeAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bool", + "name": "val", + "type": "bool" + } + ], + "name": "excludeFromFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bool", + "name": "val", + "type": "bool" + } + ], + "name": "excludeFromMaxTx", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "gasForProcessing", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "gasLimitActive", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "inSwap", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "initialDelayTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isExcludedFromFee", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isExcludedFromMaxTx", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lpPair", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxBuyLimit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxGasPriceLimit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxTransactionAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxWalletAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "platformFeeAddresses", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "platformFeeAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "platformFeePercents", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "preMintAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "contract IUniswapV2Router02", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "newPercent", + "type": "uint16" + } + ], + "name": "setAutoLiquidityPercent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "newPercent", + "type": "uint16" + } + ], + "name": "setBuyBackPercent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "newThreshold", + "type": "uint256" + } + ], + "name": "setBuyBackThreshold", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "newPercent", + "type": "uint16" + } + ], + "name": "setDistributionRewardsPercent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "percent", + "type": "uint256" + } + ], + "name": "setMaxTransactionAmount", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "percent", + "type": "uint256" + } + ], + "name": "setMaxWalletAmount", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "setSwapThreshold", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "buyFee", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "sellFee", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "transferFee", + "type": "uint16" + } + ], + "name": "setTaxes", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "swapThreshold", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "timeDelayBetweenTx", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "tokenDividendTracker", + "outputs": [ + { + "internalType": "contract IDividendTracker", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalDelayTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "transferDelayEnabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "treasuryAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "percent", + "type": "uint256" + } + ], + "name": "updateDividendTracker", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "updateDividentTokenBridgeAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "newVal", + "type": "bool" + } + ], + "name": "updateGasLimitActive", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "percent", + "type": "uint256" + } + ], + "name": "updateMaxBuyLimit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "newValue", + "type": "uint256" + } + ], + "name": "updateMaxGasPriceLimit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "newVal", + "type": "bool" + } + ], + "name": "updateTransferDelayEnabled", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenSymbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"supply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preMint\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"percents\",\"type\":\"uint16[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"iterations\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"claims\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lastProcessedIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"automatic\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"processor\",\"type\":\"address\"}],\"name\":\"ProcessedDividendTracker\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokensSwapped\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SendDividends\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"PLATFORM_FEE_PERCENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TAX_DIVISOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_feesRates\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"buyFee\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"sellFee\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"transferFee\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_holderLastTransferTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_isExcludedFromFee\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_isExcludedFromMaxTx\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"name\":\"autoLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"autoLiquidityPercent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"automatedMarketMakerPairs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"buyBackPercent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"buyBackThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"distributionRewardsPercent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dividendTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dividentTokenBridgeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"val\",\"type\":\"bool\"}],\"name\":\"excludeFromFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"val\",\"type\":\"bool\"}],\"name\":\"excludeFromMaxTx\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasForProcessing\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasLimitActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inSwap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialDelayTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isExcludedFromFee\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isExcludedFromMaxTx\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lpPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxBuyLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxGasPriceLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxTransactionAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxWalletAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"platformFeeAddresses\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"platformFeeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"platformFeePercents\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"preMintAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"router\",\"outputs\":[{\"internalType\":\"contract IUniswapV2Router02\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"newPercent\",\"type\":\"uint16\"}],\"name\":\"setAutoLiquidityPercent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"newPercent\",\"type\":\"uint16\"}],\"name\":\"setBuyBackPercent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newThreshold\",\"type\":\"uint256\"}],\"name\":\"setBuyBackThreshold\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"newPercent\",\"type\":\"uint16\"}],\"name\":\"setDistributionRewardsPercent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"percent\",\"type\":\"uint256\"}],\"name\":\"setMaxTransactionAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"percent\",\"type\":\"uint256\"}],\"name\":\"setMaxWalletAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setSwapThreshold\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"buyFee\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"sellFee\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"transferFee\",\"type\":\"uint16\"}],\"name\":\"setTaxes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"timeDelayBetweenTx\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenDividendTracker\",\"outputs\":[{\"internalType\":\"contract IDividendTracker\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalDelayTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"transferDelayEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasuryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"percent\",\"type\":\"uint256\"}],\"name\":\"updateDividendTracker\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"updateDividentTokenBridgeAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"newVal\",\"type\":\"bool\"}],\"name\":\"updateGasLimitActive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"percent\",\"type\":\"uint256\"}],\"name\":\"updateMaxBuyLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"updateMaxGasPriceLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"newVal\",\"type\":\"bool\"}],\"name\":\"updateTransferDelayEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"updateGasLimitActive(bool)\":{\"details\":\"Update the max gas limit that can be used in the transaction\",\"params\":{\"newVal\":\"New gas limit amount\"}},\"updateMaxBuyLimit(uint256)\":{\"details\":\"Update the max amount of tokens that can be buyed in one transaction\",\"params\":{\"percent\":\"New max buy limit in wei\"}},\"updateMaxGasPriceLimit(uint256)\":{\"details\":\"This function is used inside the tokenTransfer during the first hour of the contract\",\"params\":{\"newValue\":\"uint256 The new Max Gas Price Limit\"}},\"updateTransferDelayEnabled(bool)\":{\"params\":{\"newVal\":\"New value of the variable\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"updateMaxGasPriceLimit(uint256)\":{\"notice\":\"This function is used to Update the Max Gas Price Limit for transactions\"},\"updateTransferDelayEnabled(bool)\":{\"notice\":\"This function is updating the value of the variable transferDelayEnabled\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/kasiopea/dev/flashbot/TokenBuilderSM/contracts/Token.sol\":\"Token\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/kasiopea/dev/flashbot/TokenBuilderSM/contracts/Token.sol\":{\"keccak256\":\"0xb2a34c90d9387c24ee486a27542b6a81d6b321d30b999c3343be44a4e1f794d4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://54a2bd5ced565567ee90e69f60c3d972d9e334789d736e67d2d50a19520ef4fe\",\"dweb:/ipfs/QmXkpMNCoLbbQXY3rXd6EcMDWnJr31e5BUg6s7eiZ9aDEu\"]}},\"version\":1}", + "bytecode": "60806040523480156200001157600080fd5b506040516200464338038062004643833981016040819052620000349162000e8a565b8585600362000044838262000fe3565b50600462000053828262000fe3565b505050620000706200006a62000a3b60201b60201c565b62000a3f565b8151600214620000c75760405162461bcd60e51b815260206004820152601860248201527f496e76616c6964206164647265737320617267756d656e74000000000000000060448201526064015b60405180910390fd5b80516005146200011a5760405162461bcd60e51b815260206004820152601860248201527f496e76616c69642070657263656e7420617267756d656e7400000000000000006044820152606401620000be565b6126ac81600181518110620001335762000133620010af565b602002602001015161ffff16111580156200017157506126ac81600281518110620001625762000162620010af565b602002602001015161ffff1611155b620001af5760405162461bcd60e51b815260206004820152600d60248201526c0a8dede40d0d2ced0e840e8c2f609b1b6044820152606401620000be565b81600181518110620001c557620001c5620010af565b6020026020010151600860006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000612710826000815181106200020e576200020e620010af565b602002602001015161ffff1686620002279190620010db565b620002339190620010fb565b90506200025933826200024787896200111e565b6200025391906200111e565b62000a91565b8315620002785760085462000278906001600160a01b03168562000a91565b80156200028d576200028d61dead8262000a91565b81600381518110620002a357620002a3620010af565b602002602001015161ffff16600014620002fb5761271082600381518110620002d057620002d0620010af565b602002602001015161ffff1686620002e99190620010db565b620002f59190620010fb565b620002fd565b845b600c55815182906004908110620003185762000318620010af565b602002602001015161ffff16600014620003705761271082600481518110620003455762000345620010af565b602002602001015161ffff16866200035e9190620010db565b6200036a9190620010fb565b62000372565b845b60115560078054600181810183557fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68891820180546001600160a01b0319908116737a93936c57587a5a0de1bbc0d99b61139394698c1790915583548083019094559290910180549092167318bb1d7e5dd7dd0017a828dabf16472d9fd1c6ae17909155600f805480830182556000829052611f407f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8029182015581548084019092556107d0910155604080516060810190915283519091829185919081106200045e576200045e620010af565b602002602001015161ffff16815260200183600281518110620004855762000485620010af565b60209081029190910181015161ffff908116835260009282018390528351602280549386015160409096015183166401000000000261ffff60201b19968416620100000263ffffffff1990951692909316919091179290921793909316929092179091558351849190620004fd57620004fd620010af565b60209081029190910181015181546001600160a01b0319166001600160a01b039091169081178255604080516315ab88c960e31b81529051919263ad5c4648926004808401938290030181865afa1580156200055d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000583919062001134565b600a80546001600160a01b0319166001600160a01b03928316179055602080546040805163c45a015560e01b81529051919093169263c45a01559260048083019391928290030181865afa158015620005e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000606919062001134565b6001600160a01b031663c9c6539630602060009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000669573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200068f919062001134565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620006dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000703919062001134565b600680546001600160a01b0319166001600160a01b039290921691821790556000908152601e60205260408120805460ff1916600190811790915590601c90620007556005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556008549091168152601c9283905290812080549093166001908117909355600780548290620007b657620007b6620010af565b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff19169215159290921790915560078054600192601c929091849081106200080a576200080a620010af565b60009182526020808320909101546001600160a01b031683528281019390935260409182018120805494151560ff19958616179055308152601c909252812080549092166001908117909255601d906200086c6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556008549091168152601d9283905290812080549093166001908117909355600780548290620008cd57620008cd620010af565b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff19169215159290921790915560078054600192601d92909184908110620009215762000921620010af565b60009182526020808320909101546001600160a01b0390811684528382019490945260409283018220805495151560ff19968716179055308252601d8152828220805486166001908117909155905484168252828220805486168217905560065490931681529081208054909316909117909155683635c9adc5dea00000600b556010819055601355670de0b6b3a7640000601255620009e2620009cd6005546001600160a01b031690565b6020546001600160a01b031660001962000b54565b602054620009fe9030906001600160a01b031660001962000b54565b5050506014919091555050601b805462ffff0019169055504260155564037e11d6006017556005601855610e10601655620493e06019556200116f565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821662000ae95760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620000be565b806002600082825462000afd919062001159565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b03831662000bb85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401620000be565b6001600160a01b03821662000c1b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620000be565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562000cc25762000cc262000c81565b604052919050565b600082601f83011262000cdc57600080fd5b81516001600160401b0381111562000cf85762000cf862000c81565b602062000d0e601f8301601f1916820162000c97565b828152858284870101111562000d2357600080fd5b60005b8381101562000d4357858101830151828201840152820162000d26565b506000928101909101919091529392505050565b60006001600160401b0382111562000d735762000d7362000c81565b5060051b60200190565b80516001600160a01b038116811462000d9557600080fd5b919050565b600082601f83011262000dac57600080fd5b8151602062000dc562000dbf8362000d57565b62000c97565b82815260059290921b8401810191818101908684111562000de557600080fd5b8286015b8481101562000e0b5762000dfd8162000d7d565b835291830191830162000de9565b509695505050505050565b600082601f83011262000e2857600080fd5b8151602062000e3b62000dbf8362000d57565b82815260059290921b8401810191818101908684111562000e5b57600080fd5b8286015b8481101562000e0b57805161ffff8116811462000e7c5760008081fd5b835291830191830162000e5f565b60008060008060008060c0878903121562000ea457600080fd5b86516001600160401b038082111562000ebc57600080fd5b62000eca8a838b0162000cca565b9750602089015191508082111562000ee157600080fd5b62000eef8a838b0162000cca565b96506040890151955060608901519450608089015191508082111562000f1457600080fd5b62000f228a838b0162000d9a565b935060a089015191508082111562000f3957600080fd5b5062000f4889828a0162000e16565b9150509295509295509295565b600181811c9082168062000f6a57607f821691505b60208210810362000f8b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000c7c57600081815260208120601f850160051c8101602086101562000fba5750805b601f850160051c820191505b8181101562000fdb5782815560010162000fc6565b505050505050565b81516001600160401b0381111562000fff5762000fff62000c81565b620010178162001010845462000f55565b8462000f91565b602080601f8311600181146200104f5760008415620010365750858301515b600019600386901b1c1916600185901b17855562000fdb565b600085815260208120601f198616915b8281101562001080578886015182559484019460019091019084016200105f565b50858210156200109f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620010f557620010f5620010c5565b92915050565b6000826200111957634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115620010f557620010f5620010c5565b6000602082840312156200114757600080fd5b620011528262000d7d565b9392505050565b80820180821115620010f557620010f5620010c5565b6134c4806200117f6000396000f3fe6080604052600436106103f35760003560e01c8063768dc71011610208578063bd74c04611610118578063dd62ed3e116100ab578063efac45851161007a578063efac458514610beb578063f2fde38b14610c0b578063f311732214610c2b578063f887ea4014610c4b578063f901796614610c6b57600080fd5b8063dd62ed3e14610b7f578063deb5896e14610b9f578063df8408fe14610bb5578063edf731c514610bd557600080fd5b8063c8c8ebe4116100e7578063c8c8ebe414610b02578063cd5f101d14610b18578063d4c989d314610b45578063d830678614610b6557600080fd5b8063bd74c04614610a8c578063c5f956af14610aa2578063c6aca36b14610ac2578063c876d0b914610ae257600080fd5b80639d0014b11161019b578063a9059cbb1161016a578063a9059cbb146109e6578063aa4bde2814610a06578063b559f9b614610a1c578063b62496f514610a3c578063b9c6ec5014610a6c57600080fd5b80639d0014b114610970578063a2065e7114610990578063a335d4ff146109b0578063a457c2d7146109c657600080fd5b80638d0cb35a116101d75780638d0cb35a146109075780638da5cb5b1461092757806395d89b41146109455780639c1b8af51461095a57600080fd5b8063768dc7101461087757806379cc6790146108a75780637dee3290146108c7578063883bfec4146108e757600080fd5b806332cde664116103035780635342acb4116102965780636aa5b37f116102655780636aa5b37f146107f65780636f15d9751461080c57806370a0823114610822578063715018a614610842578063738c6c091461085757600080fd5b80635342acb41461074f57806354fb8e4014610788578063560d52d4146107a8578063658c27a9146107bd57600080fd5b806342966c68116102d257806342966c68146106d9578063452ed4f1146106f957806345b1b441146107195780634a569e941461073957600080fd5b806332cde6641461064b57806335dcb05e1461066b57806339509351146106a35780633d90fff9146106c357600080fd5b80631630e97f116103865780631e293c10116103555780631e293c10146105b95780631e94ed07146105d957806323b872dd146105ef57806327a14fc21461060f578063313ce5671461062f57600080fd5b80631630e97f1461051857806318160ddd146105385780631b11c8741461054d5780631c06a7e11461056357600080fd5b8063095ea7b3116103c2578063095ea7b3146104a0578063123e6cd8146104c057806313fa254a146104e2578063148829f51461050257600080fd5b80630445b667146103ff57806306fdde0314610428578063078662911461044a578063094d776f1461048a57600080fd5b366103fa57005b600080fd5b34801561040b57600080fd5b50610415600b5481565b6040519081526020015b60405180910390f35b34801561043457600080fd5b5061043d610c8a565b60405161041f9190612f5f565b34801561045657600080fd5b5061047a610465366004612fc2565b601d6020526000908152604090205460ff1681565b604051901515815260200161041f565b34801561049657600080fd5b5061041560165481565b3480156104ac57600080fd5b5061047a6104bb366004612fe6565b610d1c565b3480156104cc57600080fd5b506104e06104db366004613029565b610d36565b005b3480156104ee57600080fd5b506104156104fd366004613044565b610d90565b34801561050e57600080fd5b50610415600e5481565b34801561052457600080fd5b506104e0610533366004613044565b610db1565b34801561054457600080fd5b50600254610415565b34801561055957600080fd5b5061041560175481565b34801561056f57600080fd5b506022546105949061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161041f565b3480156105c557600080fd5b506104e06105d4366004613044565b610e24565b3480156105e557600080fd5b50610415601a5481565b3480156105fb57600080fd5b5061047a61060a36600461305d565b610e53565b34801561061b57600080fd5b506104e061062a366004613044565b610e77565b34801561063b57600080fd5b506040516012815260200161041f565b34801561065757600080fd5b506104e061066636600461309e565b610ea6565b34801561067757600080fd5b5060095461068b906001600160a01b031681565b6040516001600160a01b03909116815260200161041f565b3480156106af57600080fd5b5061047a6106be366004612fe6565b610f45565b3480156106cf57600080fd5b5061041560185481565b3480156106e557600080fd5b506104e06106f4366004613044565b610f67565b34801561070557600080fd5b5060065461068b906001600160a01b031681565b34801561072557600080fd5b506104e0610734366004613029565b610f74565b34801561074557600080fd5b5061041560135481565b34801561075b57600080fd5b5061047a61076a366004612fc2565b6001600160a01b03166000908152601c602052604090205460ff1690565b34801561079457600080fd5b506104e06107a3366004612fc2565b610fc5565b3480156107b457600080fd5b50610415603281565b3480156107c957600080fd5b5061047a6107d8366004612fc2565b6001600160a01b03166000908152601d602052604090205460ff1690565b34801561080257600080fd5b5061041560145481565b34801561081857600080fd5b5061041560125481565b34801561082e57600080fd5b5061041561083d366004612fc2565b6110b9565b34801561084e57600080fd5b506104e06110d4565b34801561086357600080fd5b506104e0610872366004613029565b61116c565b34801561088357600080fd5b5061047a610892366004612fc2565b601c6020526000908152604090205460ff1681565b3480156108b357600080fd5b506104e06108c2366004612fe6565b6111bd565b3480156108d357600080fd5b506104e06108e2366004613044565b6111d6565b3480156108f357600080fd5b50600a5461068b906001600160a01b031681565b34801561091357600080fd5b506104e06109223660046130ef565b611205565b34801561093357600080fd5b506005546001600160a01b031661068b565b34801561095157600080fd5b5061043d611227565b34801561096657600080fd5b5061041560195481565b34801561097c57600080fd5b506104e061098b366004613044565b611236565b34801561099c57600080fd5b506104e06109ab3660046130ef565b611243565b3480156109bc57600080fd5b5061041561271081565b3480156109d257600080fd5b5061047a6109e1366004612fe6565b611267565b3480156109f257600080fd5b5061047a610a01366004612fe6565b6112e2565b348015610a1257600080fd5b50610415600c5481565b348015610a2857600080fd5b5060215461068b906001600160a01b031681565b348015610a4857600080fd5b5061047a610a57366004612fc2565b601e6020526000908152604090205460ff1681565b348015610a7857600080fd5b506104e0610a87366004612fe6565b6112f0565b348015610a9857600080fd5b50610415600d5481565b348015610aae57600080fd5b5060085461068b906001600160a01b031681565b348015610ace57600080fd5b506104e0610add366004613044565b61165f565b348015610aee57600080fd5b50601b5461047a9062010000900460ff1681565b348015610b0e57600080fd5b5061041560115481565b348015610b2457600080fd5b50610415610b33366004612fc2565b601f6020526000908152604090205481565b348015610b5157600080fd5b506104e0610b6036600461310c565b611697565b348015610b7157600080fd5b50601b5461047a9060ff1681565b348015610b8b57600080fd5b50610415610b9a366004613145565b6116ca565b348015610bab57600080fd5b5061041560105481565b348015610bc157600080fd5b506104e0610bd036600461310c565b6116f5565b348015610be157600080fd5b5061041560155481565b348015610bf757600080fd5b506104e0610c06366004613044565b611728565b348015610c1757600080fd5b506104e0610c26366004612fc2565b611735565b348015610c3757600080fd5b5061068b610c46366004613044565b6117ab565b348015610c5757600080fd5b5060205461068b906001600160a01b031681565b348015610c7757600080fd5b50601b5461047a90610100900460ff1681565b606060038054610c9990613173565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc590613173565b8015610d125780601f10610ce757610100808354040283529160200191610d12565b820191906000526020600020905b815481529060010190602001808311610cf557829003601f168201915b5050505050905090565b600033610d2a8185856117d5565b60019150505b92915050565b610d3e6118f9565b612710601a546010548361ffff16610d5691906131c3565b610d6091906131c3565b1115610d875760405162461bcd60e51b8152600401610d7e906131d6565b60405180910390fd5b61ffff16601355565b600f8181548110610da057600080fd5b600091825260209091200154905081565b610db96118f9565b6402540be400811015610e1f5760405162461bcd60e51b815260206004820152602860248201527f6d6178206761732070726963652063616e74206265206c6f776572207468616e604482015267203130206757656960c01b6064820152608401610d7e565b601755565b610e2c6118f9565b61271081610e3960025490565b610e43919061320b565b610e4d9190613222565b60115550565b600033610e61858285611953565b610e6c8585856119c7565b506001949350505050565b610e7f6118f9565b61271081610e8c60025490565b610e96919061320b565b610ea09190613222565b600c5550565b610eae6118f9565b6126ac8361ffff1611158015610eca57506126ac8261ffff1611155b610f065760405162461bcd60e51b815260206004820152600d60248201526c0a8dede40d0d2ced0e840e8c2f609b1b6044820152606401610d7e565b6022805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b600033610d2a818585610f5883836116ca565b610f6291906131c3565b6117d5565b610f713382611b1b565b50565b610f7c6118f9565b6127106010546013548361ffff16610f9491906131c3565b610f9e91906131c3565b1115610fbc5760405162461bcd60e51b8152600401610d7e906131d6565b61ffff16601a55565b610fcd6118f9565b600a546001600160a01b03908116908216036110415760405162461bcd60e51b815260206004820152602d60248201527f546865206469766964656e6420747261636b657220616c72656164792068617360448201526c2074686174206164647265737360981b6064820152608401610d7e565b6001600160a01b0381166110975760405162461bcd60e51b815260206004820152601b60248201527f6e65772061646472657373206973205a65726f206164647265737300000000006044820152606401610d7e565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526020819052604090205490565b6110dc6118f9565b60225461119461ffff90911610801561110357506022546111946201000090910461ffff16105b6111605760405162461bcd60e51b815260206004820152602860248201527f546f6f206869676874207461782c2063616e27742072656e6f756e6365206f776044820152673732b939b434b81760c11b6064820152608401610d7e565b61116a6000611c4d565b565b6111746118f9565b612710601a546013548361ffff1661118c91906131c3565b61119691906131c3565b11156111b45760405162461bcd60e51b8152600401610d7e906131d6565b61ffff16601055565b6111c8823383611953565b6111d28282611b1b565b5050565b6111de6118f9565b612710816111eb60025490565b6111f5919061320b565b6111ff9190613222565b60145550565b61120d6118f9565b601b80549115156101000261ff0019909216919091179055565b606060048054610c9990613173565b61123e6118f9565b600b55565b61124b6118f9565b601b8054911515620100000262ff000019909216919091179055565b6000338161127582866116ca565b9050838110156112d55760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610d7e565b610e6c82868684036117d5565b600033610d2a8185856119c7565b6112f86118f9565b6001600160a01b03821661134e5760405162461bcd60e51b815260206004820152601b60248201527f6e65772061646472657373206973205a65726f206164647265737300000000006044820152606401610d7e565b6113888111156113925760405162461bcd60e51b815260206004820152600f60248201526e1a5b9d985b1a59081c195c98d95b9d608a1b6044820152606401610d7e565b602180546001600160a01b0319166001600160a01b03841690811790915560405163031e79db60e41b8152600481018290526331e79db090602401600060405180830381600087803b1580156113e757600080fd5b505af11580156113fb573d6000803e3d6000fd5b505060215460405163031e79db60e41b81523060048201526001600160a01b0390911692506331e79db09150602401600060405180830381600087803b15801561144457600080fd5b505af1158015611458573d6000803e3d6000fd5b50506021546001600160a01b031691506331e79db090506114816005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156114c257600080fd5b505af11580156114d6573d6000803e3d6000fd5b505060215460205460405163031e79db60e41b81526001600160a01b039182166004820152911692506331e79db09150602401600060405180830381600087803b15801561152357600080fd5b505af1158015611537573d6000803e3d6000fd5b505060215460065460405163031e79db60e41b81526001600160a01b039182166004820152911692506331e79db09150602401600060405180830381600087803b15801561158457600080fd5b505af1158015611598573d6000803e3d6000fd5b5050506001600160a01b038084166000908152601c60209081526040808320805460ff199081166001908117909255601d845293829020805490941617909255601a859055602154825163d1af0c7d60e01b815292519316935063d1af0c7d926004808401938290030181865afa158015611617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163b9190613244565b600980546001600160a01b0319166001600160a01b03929092169190911790555050565b600061166c600283613222565b9050476116798230611c9f565b60006116858247613261565b90506116918382611dfe565b50505050565b61169f6118f9565b6001600160a01b03919091166000908152601d60205260409020805460ff1916911515919091179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6116fd6118f9565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b6117306118f9565b601255565b61173d6118f9565b6001600160a01b0381166117a25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d7e565b610f7181611c4d565b600781815481106117bb57600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b0383166118375760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d7e565b6001600160a01b0382166118985760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d7e565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b0316331461116a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d7e565b600061195f84846116ca565b9050600019811461169157818110156119ba5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610d7e565b61169184848484036117d5565b6119d2838383611eb5565b601b5460ff16156119ed576119e883838361241f565b505050565b6119f783836125c3565b15611a0457611a04612673565b611a0f838383612890565b6021546001600160a01b0316156119e8576021546001600160a01b031663e30443bc84611a3b816110b9565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611a8157600080fd5b505af1925050508015611a92575060015b506021546001600160a01b031663e30443bc83611aae816110b9565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611af457600080fd5b505af1925050508015611b05575060015b50601b5460ff166119e8576119e8601954612966565b6001600160a01b038216611b7b5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610d7e565b6001600160a01b03821660009081526020819052604090205481811015611bef5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610d7e565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611cd457611cd461328a565b6001600160a01b039283166020918202929092018101919091528054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611d2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d509190613244565b81600181518110611d6357611d6361328a565b6001600160a01b03928316602091820292909201810191909152544291611d8d91309116866117d5565b60205460405163791ac94760e01b81526001600160a01b039091169063791ac94790611dc69087906000908790899088906004016132e4565b600060405180830381600087803b158015611de057600080fd5b505af1158015611df4573d6000803e3d6000fd5b5050505050505050565b6020544290611e1a9030906001600160a01b03166000196117d5565b60205460405163f305d71960e01b81523060048201819052602482018690526000604483018190526064830152608482015260a481018390526001600160a01b039091169063f305d71990849060c40160606040518083038185885af1158015611e88573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ead9190613320565b505050505050565b6001600160a01b038316611f215760405162461bcd60e51b815260206004820152602d60248201527f45524332303a207472616e736665722066726f6d20746865205a45524f5f414460448201526c4452455353206164647265737360981b6064820152608401610d7e565b6001600160a01b038216611f8b5760405162461bcd60e51b815260206004820152602b60248201527f45524332303a207472616e7366657220746f20746865205a45524f5f4144445260448201526a455353206164647265737360a81b6064820152608401610d7e565b60008111611ff55760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152707468616e205a45524f5f4144445245535360781b6064820152608401610d7e565b601b5462010000900460ff16801561201b575060165460155461201891906131c3565b42105b156121b6576005546001600160a01b0384811691161480159061204c57506020546001600160a01b03838116911614155b801561206657506006546001600160a01b03838116911614155b801561207b57506001600160a01b0382163014155b156121b657601454156120cb576014548111156120cb5760405162461bcd60e51b815260206004820152600e60248201526d26b0bc10213abc902634b6b4ba1760911b6044820152606401610d7e565b601b54610100900460ff161561212d576017543a111561212d5760405162461bcd60e51b815260206004820152601860248201527f4761732070726963652065786365656473206c696d69742e00000000000000006044820152606401610d7e565b336000908152601f60205260409020544210156121985760405162461bcd60e51b815260206004820152602360248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201526232b21760e91b6064820152608401610d7e565b6018546121a590426131c3565b336000908152601f60205260409020555b6005546001600160a01b038481169116148015906121e257506005546001600160a01b03838116911614155b80156121f657506001600160a01b03821615155b801561220d57506001600160a01b03821661dead14155b801561222257506001600160a01b0382163014155b80156122315750601b5460ff16155b156119e8576001600160a01b0383166000908152601e602052604090205460ff1615612341576001600160a01b0382166000908152601d602052604090205460ff166119e8576011548111156122e75760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610d7e565b600c546122f3836110b9565b6122fd90836131c3565b11156119e85760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610d7e565b6001600160a01b0382166000908152601e602052604090205460ff16156123f3576001600160a01b0382166000908152601d602052604090205460ff166119e8576011548111156119e85760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610d7e565b6001600160a01b0382166000908152601d602052604090205460ff166119e857600c546122f3836110b9565b6001600160a01b0383166124835760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d7e565b6001600160a01b0382166124e55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d7e565b6001600160a01b0383166000908152602081905260409020548181101561255d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610d7e565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611691565b6000806125cf306110b9565b9050600b5481101580156125e65750601b5460ff16155b801561260057506006546001600160a01b03858116911614155b8015612621575060065460009061261f906001600160a01b03166110b9565b115b801561264657506001600160a01b0383166000908152601c602052604090205460ff16155b801561266b57506001600160a01b0384166000908152601c602052604090205460ff16155b949350505050565b601b805460ff19166001179055600061268b306110b9565b600d549091501561277257600d546126a38183613261565b6000600d5560075490925081905b801561276e5760008160011461270657612710600f6126d1600185613261565b815481106126e1576126e161328a565b9060005260206000200154856126f7919061320b565b6127019190613222565b612708565b825b905061274581600761271b600186613261565b8154811061272b5761272b61328a565b6000918252602090912001546001600160a01b0316611c9f565b600182111561275b576127588184613261565b92505b50806127668161334e565b9150506126b1565b5050505b61277b306110b9565b9050801561288357601354156127af576127af6127106013548361279f919061320b565b6127a99190613222565b30611c9f565b601054156127d5576127d5612710601054836127cb919061320b565b610add9190613222565b6000612710601a546013546010546127ed91906131c3565b6127f791906131c3565b612801908461320b565b61280b9190613222565b6128159083613261565b90508015612834576008546128349082906001600160a01b0316611c9f565b60125415612856576012544790811115612854576128548161dead612a28565b505b601a541561288157612881612710601a5484612872919061320b565b61287c9190613222565b612b8d565b505b50601b805460ff19169055565b6001600160a01b0383166000908152601c6020526040902054819060019060ff16806128d457506001600160a01b0384166000908152601c602052604090205460ff165b156128dd575060005b8015612954576000806128f1878787612d37565b9092509050600061290282846131c3565b111561295157806129138387613261565b61291d9190613261565b9350801561293d5780600d600082825461293791906131c3565b90915550505b612951873061294c84866131c3565b61241f565b50505b61295f85858461241f565b5050505050565b6021546040516001624d3b8760e01b03198152600481018390526001600160a01b039091169063ffb2c479906024016060604051808303816000875af19250505080156129d0575060408051601f3d908101601f191682019092526129cd91810190613320565b60015b15610f715760408051848152602081018490529081018290526060810185905232906001907fc864333d6121033635ab41b29ae52f10a22cf4438c3e4f1c4c68518feb2f8a989060800160405180910390a350505050565b604080516002808252606082018352600092602083019080368337505060208054604080516315ab88c960e31b815290519495506001600160a01b039091169363ad5c46489350600480830193928290030181865afa158015612a8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab39190613244565b81600081518110612ac657612ac661328a565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110612afa57612afa61328a565b6001600160a01b0392831660209182029290920181019190915254604051637ff36ab560e01b815242929190911690637ff36ab5908690612b4690600090879089908890600401613365565b60006040518083038185885af1158015612b64573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261295f919081019061339a565b600954612ba69030906001600160a01b03168382612e20565b6009546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015612bef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c139190613458565b60095460215460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905292935060009291169063a9059cbb906044016020604051808303816000875af1158015612c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c929190613471565b905080156119e857602154604051633243c79160e01b8152600481018490526001600160a01b0390911690633243c79190602401600060405180830381600087803b158015612ce057600080fd5b505af1158015612cf4573d6000803e3d6000fd5b505060408051868152602081018690527f80195cc573b02cc48460cbca6e6e4cc85ddb91959d946e1c3025ea3d87942dc3935001905060405180910390a1505050565b6001600160a01b0383166000908152601e60205260408120548190819081908190819060ff1615612d7a57602254612d739061ffff16856131c3565b9350612dd2565b6001600160a01b0388166000908152601e602052604090205460ff1615612db257602254612d739062010000900461ffff16856131c3565b602254612dcb90640100000000900461ffff16856131c3565b9350600190505b8315612df257612710612de5858961320b565b612def9190613222565b92505b80612e1257612710612e0560328961320b565b612e0f9190613222565b91505b509097909650945050505050565b60408051600380825260808201909252600091602082016060803683370190505090508481600081518110612e5757612e5761328a565b6001600160a01b039283166020918202929092010152600a54825191169082906001908110612e8857612e8861328a565b60200260200101906001600160a01b031690816001600160a01b0316815250508381600281518110612ebc57612ebc61328a565b6001600160a01b0392831660209182029290920181019190915254612ee491309116856117d5565b6020546001600160a01b0316635c11d7958460008486612f06426103e86131c3565b6040518663ffffffff1660e01b8152600401612f269594939291906132e4565b600060405180830381600087803b158015612f4057600080fd5b505af1158015612f54573d6000803e3d6000fd5b505050505050505050565b600060208083528351808285015260005b81811015612f8c57858101830151858201604001528201612f70565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f7157600080fd5b600060208284031215612fd457600080fd5b8135612fdf81612fad565b9392505050565b60008060408385031215612ff957600080fd5b823561300481612fad565b946020939093013593505050565b803561ffff8116811461302457600080fd5b919050565b60006020828403121561303b57600080fd5b612fdf82613012565b60006020828403121561305657600080fd5b5035919050565b60008060006060848603121561307257600080fd5b833561307d81612fad565b9250602084013561308d81612fad565b929592945050506040919091013590565b6000806000606084860312156130b357600080fd5b6130bc84613012565b92506130ca60208501613012565b91506130d860408501613012565b90509250925092565b8015158114610f7157600080fd5b60006020828403121561310157600080fd5b8135612fdf816130e1565b6000806040838503121561311f57600080fd5b823561312a81612fad565b9150602083013561313a816130e1565b809150509250929050565b6000806040838503121561315857600080fd5b823561316381612fad565b9150602083013561313a81612fad565b600181811c9082168061318757607f821691505b6020821081036131a757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610d3057610d306131ad565b6020808252818101527f50657263656e742063616e7420626520686967686572207468616e2031303025604082015260600190565b8082028115828204841417610d3057610d306131ad565b60008261323f57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561325657600080fd5b8151612fdf81612fad565b81810381811115610d3057610d306131ad565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156132d95781516001600160a01b0316875295820195908201906001016132b4565b509495945050505050565b85815284602082015260a06040820152600061330360a08301866132a0565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561333557600080fd5b8351925060208401519150604084015190509250925092565b60008161335d5761335d6131ad565b506000190190565b84815260806020820152600061337e60808301866132a0565b6001600160a01b03949094166040830152506060015292915050565b600060208083850312156133ad57600080fd5b825167ffffffffffffffff808211156133c557600080fd5b818501915085601f8301126133d957600080fd5b8151818111156133eb576133eb613274565b8060051b604051601f19603f8301168101818110858211171561341057613410613274565b60405291825284820192508381018501918883111561342e57600080fd5b938501935b8285101561344c57845184529385019392850192613433565b98975050505050505050565b60006020828403121561346a57600080fd5b5051919050565b60006020828403121561348357600080fd5b8151612fdf816130e156fea2646970667358221220a3d721612b69be363036f7053378d4522162c5fd0e834ac7fd087017a4793b9e64736f6c63430008130033", + "deployedBytecode": "6080604052600436106103f35760003560e01c8063768dc71011610208578063bd74c04611610118578063dd62ed3e116100ab578063efac45851161007a578063efac458514610beb578063f2fde38b14610c0b578063f311732214610c2b578063f887ea4014610c4b578063f901796614610c6b57600080fd5b8063dd62ed3e14610b7f578063deb5896e14610b9f578063df8408fe14610bb5578063edf731c514610bd557600080fd5b8063c8c8ebe4116100e7578063c8c8ebe414610b02578063cd5f101d14610b18578063d4c989d314610b45578063d830678614610b6557600080fd5b8063bd74c04614610a8c578063c5f956af14610aa2578063c6aca36b14610ac2578063c876d0b914610ae257600080fd5b80639d0014b11161019b578063a9059cbb1161016a578063a9059cbb146109e6578063aa4bde2814610a06578063b559f9b614610a1c578063b62496f514610a3c578063b9c6ec5014610a6c57600080fd5b80639d0014b114610970578063a2065e7114610990578063a335d4ff146109b0578063a457c2d7146109c657600080fd5b80638d0cb35a116101d75780638d0cb35a146109075780638da5cb5b1461092757806395d89b41146109455780639c1b8af51461095a57600080fd5b8063768dc7101461087757806379cc6790146108a75780637dee3290146108c7578063883bfec4146108e757600080fd5b806332cde664116103035780635342acb4116102965780636aa5b37f116102655780636aa5b37f146107f65780636f15d9751461080c57806370a0823114610822578063715018a614610842578063738c6c091461085757600080fd5b80635342acb41461074f57806354fb8e4014610788578063560d52d4146107a8578063658c27a9146107bd57600080fd5b806342966c68116102d257806342966c68146106d9578063452ed4f1146106f957806345b1b441146107195780634a569e941461073957600080fd5b806332cde6641461064b57806335dcb05e1461066b57806339509351146106a35780633d90fff9146106c357600080fd5b80631630e97f116103865780631e293c10116103555780631e293c10146105b95780631e94ed07146105d957806323b872dd146105ef57806327a14fc21461060f578063313ce5671461062f57600080fd5b80631630e97f1461051857806318160ddd146105385780631b11c8741461054d5780631c06a7e11461056357600080fd5b8063095ea7b3116103c2578063095ea7b3146104a0578063123e6cd8146104c057806313fa254a146104e2578063148829f51461050257600080fd5b80630445b667146103ff57806306fdde0314610428578063078662911461044a578063094d776f1461048a57600080fd5b366103fa57005b600080fd5b34801561040b57600080fd5b50610415600b5481565b6040519081526020015b60405180910390f35b34801561043457600080fd5b5061043d610c8a565b60405161041f9190612f5f565b34801561045657600080fd5b5061047a610465366004612fc2565b601d6020526000908152604090205460ff1681565b604051901515815260200161041f565b34801561049657600080fd5b5061041560165481565b3480156104ac57600080fd5b5061047a6104bb366004612fe6565b610d1c565b3480156104cc57600080fd5b506104e06104db366004613029565b610d36565b005b3480156104ee57600080fd5b506104156104fd366004613044565b610d90565b34801561050e57600080fd5b50610415600e5481565b34801561052457600080fd5b506104e0610533366004613044565b610db1565b34801561054457600080fd5b50600254610415565b34801561055957600080fd5b5061041560175481565b34801561056f57600080fd5b506022546105949061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161041f565b3480156105c557600080fd5b506104e06105d4366004613044565b610e24565b3480156105e557600080fd5b50610415601a5481565b3480156105fb57600080fd5b5061047a61060a36600461305d565b610e53565b34801561061b57600080fd5b506104e061062a366004613044565b610e77565b34801561063b57600080fd5b506040516012815260200161041f565b34801561065757600080fd5b506104e061066636600461309e565b610ea6565b34801561067757600080fd5b5060095461068b906001600160a01b031681565b6040516001600160a01b03909116815260200161041f565b3480156106af57600080fd5b5061047a6106be366004612fe6565b610f45565b3480156106cf57600080fd5b5061041560185481565b3480156106e557600080fd5b506104e06106f4366004613044565b610f67565b34801561070557600080fd5b5060065461068b906001600160a01b031681565b34801561072557600080fd5b506104e0610734366004613029565b610f74565b34801561074557600080fd5b5061041560135481565b34801561075b57600080fd5b5061047a61076a366004612fc2565b6001600160a01b03166000908152601c602052604090205460ff1690565b34801561079457600080fd5b506104e06107a3366004612fc2565b610fc5565b3480156107b457600080fd5b50610415603281565b3480156107c957600080fd5b5061047a6107d8366004612fc2565b6001600160a01b03166000908152601d602052604090205460ff1690565b34801561080257600080fd5b5061041560145481565b34801561081857600080fd5b5061041560125481565b34801561082e57600080fd5b5061041561083d366004612fc2565b6110b9565b34801561084e57600080fd5b506104e06110d4565b34801561086357600080fd5b506104e0610872366004613029565b61116c565b34801561088357600080fd5b5061047a610892366004612fc2565b601c6020526000908152604090205460ff1681565b3480156108b357600080fd5b506104e06108c2366004612fe6565b6111bd565b3480156108d357600080fd5b506104e06108e2366004613044565b6111d6565b3480156108f357600080fd5b50600a5461068b906001600160a01b031681565b34801561091357600080fd5b506104e06109223660046130ef565b611205565b34801561093357600080fd5b506005546001600160a01b031661068b565b34801561095157600080fd5b5061043d611227565b34801561096657600080fd5b5061041560195481565b34801561097c57600080fd5b506104e061098b366004613044565b611236565b34801561099c57600080fd5b506104e06109ab3660046130ef565b611243565b3480156109bc57600080fd5b5061041561271081565b3480156109d257600080fd5b5061047a6109e1366004612fe6565b611267565b3480156109f257600080fd5b5061047a610a01366004612fe6565b6112e2565b348015610a1257600080fd5b50610415600c5481565b348015610a2857600080fd5b5060215461068b906001600160a01b031681565b348015610a4857600080fd5b5061047a610a57366004612fc2565b601e6020526000908152604090205460ff1681565b348015610a7857600080fd5b506104e0610a87366004612fe6565b6112f0565b348015610a9857600080fd5b50610415600d5481565b348015610aae57600080fd5b5060085461068b906001600160a01b031681565b348015610ace57600080fd5b506104e0610add366004613044565b61165f565b348015610aee57600080fd5b50601b5461047a9062010000900460ff1681565b348015610b0e57600080fd5b5061041560115481565b348015610b2457600080fd5b50610415610b33366004612fc2565b601f6020526000908152604090205481565b348015610b5157600080fd5b506104e0610b6036600461310c565b611697565b348015610b7157600080fd5b50601b5461047a9060ff1681565b348015610b8b57600080fd5b50610415610b9a366004613145565b6116ca565b348015610bab57600080fd5b5061041560105481565b348015610bc157600080fd5b506104e0610bd036600461310c565b6116f5565b348015610be157600080fd5b5061041560155481565b348015610bf757600080fd5b506104e0610c06366004613044565b611728565b348015610c1757600080fd5b506104e0610c26366004612fc2565b611735565b348015610c3757600080fd5b5061068b610c46366004613044565b6117ab565b348015610c5757600080fd5b5060205461068b906001600160a01b031681565b348015610c7757600080fd5b50601b5461047a90610100900460ff1681565b606060038054610c9990613173565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc590613173565b8015610d125780601f10610ce757610100808354040283529160200191610d12565b820191906000526020600020905b815481529060010190602001808311610cf557829003601f168201915b5050505050905090565b600033610d2a8185856117d5565b60019150505b92915050565b610d3e6118f9565b612710601a546010548361ffff16610d5691906131c3565b610d6091906131c3565b1115610d875760405162461bcd60e51b8152600401610d7e906131d6565b60405180910390fd5b61ffff16601355565b600f8181548110610da057600080fd5b600091825260209091200154905081565b610db96118f9565b6402540be400811015610e1f5760405162461bcd60e51b815260206004820152602860248201527f6d6178206761732070726963652063616e74206265206c6f776572207468616e604482015267203130206757656960c01b6064820152608401610d7e565b601755565b610e2c6118f9565b61271081610e3960025490565b610e43919061320b565b610e4d9190613222565b60115550565b600033610e61858285611953565b610e6c8585856119c7565b506001949350505050565b610e7f6118f9565b61271081610e8c60025490565b610e96919061320b565b610ea09190613222565b600c5550565b610eae6118f9565b6126ac8361ffff1611158015610eca57506126ac8261ffff1611155b610f065760405162461bcd60e51b815260206004820152600d60248201526c0a8dede40d0d2ced0e840e8c2f609b1b6044820152606401610d7e565b6022805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b600033610d2a818585610f5883836116ca565b610f6291906131c3565b6117d5565b610f713382611b1b565b50565b610f7c6118f9565b6127106010546013548361ffff16610f9491906131c3565b610f9e91906131c3565b1115610fbc5760405162461bcd60e51b8152600401610d7e906131d6565b61ffff16601a55565b610fcd6118f9565b600a546001600160a01b03908116908216036110415760405162461bcd60e51b815260206004820152602d60248201527f546865206469766964656e6420747261636b657220616c72656164792068617360448201526c2074686174206164647265737360981b6064820152608401610d7e565b6001600160a01b0381166110975760405162461bcd60e51b815260206004820152601b60248201527f6e65772061646472657373206973205a65726f206164647265737300000000006044820152606401610d7e565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526020819052604090205490565b6110dc6118f9565b60225461119461ffff90911610801561110357506022546111946201000090910461ffff16105b6111605760405162461bcd60e51b815260206004820152602860248201527f546f6f206869676874207461782c2063616e27742072656e6f756e6365206f776044820152673732b939b434b81760c11b6064820152608401610d7e565b61116a6000611c4d565b565b6111746118f9565b612710601a546013548361ffff1661118c91906131c3565b61119691906131c3565b11156111b45760405162461bcd60e51b8152600401610d7e906131d6565b61ffff16601055565b6111c8823383611953565b6111d28282611b1b565b5050565b6111de6118f9565b612710816111eb60025490565b6111f5919061320b565b6111ff9190613222565b60145550565b61120d6118f9565b601b80549115156101000261ff0019909216919091179055565b606060048054610c9990613173565b61123e6118f9565b600b55565b61124b6118f9565b601b8054911515620100000262ff000019909216919091179055565b6000338161127582866116ca565b9050838110156112d55760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610d7e565b610e6c82868684036117d5565b600033610d2a8185856119c7565b6112f86118f9565b6001600160a01b03821661134e5760405162461bcd60e51b815260206004820152601b60248201527f6e65772061646472657373206973205a65726f206164647265737300000000006044820152606401610d7e565b6113888111156113925760405162461bcd60e51b815260206004820152600f60248201526e1a5b9d985b1a59081c195c98d95b9d608a1b6044820152606401610d7e565b602180546001600160a01b0319166001600160a01b03841690811790915560405163031e79db60e41b8152600481018290526331e79db090602401600060405180830381600087803b1580156113e757600080fd5b505af11580156113fb573d6000803e3d6000fd5b505060215460405163031e79db60e41b81523060048201526001600160a01b0390911692506331e79db09150602401600060405180830381600087803b15801561144457600080fd5b505af1158015611458573d6000803e3d6000fd5b50506021546001600160a01b031691506331e79db090506114816005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156114c257600080fd5b505af11580156114d6573d6000803e3d6000fd5b505060215460205460405163031e79db60e41b81526001600160a01b039182166004820152911692506331e79db09150602401600060405180830381600087803b15801561152357600080fd5b505af1158015611537573d6000803e3d6000fd5b505060215460065460405163031e79db60e41b81526001600160a01b039182166004820152911692506331e79db09150602401600060405180830381600087803b15801561158457600080fd5b505af1158015611598573d6000803e3d6000fd5b5050506001600160a01b038084166000908152601c60209081526040808320805460ff199081166001908117909255601d845293829020805490941617909255601a859055602154825163d1af0c7d60e01b815292519316935063d1af0c7d926004808401938290030181865afa158015611617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163b9190613244565b600980546001600160a01b0319166001600160a01b03929092169190911790555050565b600061166c600283613222565b9050476116798230611c9f565b60006116858247613261565b90506116918382611dfe565b50505050565b61169f6118f9565b6001600160a01b03919091166000908152601d60205260409020805460ff1916911515919091179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6116fd6118f9565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b6117306118f9565b601255565b61173d6118f9565b6001600160a01b0381166117a25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d7e565b610f7181611c4d565b600781815481106117bb57600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b0383166118375760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d7e565b6001600160a01b0382166118985760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d7e565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b0316331461116a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d7e565b600061195f84846116ca565b9050600019811461169157818110156119ba5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610d7e565b61169184848484036117d5565b6119d2838383611eb5565b601b5460ff16156119ed576119e883838361241f565b505050565b6119f783836125c3565b15611a0457611a04612673565b611a0f838383612890565b6021546001600160a01b0316156119e8576021546001600160a01b031663e30443bc84611a3b816110b9565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611a8157600080fd5b505af1925050508015611a92575060015b506021546001600160a01b031663e30443bc83611aae816110b9565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611af457600080fd5b505af1925050508015611b05575060015b50601b5460ff166119e8576119e8601954612966565b6001600160a01b038216611b7b5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610d7e565b6001600160a01b03821660009081526020819052604090205481811015611bef5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610d7e565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611cd457611cd461328a565b6001600160a01b039283166020918202929092018101919091528054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611d2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d509190613244565b81600181518110611d6357611d6361328a565b6001600160a01b03928316602091820292909201810191909152544291611d8d91309116866117d5565b60205460405163791ac94760e01b81526001600160a01b039091169063791ac94790611dc69087906000908790899088906004016132e4565b600060405180830381600087803b158015611de057600080fd5b505af1158015611df4573d6000803e3d6000fd5b5050505050505050565b6020544290611e1a9030906001600160a01b03166000196117d5565b60205460405163f305d71960e01b81523060048201819052602482018690526000604483018190526064830152608482015260a481018390526001600160a01b039091169063f305d71990849060c40160606040518083038185885af1158015611e88573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ead9190613320565b505050505050565b6001600160a01b038316611f215760405162461bcd60e51b815260206004820152602d60248201527f45524332303a207472616e736665722066726f6d20746865205a45524f5f414460448201526c4452455353206164647265737360981b6064820152608401610d7e565b6001600160a01b038216611f8b5760405162461bcd60e51b815260206004820152602b60248201527f45524332303a207472616e7366657220746f20746865205a45524f5f4144445260448201526a455353206164647265737360a81b6064820152608401610d7e565b60008111611ff55760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152707468616e205a45524f5f4144445245535360781b6064820152608401610d7e565b601b5462010000900460ff16801561201b575060165460155461201891906131c3565b42105b156121b6576005546001600160a01b0384811691161480159061204c57506020546001600160a01b03838116911614155b801561206657506006546001600160a01b03838116911614155b801561207b57506001600160a01b0382163014155b156121b657601454156120cb576014548111156120cb5760405162461bcd60e51b815260206004820152600e60248201526d26b0bc10213abc902634b6b4ba1760911b6044820152606401610d7e565b601b54610100900460ff161561212d576017543a111561212d5760405162461bcd60e51b815260206004820152601860248201527f4761732070726963652065786365656473206c696d69742e00000000000000006044820152606401610d7e565b336000908152601f60205260409020544210156121985760405162461bcd60e51b815260206004820152602360248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201526232b21760e91b6064820152608401610d7e565b6018546121a590426131c3565b336000908152601f60205260409020555b6005546001600160a01b038481169116148015906121e257506005546001600160a01b03838116911614155b80156121f657506001600160a01b03821615155b801561220d57506001600160a01b03821661dead14155b801561222257506001600160a01b0382163014155b80156122315750601b5460ff16155b156119e8576001600160a01b0383166000908152601e602052604090205460ff1615612341576001600160a01b0382166000908152601d602052604090205460ff166119e8576011548111156122e75760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610d7e565b600c546122f3836110b9565b6122fd90836131c3565b11156119e85760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610d7e565b6001600160a01b0382166000908152601e602052604090205460ff16156123f3576001600160a01b0382166000908152601d602052604090205460ff166119e8576011548111156119e85760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610d7e565b6001600160a01b0382166000908152601d602052604090205460ff166119e857600c546122f3836110b9565b6001600160a01b0383166124835760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d7e565b6001600160a01b0382166124e55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d7e565b6001600160a01b0383166000908152602081905260409020548181101561255d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610d7e565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611691565b6000806125cf306110b9565b9050600b5481101580156125e65750601b5460ff16155b801561260057506006546001600160a01b03858116911614155b8015612621575060065460009061261f906001600160a01b03166110b9565b115b801561264657506001600160a01b0383166000908152601c602052604090205460ff16155b801561266b57506001600160a01b0384166000908152601c602052604090205460ff16155b949350505050565b601b805460ff19166001179055600061268b306110b9565b600d549091501561277257600d546126a38183613261565b6000600d5560075490925081905b801561276e5760008160011461270657612710600f6126d1600185613261565b815481106126e1576126e161328a565b9060005260206000200154856126f7919061320b565b6127019190613222565b612708565b825b905061274581600761271b600186613261565b8154811061272b5761272b61328a565b6000918252602090912001546001600160a01b0316611c9f565b600182111561275b576127588184613261565b92505b50806127668161334e565b9150506126b1565b5050505b61277b306110b9565b9050801561288357601354156127af576127af6127106013548361279f919061320b565b6127a99190613222565b30611c9f565b601054156127d5576127d5612710601054836127cb919061320b565b610add9190613222565b6000612710601a546013546010546127ed91906131c3565b6127f791906131c3565b612801908461320b565b61280b9190613222565b6128159083613261565b90508015612834576008546128349082906001600160a01b0316611c9f565b60125415612856576012544790811115612854576128548161dead612a28565b505b601a541561288157612881612710601a5484612872919061320b565b61287c9190613222565b612b8d565b505b50601b805460ff19169055565b6001600160a01b0383166000908152601c6020526040902054819060019060ff16806128d457506001600160a01b0384166000908152601c602052604090205460ff165b156128dd575060005b8015612954576000806128f1878787612d37565b9092509050600061290282846131c3565b111561295157806129138387613261565b61291d9190613261565b9350801561293d5780600d600082825461293791906131c3565b90915550505b612951873061294c84866131c3565b61241f565b50505b61295f85858461241f565b5050505050565b6021546040516001624d3b8760e01b03198152600481018390526001600160a01b039091169063ffb2c479906024016060604051808303816000875af19250505080156129d0575060408051601f3d908101601f191682019092526129cd91810190613320565b60015b15610f715760408051848152602081018490529081018290526060810185905232906001907fc864333d6121033635ab41b29ae52f10a22cf4438c3e4f1c4c68518feb2f8a989060800160405180910390a350505050565b604080516002808252606082018352600092602083019080368337505060208054604080516315ab88c960e31b815290519495506001600160a01b039091169363ad5c46489350600480830193928290030181865afa158015612a8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab39190613244565b81600081518110612ac657612ac661328a565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110612afa57612afa61328a565b6001600160a01b0392831660209182029290920181019190915254604051637ff36ab560e01b815242929190911690637ff36ab5908690612b4690600090879089908890600401613365565b60006040518083038185885af1158015612b64573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261295f919081019061339a565b600954612ba69030906001600160a01b03168382612e20565b6009546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015612bef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c139190613458565b60095460215460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905292935060009291169063a9059cbb906044016020604051808303816000875af1158015612c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c929190613471565b905080156119e857602154604051633243c79160e01b8152600481018490526001600160a01b0390911690633243c79190602401600060405180830381600087803b158015612ce057600080fd5b505af1158015612cf4573d6000803e3d6000fd5b505060408051868152602081018690527f80195cc573b02cc48460cbca6e6e4cc85ddb91959d946e1c3025ea3d87942dc3935001905060405180910390a1505050565b6001600160a01b0383166000908152601e60205260408120548190819081908190819060ff1615612d7a57602254612d739061ffff16856131c3565b9350612dd2565b6001600160a01b0388166000908152601e602052604090205460ff1615612db257602254612d739062010000900461ffff16856131c3565b602254612dcb90640100000000900461ffff16856131c3565b9350600190505b8315612df257612710612de5858961320b565b612def9190613222565b92505b80612e1257612710612e0560328961320b565b612e0f9190613222565b91505b509097909650945050505050565b60408051600380825260808201909252600091602082016060803683370190505090508481600081518110612e5757612e5761328a565b6001600160a01b039283166020918202929092010152600a54825191169082906001908110612e8857612e8861328a565b60200260200101906001600160a01b031690816001600160a01b0316815250508381600281518110612ebc57612ebc61328a565b6001600160a01b0392831660209182029290920181019190915254612ee491309116856117d5565b6020546001600160a01b0316635c11d7958460008486612f06426103e86131c3565b6040518663ffffffff1660e01b8152600401612f269594939291906132e4565b600060405180830381600087803b158015612f4057600080fd5b505af1158015612f54573d6000803e3d6000fd5b505050505050505050565b600060208083528351808285015260005b81811015612f8c57858101830151858201604001528201612f70565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f7157600080fd5b600060208284031215612fd457600080fd5b8135612fdf81612fad565b9392505050565b60008060408385031215612ff957600080fd5b823561300481612fad565b946020939093013593505050565b803561ffff8116811461302457600080fd5b919050565b60006020828403121561303b57600080fd5b612fdf82613012565b60006020828403121561305657600080fd5b5035919050565b60008060006060848603121561307257600080fd5b833561307d81612fad565b9250602084013561308d81612fad565b929592945050506040919091013590565b6000806000606084860312156130b357600080fd5b6130bc84613012565b92506130ca60208501613012565b91506130d860408501613012565b90509250925092565b8015158114610f7157600080fd5b60006020828403121561310157600080fd5b8135612fdf816130e1565b6000806040838503121561311f57600080fd5b823561312a81612fad565b9150602083013561313a816130e1565b809150509250929050565b6000806040838503121561315857600080fd5b823561316381612fad565b9150602083013561313a81612fad565b600181811c9082168061318757607f821691505b6020821081036131a757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610d3057610d306131ad565b6020808252818101527f50657263656e742063616e7420626520686967686572207468616e2031303025604082015260600190565b8082028115828204841417610d3057610d306131ad565b60008261323f57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561325657600080fd5b8151612fdf81612fad565b81810381811115610d3057610d306131ad565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156132d95781516001600160a01b0316875295820195908201906001016132b4565b509495945050505050565b85815284602082015260a06040820152600061330360a08301866132a0565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561333557600080fd5b8351925060208401519150604084015190509250925092565b60008161335d5761335d6131ad565b506000190190565b84815260806020820152600061337e60808301866132a0565b6001600160a01b03949094166040830152506060015292915050565b600060208083850312156133ad57600080fd5b825167ffffffffffffffff808211156133c557600080fd5b818501915085601f8301126133d957600080fd5b8151818111156133eb576133eb613274565b8060051b604051601f19603f8301168101818110858211171561341057613410613274565b60405291825284820192508381018501918883111561342e57600080fd5b938501935b8285101561344c57845184529385019392850192613433565b98975050505050505050565b60006020828403121561346a57600080fd5b5051919050565b60006020828403121561348357600080fd5b8151612fdf816130e156fea2646970667358221220a3d721612b69be363036f7053378d4522162c5fd0e834ac7fd087017a4793b9e64736f6c63430008130033", + "sourceMap": "27207:26278:0:-:0;;;30808:4237;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31109:9;31120:11;9032:5;:13;31109:9;9032:5;:13;:::i;:::-;-1:-1:-1;9055:7:0;:17;9065:7;9055;:17;:::i;:::-;;8966:113;;1811:32;1830:12;:10;;;:12;;:::i;:::-;1811:18;:32::i;:::-;31151:9:::1;:16;31171:1;31151:21;31143:58;;;::::0;-1:-1:-1;;;31143:58:0;;6914:2:1;31143:58:0::1;::::0;::::1;6896:21:1::0;6953:2;6933:18;;;6926:30;6992:26;6972:18;;;6965:54;7036:18;;31143:58:0::1;;;;;;;;;31219:8;:15;31238:1;31219:20;31211:57;;;::::0;-1:-1:-1;;;31211:57:0;;7267:2:1;31211:57:0::1;::::0;::::1;7249:21:1::0;7306:2;7286:18;;;7279:30;7345:26;7325:18;;;7318:54;7389:18;;31211:57:0::1;7065:348:1::0;31211:57:0::1;31301:4;31286:8;31295:1;31286:11;;;;;;;;:::i;:::-;;;;;;;:19;;;;:42;;;;;31324:4;31309:8;31318:1;31309:11;;;;;;;;:::i;:::-;;;;;;;:19;;;;31286:42;31278:68;;;::::0;-1:-1:-1;;;31278:68:0;;7752:2:1;31278:68:0::1;::::0;::::1;7734:21:1::0;7791:2;7771:18;;;7764:30;-1:-1:-1;;;7810:18:1;;;7803:43;7863:18;;31278:68:0::1;7550:337:1::0;31278:68:0::1;31423:9;31433:1;31423:12;;;;;;;;:::i;:::-;;;;;;;31405:15;;:30;;;;;-1:-1:-1::0;;;;;31405:30:0::1;;;;;-1:-1:-1::0;;;;;31405:30:0::1;;;;;;31446:18;27906:5;31477:8;31486:1;31477:11;;;;;;;;:::i;:::-;;;;;;;31468:20;;:6;:20;;;;:::i;:::-;31467:36;;;;:::i;:::-;31446:57:::0;-1:-1:-1;31513:48:0::1;31519:10;31446:57:::0;31531:16:::1;31540:7:::0;31531:6;:16:::1;:::i;:::-;:29;;;;:::i;:::-;31513:5;:48::i;:::-;31575:11:::0;;31571:48:::1;;31594:15;::::0;31588:31:::1;::::0;-1:-1:-1;;;;;31594:15:0::1;31611:7:::0;31588:5:::1;:31::i;:::-;31633:14:::0;;31629:54:::1;;31649:34;31663:6;31672:10:::0;31649:5:::1;:34::i;:::-;31712:8;31721:1;31712:11;;;;;;;;:::i;:::-;;;;;;;:16;;31727:1;31712:16;:88;;27906:5;31774:8;31783:1;31774:11;;;;;;;;:::i;:::-;;;;;;;31765:20;;:6;:20;;;;:::i;:::-;31764:36;;;;:::i;:::-;31712:88;;;31743:6;31712:88;31694:15;:106:::0;31833:11;;:8;;31842:1:::1;::::0;31833:11;::::1;;;;;:::i;:::-;;;;;;;:16;;31848:1;31833:16;:88;;27906:5;31895:8;31904:1;31895:11;;;;;;;;:::i;:::-;;;;;;;31886:20;;:6;:20;;;;:::i;:::-;31885:36;;;;:::i;:::-;31833:88;;;31864:6;31833:88;31810:20;:111:::0;31932:20:::1;:69:::0;;::::1;::::0;;::::1;::::0;;;;;::::1;::::0;;-1:-1:-1;;;;;;31932:69:0;;::::1;31958:42;31932:69;::::0;;;32011;;;;::::1;::::0;;;;;;::::1;::::0;;;;::::1;32037:42;32011:69;::::0;;;32091:19:::1;:30:::0;;;;::::1;::::0;;-1:-1:-1;32091:30:0;;;32116:4:::1;32091:30:::0;;;::::1;::::0;32131;;;;::::1;::::0;;;32156:4:::1;32131:30:::0;::::1;::::0;32209:111:::1;::::0;;::::1;::::0;::::1;::::0;;;32236:11;;32209:111;;;;32236:8;;31932:69;32236:11;::::1;;;;;:::i;:::-;;;;;;;32209:111;;;;;;32270:8;32279:1;32270:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;32209:111:::1;::::0;;::::1;::::0;;32308:1:::1;32209:111:::0;;::::1;::::0;;;32196:124;;:10:::1;:124:::0;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;;32196:124:0;;::::1;::::0;::::1;-1:-1:-1::0;;32196:124:0;;;;;;::::1;::::0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;32359:12;;:9;;32308:1;32359:12:::1;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;32331:41;;-1:-1:-1;;;;;;32331:41:0::1;-1:-1:-1::0;;;;;32331:41:0;;::::1;::::0;;::::1;::::0;;32411:13:::1;::::0;;-1:-1:-1;;;32411:13:0;;;;32331:41;;32411:11:::1;::::0;:13:::1;::::0;;::::1;::::0;;;;;;32331:41;32411:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32382:26;:42:::0;;-1:-1:-1;;;;;;32382:42:0::1;-1:-1:-1::0;;;;;32382:42:0;;::::1;;::::0;;32514:6:::1;::::0;;:16:::1;::::0;;-1:-1:-1;;;32514:16:0;;;;:6;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;:6;;:16;;;;;:6;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;32496:46:0::1;;32564:4;32583:6;;;;;;;;;-1:-1:-1::0;;;;;32583:6:0::1;-1:-1:-1::0;;;;;32583:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32496:110;::::0;-1:-1:-1;;;;;;32496:110:0::1;::::0;;;;;;-1:-1:-1;;;;;8995:15:1;;;32496:110:0::1;::::0;::::1;8977:34:1::0;9047:15;;9027:18;;;9020:43;8912:18;;32496:110:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32487:6;:119:::0;;-1:-1:-1;;;;;;32487:119:0::1;-1:-1:-1::0;;;;;32487:119:0;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;32616:33:0;;;:25:::1;:33;::::0;;;;:40;;-1:-1:-1;;32616:40:0::1;-1:-1:-1::0;32616:40:0;;::::1;::::0;;;-1:-1:-1;33472:18:0::1;::::0;33491:7:::1;2148:6:::0;;-1:-1:-1;;;;;2148:6:0;;2076:85;33491:7:::1;-1:-1:-1::0;;;;;33472:27:0;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;33472:27:0;;;:34;;;::::1;;-1:-1:-1::0;;33472:34:0;;::::1;;::::0;;33535:15:::1;::::0;;;::::1;33516:35:::0;;:18:::1;:35:::0;;;;;;;:42;;;;::::1;33472:34:::0;33516:42;;::::1;::::0;;;33587:20:::1;:23:::0;;-1:-1:-1;;33587:23:0::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;::::0;-1:-1:-1;;;;;33587:23:0::1;33568:43:::0;;;::::1;::::0;;;;;;;;:50;;-1:-1:-1;;33568:50:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;33647:20:::1;:23:::0;;-1:-1:-1;;33628:18:0::1;::::0;33587:23;;-1:-1:-1;;33647:23:0;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;::::0;-1:-1:-1;;;;;33647:23:0::1;33628:43:::0;;;;::::1;::::0;;;;;;;;;;:50;;;::::1;;-1:-1:-1::0;;33628:50:0;;::::1;;::::0;;33715:4:::1;33688:33:::0;;:18:::1;:33:::0;;;;;:40;;;;::::1;33647:23:::0;33688:40;;::::1;::::0;;;33739:20:::1;::::0;33760:7:::1;2148:6:::0;;-1:-1:-1;;;;;2148:6:0;;2076:85;33760:7:::1;-1:-1:-1::0;;;;;33739:29:0;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;33739:29:0;;;:36;;;::::1;;-1:-1:-1::0;;33739:36:0;;::::1;;::::0;;33806:15:::1;::::0;;;::::1;33785:37:::0;;:20:::1;:37:::0;;;;;;;:44;;;;::::1;33739:36:::0;33785:44;;::::1;::::0;;;33860:20:::1;:23:::0;;-1:-1:-1;;33860:23:0::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;::::0;-1:-1:-1;;;;;33860:23:0::1;33839:45:::0;;;::::1;::::0;;;;;;;;:52;;-1:-1:-1;;33839:52:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;33922:20:::1;:23:::0;;-1:-1:-1;;33901:20:0::1;::::0;33860:23;;-1:-1:-1;;33922:23:0;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;::::0;-1:-1:-1;;;;;33922:23:0;;::::1;33901:45:::0;;;;::::1;::::0;;;;;;;;;;:52;;;::::1;;-1:-1:-1::0;;33901:52:0;;::::1;;::::0;;33992:4:::1;33963:35:::0;;:20:::1;:35:::0;;;;;:42;;;::::1;33922:23:::0;33963:42;;::::1;::::0;;;34044:6;;;::::1;34015:37:::0;;;;;:44;;;::::1;::::0;::::1;::::0;;34090:6:::1;::::0;;;::::1;34069:28:::0;;;;;:35;;;;::::1;::::0;;::::1;::::0;;;34187:10:::1;34171:13;:26:::0;34208:20:::1;:24:::0;;;34247:14:::1;:18:::0;34300:7:::1;34281:16;:26:::0;34391:53:::1;34400:7;2148:6:::0;;-1:-1:-1;;;;;2148:6:0;;2076:85;34400:7:::1;34417:6;::::0;-1:-1:-1;;;;;34417:6:0::1;-1:-1:-1::0;;34391:8:0::1;:53::i;:::-;34486:6;::::0;34454:59:::1;::::0;34471:4:::1;::::0;-1:-1:-1;;;;;34486:6:0::1;-1:-1:-1::0;;34454:8:0::1;:59::i;:::-;-1:-1:-1::0;;;34524:11:0::1;:20:::0;;;;-1:-1:-1;;34554:14:0::1;:22:::0;;-1:-1:-1;;34638:28:0;;;-1:-1:-1;34695:15:0::1;34676:16;:34:::0;34793:11:::1;34774:16;:30:::0;34922:1:::1;34901:18;:22:::0;34950:4:::1;34933:14;:21:::0;35032:6:::1;35013:16;:25:::0;27207:26278;;647:96;726:10;;647:96::o;3301:187::-;3393:6;;;-1:-1:-1;;;;;3409:17:0;;;-1:-1:-1;;;;;;3409:17:0;;;;;;;3441:40;;3393:6;;;3409:17;3393:6;;3441:40;;3374:16;;3441:40;3364:124;3301:187;:::o;15506:535::-;-1:-1:-1;;;;;15589:21:0;;15581:65;;;;-1:-1:-1;;;15581:65:0;;9276:2:1;15581:65:0;;;9258:21:1;9315:2;9295:18;;;9288:30;9354:33;9334:18;;;9327:61;9405:18;;15581:65:0;9074:355:1;15581:65:0;15733:6;15717:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;15885:18:0;;:9;:18;;;;;;;;;;;:28;;;;;;15938:37;9710:25:1;;;15938:37:0;;9683:18:1;15938:37:0;;;;;;;15506:535;;:::o;17443:340::-;-1:-1:-1;;;;;17544:19:0;;17536:68;;;;-1:-1:-1;;;17536:68:0;;9948:2:1;17536:68:0;;;9930:21:1;9987:2;9967:18;;;9960:30;10026:34;10006:18;;;9999:62;-1:-1:-1;;;10077:18:1;;;10070:34;10121:19;;17536:68:0;9746:400:1;17536:68:0;-1:-1:-1;;;;;17622:21:0;;17614:68;;;;-1:-1:-1;;;17614:68:0;;10353:2:1;17614:68:0;;;10335:21:1;10392:2;10372:18;;;10365:30;10431:34;10411:18;;;10404:62;-1:-1:-1;;;10482:18:1;;;10475:32;10524:19;;17614:68:0;10151:398:1;17614:68:0;-1:-1:-1;;;;;17693:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17744:32;;9710:25:1;;;17744:32:0;;9683:18:1;17744:32:0;;;;;;;17443:340;;;:::o;19059:91::-;;;;:::o;14:127:1:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:275;217:2;211:9;282:2;263:13;;-1:-1:-1;;259:27:1;247:40;;-1:-1:-1;;;;;302:34:1;;338:22;;;299:62;296:88;;;364:18;;:::i;:::-;400:2;393:22;146:275;;-1:-1:-1;146:275:1:o;426:650::-;480:5;533:3;526:4;518:6;514:17;510:27;500:55;;551:1;548;541:12;500:55;574:13;;-1:-1:-1;;;;;599:26:1;;596:52;;;628:18;;:::i;:::-;667:4;695:53;738:2;719:13;;-1:-1:-1;;715:27:1;711:36;;695:53;:::i;:::-;773:2;764:7;757:19;817:3;812:2;807;799:6;795:15;791:24;788:33;785:53;;;834:1;831;824:12;785:53;856:1;866:134;880:2;877:1;874:9;866:134;;;969:14;;;965:23;;959:30;937:15;;;933:24;;926:64;891:10;;866:134;;;-1:-1:-1;1043:1:1;1020:16;;;1016:25;;;1009:36;;;;1024:7;426:650;-1:-1:-1;;;426:650:1:o;1081:183::-;1141:4;-1:-1:-1;;;;;1163:30:1;;1160:56;;;1196:18;;:::i;:::-;-1:-1:-1;1241:1:1;1237:14;1253:4;1233:25;;1081:183::o;1269:177::-;1348:13;;-1:-1:-1;;;;;1390:31:1;;1380:42;;1370:70;;1436:1;1433;1426:12;1370:70;1269:177;;;:::o;1451:683::-;1516:5;1569:3;1562:4;1554:6;1550:17;1546:27;1536:55;;1587:1;1584;1577:12;1536:55;1616:6;1610:13;1642:4;1666:60;1682:43;1722:2;1682:43;:::i;:::-;1666:60;:::i;:::-;1760:15;;;1846:1;1842:10;;;;1830:23;;1826:32;;;1791:12;;;;1870:15;;;1867:35;;;1898:1;1895;1888:12;1867:35;1934:2;1926:6;1922:15;1946:159;1962:6;1957:3;1954:15;1946:159;;;2028:34;2058:3;2028:34;:::i;:::-;2016:47;;2083:12;;;;1979;;1946:159;;;-1:-1:-1;2123:5:1;1451:683;-1:-1:-1;;;;;;1451:683:1:o;2139:829::-;2203:5;2256:3;2249:4;2241:6;2237:17;2233:27;2223:55;;2274:1;2271;2264:12;2223:55;2303:6;2297:13;2329:4;2353:60;2369:43;2409:2;2369:43;:::i;2353:60::-;2447:15;;;2533:1;2529:10;;;;2517:23;;2513:32;;;2478:12;;;;2557:15;;;2554:35;;;2585:1;2582;2575:12;2554:35;2621:2;2613:6;2609:15;2633:306;2649:6;2644:3;2641:15;2633:306;;;2722:3;2716:10;2770:6;2763:5;2759:18;2752:5;2749:29;2739:127;;2820:1;2849:2;2845;2838:14;2739:127;2879:18;;2917:12;;;;2666;;2633:306;;2973:1145;3157:6;3165;3173;3181;3189;3197;3250:3;3238:9;3229:7;3225:23;3221:33;3218:53;;;3267:1;3264;3257:12;3218:53;3294:16;;-1:-1:-1;;;;;3359:14:1;;;3356:34;;;3386:1;3383;3376:12;3356:34;3409:61;3462:7;3453:6;3442:9;3438:22;3409:61;:::i;:::-;3399:71;;3516:2;3505:9;3501:18;3495:25;3479:41;;3545:2;3535:8;3532:16;3529:36;;;3561:1;3558;3551:12;3529:36;3584:63;3639:7;3628:8;3617:9;3613:24;3584:63;:::i;:::-;3574:73;;3687:2;3676:9;3672:18;3666:25;3656:35;;3731:2;3720:9;3716:18;3710:25;3700:35;;3781:3;3770:9;3766:19;3760:26;3744:42;;3811:2;3801:8;3798:16;3795:36;;;3827:1;3824;3817:12;3795:36;3850:74;3916:7;3905:8;3894:9;3890:24;3850:74;:::i;:::-;3840:84;;3970:3;3959:9;3955:19;3949:26;3933:42;;4000:2;3990:8;3987:16;3984:36;;;4016:1;4013;4006:12;3984:36;;4039:73;4104:7;4093:8;4082:9;4078:24;4039:73;:::i;:::-;4029:83;;;2973:1145;;;;;;;;:::o;4123:380::-;4202:1;4198:12;;;;4245;;;4266:61;;4320:4;4312:6;4308:17;4298:27;;4266:61;4373:2;4365:6;4362:14;4342:18;4339:38;4336:161;;4419:10;4414:3;4410:20;4407:1;4400:31;4454:4;4451:1;4444:15;4482:4;4479:1;4472:15;4336:161;;4123:380;;;:::o;4634:545::-;4736:2;4731:3;4728:11;4725:448;;;4772:1;4797:5;4793:2;4786:17;4842:4;4838:2;4828:19;4912:2;4900:10;4896:19;4893:1;4889:27;4883:4;4879:38;4948:4;4936:10;4933:20;4930:47;;;-1:-1:-1;4971:4:1;4930:47;5026:2;5021:3;5017:12;5014:1;5010:20;5004:4;5000:31;4990:41;;5081:82;5099:2;5092:5;5089:13;5081:82;;;5144:17;;;5125:1;5114:13;5081:82;;;5085:3;;;4634:545;;;:::o;5355:1352::-;5475:10;;-1:-1:-1;;;;;5497:30:1;;5494:56;;;5530:18;;:::i;:::-;5559:97;5649:6;5609:38;5641:4;5635:11;5609:38;:::i;:::-;5603:4;5559:97;:::i;:::-;5711:4;;5775:2;5764:14;;5792:1;5787:663;;;;6494:1;6511:6;6508:89;;;-1:-1:-1;6563:19:1;;;6557:26;6508:89;-1:-1:-1;;5312:1:1;5308:11;;;5304:24;5300:29;5290:40;5336:1;5332:11;;;5287:57;6610:81;;5757:944;;5787:663;4581:1;4574:14;;;4618:4;4605:18;;-1:-1:-1;;5823:20:1;;;5941:236;5955:7;5952:1;5949:14;5941:236;;;6044:19;;;6038:26;6023:42;;6136:27;;;;6104:1;6092:14;;;;5971:19;;5941:236;;;5945:3;6205:6;6196:7;6193:19;6190:201;;;6266:19;;;6260:26;-1:-1:-1;;6349:1:1;6345:14;;;6361:3;6341:24;6337:37;6333:42;6318:58;6303:74;;6190:201;-1:-1:-1;;;;;6437:1:1;6421:14;;;6417:22;6404:36;;-1:-1:-1;5355:1352:1:o;7418:127::-;7479:10;7474:3;7470:20;7467:1;7460:31;7510:4;7507:1;7500:15;7534:4;7531:1;7524:15;7892:127;7953:10;7948:3;7944:20;7941:1;7934:31;7984:4;7981:1;7974:15;8008:4;8005:1;7998:15;8024:168;8097:9;;;8128;;8145:15;;;8139:22;;8125:37;8115:71;;8166:18;;:::i;:::-;8024:168;;;;:::o;8197:217::-;8237:1;8263;8253:132;;8307:10;8302:3;8298:20;8295:1;8288:31;8342:4;8339:1;8332:15;8370:4;8367:1;8360:15;8253:132;-1:-1:-1;8399:9:1;;8197:217::o;8419:128::-;8486:9;;;8507:11;;;8504:37;;;8521:18;;:::i;8552:208::-;8622:6;8675:2;8663:9;8654:7;8650:23;8646:32;8643:52;;;8691:1;8688;8681:12;8643:52;8714:40;8744:9;8714:40;:::i;:::-;8704:50;8552:208;-1:-1:-1;;;8552:208:1:o;9434:125::-;9499:9;;;9520:10;;;9517:36;;;9533:18;;:::i;10151:398::-;27207:26278:0;;;;;;", + "deployedSourceMap": "27207:26278:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27813:28;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;27813:28:0;;;;;;;;9144:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;29277:52::-;;;;;;;;;;-1:-1:-1;29277:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1302:14:1;;1295:22;1277:41;;1265:2;1250:18;29277:52:0;1137:187:1;28629:29:0;;;;;;;;;;;;;;;;11430:197;;;;;;;;;;-1:-1:-1;11430:197:0;;;;;:::i;:::-;;:::i;38247:291::-;;;;;;;;;;-1:-1:-1;38247:291:0;;;;;:::i;:::-;;:::i;:::-;;28266:36;;;;;;;;;;-1:-1:-1;28266:36:0;;;;;:::i;:::-;;:::i;28097:28::-;;;;;;;;;;;;;;;;36587:231;;;;;;;;;;-1:-1:-1;36587:231:0;;;;;:::i;:::-;;:::i;10241:106::-;;;;;;;;;;-1:-1:-1;10328:12:0;;10241:106;;28664:31;;;;;;;;;;;;;;;;30061:22;;;;;;;;;;-1:-1:-1;30061:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;2393:6:1;2426:15;;;2408:34;;2478:15;;;2473:2;2458:18;;2451:43;2530:15;;2510:18;;;2503:43;;;;2371:2;2356:18;30061:22:0;2187:365:1;53063:154:0;;;;;;;;;;-1:-1:-1;53063:154:0;;;;;:::i;:::-;;:::i;28831:41::-;;;;;;;;;;;;;;;;12189:256;;;;;;;;;;-1:-1:-1;12189:256:0;;;;;:::i;:::-;;:::i;52913:144::-;;;;;;;;;;-1:-1:-1;52913:144:0;;;;;:::i;:::-;;:::i;10090:91::-;;;;;;;;;;-1:-1:-1;10090:91:0;;10172:2;3160:36:1;;3148:2;3133:18;10090:91:0;3018:184:1;37715:322:0;;;;;;;;;;-1:-1:-1;37715:322:0;;;;;:::i;:::-;;:::i;27555:35::-;;;;;;;;;;-1:-1:-1;27555:35:0;;;;-1:-1:-1;;;;;27555:35:0;;;;;;-1:-1:-1;;;;;3704:32:1;;;3686:51;;3674:2;3659:18;27555:35:0;3540:203:1;12840:234:0;;;;;;;;;;-1:-1:-1;12840:234:0;;;;;:::i;:::-;;:::i;28734:33::-;;;;;;;;;;;;;;;;20427:89;;;;;;;;;;-1:-1:-1;20427:89:0;;;;;:::i;:::-;;:::i;27364:21::-;;;;;;;;;;-1:-1:-1;27364:21:0;;;;-1:-1:-1;;;;;27364:21:0;;;38892:301;;;;;;;;;;-1:-1:-1;38892:301:0;;;;;:::i;:::-;;:::i;28470:29::-;;;;;;;;;;;;;;;;52187:144;;;;;;;;;;-1:-1:-1;52187:144:0;;;;;:::i;:::-;-1:-1:-1;;;;;52297:27:0;52274:4;52297:27;;;:18;:27;;;;;;;;;52187:144;35051:365;;;;;;;;;;-1:-1:-1;35051:365:0;;;;;:::i;:::-;;:::i;28167:49::-;;;;;;;;;;;;28214:2;28167:49;;52491:148;;;;;;;;;;-1:-1:-1;52491:148:0;;;;;:::i;:::-;-1:-1:-1;;;;;52603:29:0;52580:4;52603:29;;;:20;:29;;;;;;;;;52491:148;28505:26;;;;;;;;;;;;;;;;28412:31;;;;;;;;;;;;;;;;10405:125;;;;;;;;;;-1:-1:-1;10405:125:0;;;;;:::i;:::-;;:::i;53223:260::-;;;;;;;;;;;;;:::i;38589:297::-;;;;;;;;;;-1:-1:-1;38589:297:0;;;;;:::i;:::-;;:::i;29186:50::-;;;;;;;;;;-1:-1:-1;29186:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;20822:161;;;;;;;;;;-1:-1:-1;20822:161:0;;;;;:::i;:::-;;:::i;37239:131::-;;;;;;;;;;-1:-1:-1;37239:131:0;;;;;:::i;:::-;;:::i;27622:41::-;;;;;;;;;;-1:-1:-1;27622:41:0;;;;-1:-1:-1;;;;;27622:41:0;;;37507:100;;;;;;;;;;-1:-1:-1;37507:100:0;;;;;:::i;:::-;;:::i;2076:85::-;;;;;;;;;;-1:-1:-1;2148:6:0;;-1:-1:-1;;;;;2148:6:0;2076:85;;9355:102;;;;;;;;;;;;;:::i;28794:31::-;;;;;;;;;;;;;;;;52803:104;;;;;;;;;;-1:-1:-1;52803:104:0;;;;;:::i;:::-;;:::i;36975:114::-;;;;;;;;;;-1:-1:-1;36975:114:0;;;;;:::i;:::-;;:::i;27868:43::-;;;;;;;;;;;;27906:5;27868:43;;13561:427;;;;;;;;;;-1:-1:-1;13561:427:0;;;;;:::i;:::-;;:::i;10726:189::-;;;;;;;;;;-1:-1:-1;10726:189:0;;;;;:::i;:::-;;:::i;27955:30::-;;;;;;;;;;;;;;;;30011:44;;;;;;;;;;-1:-1:-1;30011:44:0;;;;-1:-1:-1;;;;;30011:44:0;;;29370:57;;;;;;;;;;-1:-1:-1;29370:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;35422:899;;;;;;;;;;-1:-1:-1;35422:899:0;;;;;:::i;:::-;;:::i;28026:32::-;;;;;;;;;;;;;;;;27491:30;;;;;;;;;;-1:-1:-1;27491:30:0;;;;-1:-1:-1;;;;;27491:30:0;;;47330:711;;;;;;;;;;-1:-1:-1;47330:711:0;;;;;:::i;:::-;;:::i;29080:32::-;;;;;;;;;;-1:-1:-1;29080:32:0;;;;;;;;;;;28371:35;;;;;;;;;;;;;;;;29433:63;;;;;;;;;;-1:-1:-1;29433:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;52645:152;;;;;;;;;;-1:-1:-1;52645:152:0;;;;;:::i;:::-;;:::i;28989:18::-;;;;;;;;;;-1:-1:-1;28989:18:0;;;;;;;;10973:149;;;;;;;;;;-1:-1:-1;10973:149:0;;;;;:::i;:::-;;:::i;28308:35::-;;;;;;;;;;;;;;;;52337:148;;;;;;;;;;-1:-1:-1;52337:148:0;;;;;:::i;:::-;;:::i;28537:31::-;;;;;;;;;;;;;;;;38084:118;;;;;;;;;;-1:-1:-1;38084:118:0;;;;;:::i;:::-;;:::i;2949:198::-;;;;;;;;;;-1:-1:-1;2949:198:0;;;;;:::i;:::-;;:::i;27418:37::-;;;;;;;;;;-1:-1:-1;27418:37:0;;;;;:::i;:::-;;:::i;29973:32::-;;;;;;;;;;-1:-1:-1;29973:32:0;;;;-1:-1:-1;;;;;29973:32:0;;;29048:26;;;;;;;;;;-1:-1:-1;29048:26:0;;;;;;;;;;;9144:98;9198:13;9230:5;9223:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9144:98;:::o;11430:197::-;11513:4;726:10;11567:32;726:10;11583:7;11592:6;11567:8;:32::i;:::-;11616:4;11609:11;;;11430:197;;;;;:::o;38247:291::-;1969:13;:11;:13::i;:::-;27906:5:::1;38379:26;;38356:20;;38343:10;:33;;;;;;:::i;:::-;:62;;;;:::i;:::-;:93;;38322:172;;;;-1:-1:-1::0;;;38322:172:0::1;;;;;;;:::i;:::-;;;;;;;;;38504:27;;:14;:27:::0;38247:291::o;28266:36::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28266:36:0;:::o;36587:231::-;1969:13;:11;:13::i;:::-;36697:11:::1;36685:8;:23;;36664:110;;;::::0;-1:-1:-1;;;36664:110:0;;6575:2:1;36664:110:0::1;::::0;::::1;6557:21:1::0;6614:2;6594:18;;;6587:30;6653:34;6633:18;;;6626:62;-1:-1:-1;;;6704:18:1;;;6697:38;6752:19;;36664:110:0::1;6373:404:1::0;36664:110:0::1;36784:16;:27:::0;36587:231::o;53063:154::-;1969:13;:11;:13::i;:::-;27906:5:::1;53188:7;53172:13;10328:12:::0;;;10241:106;53172:13:::1;:23;;;;:::i;:::-;53171:39;;;;:::i;:::-;53148:20;:62:::0;-1:-1:-1;53063:154:0:o;12189:256::-;12286:4;726:10;12342:38;12358:4;726:10;12373:6;12342:15;:38::i;:::-;12390:27;12400:4;12406:2;12410:6;12390:9;:27::i;:::-;-1:-1:-1;12434:4:0;;12189:256;-1:-1:-1;;;;12189:256:0:o;52913:144::-;1969:13;:11;:13::i;:::-;27906:5:::1;53028:7;53012:13;10328:12:::0;;;10241:106;53012:13:::1;:23;;;;:::i;:::-;53011:39;;;;:::i;:::-;52993:15;:57:::0;-1:-1:-1;52913:144:0:o;37715:322::-;1969:13;:11;:13::i;:::-;37869:4:::1;37859:6;:14;;;;:33;;;;;37888:4;37877:7;:15;;;;37859:33;37851:59;;;::::0;-1:-1:-1;;;37851:59:0;;7379:2:1;37851:59:0::1;::::0;::::1;7361:21:1::0;7418:2;7398:18;;;7391:30;-1:-1:-1;;;7437:18:1;;;7430:43;7490:18;;37851:59:0::1;7177:337:1::0;37851:59:0::1;37920:10;:26:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;37956:28:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;37994:36:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;37715:322::o;12840:234::-;12928:4;726:10;12982:64;726:10;12998:7;13035:10;13007:25;726:10;12998:7;13007:9;:25::i;:::-;:38;;;;:::i;:::-;12982:8;:64::i;20427:89::-;20482:27;726:10;20502:6;20482:5;:27::i;:::-;20427:89;:::o;38892:301::-;1969:13;:11;:13::i;:::-;27906:5:::1;39044:20;;39027:14;;39014:10;:27;;;;;;:::i;:::-;:50;;;;:::i;:::-;:65;;38993:144;;;;-1:-1:-1::0;;;38993:144:0::1;;;;;;;:::i;:::-;39147:39;;:26;:39:::0;38892:301::o;35051:365::-;1969:13;:11;:13::i;:::-;35189:26:::1;::::0;-1:-1:-1;;;;;35189:26:0;;::::1;35175:40:::0;;::::1;::::0;35154:132:::1;;;::::0;-1:-1:-1;;;35154:132:0;;7721:2:1;35154:132:0::1;::::0;::::1;7703:21:1::0;7760:2;7740:18;;;7733:30;7799:34;7779:18;;;7772:62;-1:-1:-1;;;7850:18:1;;;7843:43;7903:19;;35154:132:0::1;7519:409:1::0;35154:132:0::1;-1:-1:-1::0;;;;;35304:24:0;::::1;35296:64;;;::::0;-1:-1:-1;;;35296:64:0;;8135:2:1;35296:64:0::1;::::0;::::1;8117:21:1::0;8174:2;8154:18;;;8147:30;8213:29;8193:18;;;8186:57;8260:18;;35296:64:0::1;7933:351:1::0;35296:64:0::1;35370:26;:39:::0;;-1:-1:-1;;;;;;35370:39:0::1;-1:-1:-1::0;;;;;35370:39:0;;;::::1;::::0;;;::::1;::::0;;35051:365::o;10405:125::-;-1:-1:-1;;;;;10505:18:0;10479:7;10505:18;;;;;;;;;;;;10405:125::o;53223:260::-;1969:13;:11;:13::i;:::-;53317:10:::1;:17:::0;53337:4:::1;53317:17;::::0;;::::1;:24;:53:::0;::::1;;;-1:-1:-1::0;53345:10:0::1;:18:::0;53366:4:::1;53345:18:::0;;;::::1;;;:25;53317:53;53296:140;;;::::0;-1:-1:-1;;;53296:140:0;;8491:2:1;53296:140:0::1;::::0;::::1;8473:21:1::0;8530:2;8510:18;;;8503:30;8569:34;8549:18;;;8542:62;-1:-1:-1;;;8620:18:1;;;8613:38;8668:19;;53296:140:0::1;8289:404:1::0;53296:140:0::1;53446:30;53473:1;53446:18;:30::i;:::-;53223:260::o:0;38589:297::-;1969:13;:11;:13::i;:::-;27906:5:::1;38721:26;;38704:14;;38691:10;:27;;;;;;:::i;:::-;:56;;;;:::i;:::-;:87;;38670:166;;;;-1:-1:-1::0;;;38670:166:0::1;;;;;;;:::i;:::-;38846:33;;:20;:33:::0;38589:297::o;20822:161::-;20898:46;20914:7;726:10;20937:6;20898:15;:46::i;:::-;20954:22;20960:7;20969:6;20954:5;:22::i;:::-;20822:161;;:::o;37239:131::-;1969:13;:11;:13::i;:::-;27906:5:::1;37341:7;37325:13;10328:12:::0;;;10241:106;37325:13:::1;:23;;;;:::i;:::-;37324:39;;;;:::i;:::-;37310:11;:53:::0;-1:-1:-1;37239:131:0:o;37507:100::-;1969:13;:11;:13::i;:::-;37577:14:::1;:23:::0;;;::::1;;;;-1:-1:-1::0;;37577:23:0;;::::1;::::0;;;::::1;::::0;;37507:100::o;9355:102::-;9411:13;9443:7;9436:14;;;;;:::i;52803:104::-;1969:13;:11;:13::i;:::-;52879::::1;:21:::0;52803:104::o;36975:114::-;1969:13;:11;:13::i;:::-;37053:20:::1;:29:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;37053:29:0;;::::1;::::0;;;::::1;::::0;;36975:114::o;13561:427::-;13654:4;726:10;13654:4;13735:25;726:10;13752:7;13735:9;:25::i;:::-;13708:52;;13798:15;13778:16;:35;;13770:85;;;;-1:-1:-1;;;13770:85:0;;8900:2:1;13770:85:0;;;8882:21:1;8939:2;8919:18;;;8912:30;8978:34;8958:18;;;8951:62;-1:-1:-1;;;9029:18:1;;;9022:35;9074:19;;13770:85:0;8698:401:1;13770:85:0;13889:60;13898:5;13905:7;13933:15;13914:16;:34;13889:8;:60::i;10726:189::-;10805:4;726:10;10859:28;726:10;10876:2;10880:6;10859:9;:28::i;35422:899::-;1969:13;:11;:13::i;:::-;-1:-1:-1;;;;;35525:24:0;::::1;35517:64;;;::::0;-1:-1:-1;;;35517:64:0;;8135:2:1;35517:64:0::1;::::0;::::1;8117:21:1::0;8174:2;8154:18;;;8147:30;8213:29;8193:18;;;8186:57;8260:18;;35517:64:0::1;7933:351:1::0;35517:64:0::1;35610:4;35599:7;:15;;35591:43;;;::::0;-1:-1:-1;;;35591:43:0;;9306:2:1;35591:43:0::1;::::0;::::1;9288:21:1::0;9345:2;9325:18;;;9318:30;-1:-1:-1;;;9364:18:1;;;9357:45;9419:18;;35591:43:0::1;9104:339:1::0;35591:43:0::1;35690:20;:51:::0;;-1:-1:-1;;;;;;35690:51:0::1;-1:-1:-1::0;;;;;35690:51:0;::::1;::::0;;::::1;::::0;;;35796:53:::1;::::0;-1:-1:-1;;;35796:53:0;;::::1;::::0;::::1;3686:51:1::0;;;35796:41:0::1;::::0;3659:18:1;;35796:53:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;35859:20:0::1;::::0;:56:::1;::::0;-1:-1:-1;;;35859:56:0;;35909:4:::1;35859:56;::::0;::::1;3686:51:1::0;-1:-1:-1;;;;;35859:20:0;;::::1;::::0;-1:-1:-1;35859:41:0::1;::::0;-1:-1:-1;3659:18:1;;35859:56:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;35925:20:0::1;::::0;-1:-1:-1;;;;;35925:20:0::1;::::0;-1:-1:-1;35925:41:0::1;::::0;-1:-1:-1;35967:7:0::1;2148:6:::0;;-1:-1:-1;;;;;2148:6:0;;2076:85;35967:7:::1;35925:50;::::0;-1:-1:-1;;;;;;35925:50:0::1;::::0;;;;;;-1:-1:-1;;;;;3704:32:1;;;35925:50:0::1;::::0;::::1;3686:51:1::0;3659:18;;35925:50:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;35985:20:0::1;::::0;36035:6:::1;::::0;35985:58:::1;::::0;-1:-1:-1;;;35985:58:0;;-1:-1:-1;;;;;36035:6:0;;::::1;35985:58;::::0;::::1;3686:51:1::0;35985:20:0;::::1;::::0;-1:-1:-1;35985:41:0::1;::::0;-1:-1:-1;3659:18:1;;35985:58:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;36053:20:0::1;::::0;36095:6:::1;::::0;36053:49:::1;::::0;-1:-1:-1;;;36053:49:0;;-1:-1:-1;;;;;36095:6:0;;::::1;36053:49;::::0;::::1;3686:51:1::0;36053:20:0;::::1;::::0;-1:-1:-1;36053:41:0::1;::::0;-1:-1:-1;3659:18:1;;36053:49:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;;;;;;36113:30:0;;::::1;;::::0;;;:18:::1;:30;::::0;;;;;;;:37;;-1:-1:-1;;36113:37:0;;::::1;36146:4;36113:37:::0;;::::1;::::0;;;36160:20:::1;:32:::0;;;;;;:39;;;;::::1;;::::0;;;36210:26:::1;:36:::0;;;36279:20:::1;::::0;:35;;-1:-1:-1;;;36279:35:0;;;;:20;::::1;::::0;-1:-1:-1;36279:33:0::1;::::0;:35:::1;::::0;;::::1;::::0;;;;;;:20;:35:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36256:20;:58:::0;;-1:-1:-1;;;;;;36256:58:0::1;-1:-1:-1::0;;;;;36256:58:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;35422:899:0:o;47330:711::-;47441:12;47456:15;47470:1;47456:11;:15;:::i;:::-;47441:30;-1:-1:-1;47768:21:0;47800:40;47441:30;47834:4;47800:19;:40::i;:::-;47898:18;47919:38;47943:14;47919:21;:38;:::i;:::-;47898:59;;48004:30;48017:4;48023:10;48004:12;:30::i;:::-;47381:660;;;47330:711;:::o;52645:152::-;1969:13;:11;:13::i;:::-;-1:-1:-1;;;;;52755:29:0;;;::::1;;::::0;;;:20:::1;:29;::::0;;;;:35;;-1:-1:-1;;52755:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;52645:152::o;10973:149::-;-1:-1:-1;;;;;11088:18:0;;;11062:7;11088:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10973:149::o;52337:148::-;1969:13;:11;:13::i;:::-;-1:-1:-1;;;;;52445:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:33;;-1:-1:-1;;52445:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;52337:148::o;38084:118::-;1969:13;:11;:13::i;:::-;38164:16:::1;:31:::0;38084:118::o;2949:198::-;1969:13;:11;:13::i;:::-;-1:-1:-1;;;;;3037:22:0;::::1;3029:73;;;::::0;-1:-1:-1;;;3029:73:0;;10039:2:1;3029:73:0::1;::::0;::::1;10021:21:1::0;10078:2;10058:18;;;10051:30;10117:34;10097:18;;;10090:62;-1:-1:-1;;;10168:18:1;;;10161:36;10214:19;;3029:73:0::1;9837:402:1::0;3029:73:0::1;3112:28;3131:8;3112:18;:28::i;27418:37::-:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27418:37:0;;-1:-1:-1;27418:37:0;:::o;17443:340::-;-1:-1:-1;;;;;17544:19:0;;17536:68;;;;-1:-1:-1;;;17536:68:0;;10446:2:1;17536:68:0;;;10428:21:1;10485:2;10465:18;;;10458:30;10524:34;10504:18;;;10497:62;-1:-1:-1;;;10575:18:1;;;10568:34;10619:19;;17536:68:0;10244:400:1;17536:68:0;-1:-1:-1;;;;;17622:21:0;;17614:68;;;;-1:-1:-1;;;17614:68:0;;10851:2:1;17614:68:0;;;10833:21:1;10890:2;10870:18;;;10863:30;10929:34;10909:18;;;10902:62;-1:-1:-1;;;10980:18:1;;;10973:32;11022:19;;17614:68:0;10649:398:1;17614:68:0;-1:-1:-1;;;;;17693:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17744:32;;160:25:1;;;17744:32:0;;133:18:1;17744:32:0;;;;;;;17443:340;;;:::o;2234:130::-;2148:6;;-1:-1:-1;;;;;2148:6:0;726:10;2297:23;2289:68;;;;-1:-1:-1;;;2289:68:0;;11254:2:1;2289:68:0;;;11236:21:1;;;11273:18;;;11266:30;11332:34;11312:18;;;11305:62;11384:18;;2289:68:0;11052:356:1;18064:411:0;18164:24;18191:25;18201:5;18208:7;18191:9;:25::i;:::-;18164:52;;-1:-1:-1;;18230:16:0;:37;18226:243;;18311:6;18291:16;:26;;18283:68;;;;-1:-1:-1;;;18283:68:0;;11615:2:1;18283:68:0;;;11597:21:1;11654:2;11634:18;;;11627:30;11693:31;11673:18;;;11666:59;11742:18;;18283:68:0;11413:353:1;18283:68:0;18393:51;18402:5;18409:7;18437:6;18418:16;:25;18393:8;:51::i;39263:799::-;39390:38;39411:4;39417:2;39421:6;39390:20;:38::i;:::-;39443:6;;;;39439:90;;;39465:33;39481:4;39487:2;39491:6;39465:15;:33::i;:::-;39263:799;;;:::o;39439:90::-;39543:26;39560:4;39566:2;39543:16;:26::i;:::-;39539:65;;;39585:8;:6;:8::i;:::-;39614:35;39632:4;39638:2;39642:6;39614:17;:35::i;:::-;39672:20;;-1:-1:-1;;;;;39672:20:0;39664:43;39660:396;;39743:20;;-1:-1:-1;;;;;39743:20:0;:31;39783:4;39790:15;39783:4;39790:9;:15::i;:::-;39743:63;;-1:-1:-1;;;;;;39743:63:0;;;;;;;-1:-1:-1;;;;;11979:32:1;;;39743:63:0;;;11961:51:1;12028:18;;;12021:34;11934:18;;39743:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39723:107;39863:20;;-1:-1:-1;;;;;39863:20:0;:31;39903:2;39908:13;39903:2;39908:9;:13::i;:::-;39863:59;;-1:-1:-1;;;;;;39863:59:0;;;;;;;-1:-1:-1;;;;;11979:32:1;;;39863:59:0;;;11961:51:1;12028:18;;;12021:34;11934:18;;39863:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39843:103;39965:6;;;;39960:86;;39991:40;40014:16;;39991:22;:40::i;16361:659::-;-1:-1:-1;;;;;16444:21:0;;16436:67;;;;-1:-1:-1;;;16436:67:0;;12268:2:1;16436:67:0;;;12250:21:1;12307:2;12287:18;;;12280:30;12346:34;12326:18;;;12319:62;-1:-1:-1;;;12397:18:1;;;12390:31;12438:19;;16436:67:0;12066:397:1;16436:67:0;-1:-1:-1;;;;;16599:18:0;;16574:22;16599:18;;;;;;;;;;;16635:24;;;;16627:71;;;;-1:-1:-1;;;16627:71:0;;12670:2:1;16627:71:0;;;12652:21:1;12709:2;12689:18;;;12682:30;12748:34;12728:18;;;12721:62;-1:-1:-1;;;12799:18:1;;;12792:32;12841:19;;16627:71:0;12468:398:1;16627:71:0;-1:-1:-1;;;;;16732:18:0;;:9;:18;;;;;;;;;;;16753:23;;;16732:44;;16869:12;:22;;;;;;;16917:37;160:25:1;;;16732:9:0;;:18;16917:37;;133:18:1;16917:37:0;;;;;;;39263:799;;;:::o;3301:187::-;3393:6;;;-1:-1:-1;;;;;3409:17:0;;;-1:-1:-1;;;;;;3409:17:0;;;;;;;3441:40;;3393:6;;;3409:17;3393:6;;3441:40;;3374:16;;3441:40;3364:124;3301:187;:::o;44573:473::-;44677:16;;;44691:1;44677:16;;;;;;;;44653:21;;44677:16;;;;;;;;;;-1:-1:-1;44677:16:0;44653:40;;44721:4;44703;44708:1;44703:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;44703:23:0;;;:7;;;;;;;;;;:23;;;;44746:6;;:13;;;-1:-1:-1;;;44746:13:0;;;;:6;;;;;:11;;:13;;;;;44703:7;;44746:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44736:4;44741:1;44736:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;44736:23:0;;;:7;;;;;;;;;;:23;;;;44845:6;44788:15;;44813:53;;44830:4;;44845:6;44854:11;44813:8;:53::i;:::-;44876:6;;:163;;-1:-1:-1;;;44876:163:0;;-1:-1:-1;;;;;44876:6:0;;;;:57;;:163;;44947:11;;44876:6;;44987:4;;45005:2;;45021:8;;44876:163;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44643:403;;44573:473;;:::o;48047:462::-;48203:6;;48146:15;;48171:59;;48188:4;;-1:-1:-1;;;;;48203:6:0;-1:-1:-1;;48171:8:0;:59::i;:::-;48240:6;;:262;;-1:-1:-1;;;48240:262:0;;48302:4;48240:262;;;14529:34:1;;;14579:18;;;14572:34;;;48240:6:0;14622:18:1;;;14615:34;;;14665:18;;;14658:34;14708:19;;;14701:44;14761:19;;;14754:35;;;-1:-1:-1;;;;;48240:6:0;;;;:22;;48270:9;;14463:19:1;;48240:262:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;48117:392;48047:462;;:::o;48515:3241::-;-1:-1:-1;;;;;48665:18:0;;48644:110;;;;-1:-1:-1;;;48644:110:0;;15313:2:1;48644:110:0;;;15295:21:1;15352:2;15332:18;;;15325:30;15391:34;15371:18;;;15364:62;-1:-1:-1;;;15442:18:1;;;15435:43;15495:19;;48644:110:0;15111:409:1;48644:110:0;-1:-1:-1;;;;;48785:16:0;;48764:106;;;;-1:-1:-1;;;48764:106:0;;15727:2:1;48764:106:0;;;15709:21:1;15766:2;15746:18;;;15739:30;15805:34;15785:18;;;15778:62;-1:-1:-1;;;15856:18:1;;;15849:41;15907:19;;48764:106:0;15525:407:1;48764:106:0;48910:1;48901:6;:10;48880:106;;;;-1:-1:-1;;;48880:106:0;;16139:2:1;48880:106:0;;;16121:21:1;16178:2;16158:18;;;16151:30;16217:34;16197:18;;;16190:62;-1:-1:-1;;;16268:18:1;;;16261:47;16325:19;;48880:106:0;15937:413:1;48880:106:0;49014:20;;;;;;;:89;;;;;49088:14;;49069:16;;:33;;;;:::i;:::-;49050:15;:53;49014:89;48997:1354;;;2148:6;;-1:-1:-1;;;;;49276:15:0;;;2148:6;;49276:15;;;;:56;;-1:-1:-1;49325:6:0;;-1:-1:-1;;;;;49311:21:0;;;49325:6;;49311:21;;49276:56;:97;;;;-1:-1:-1;49366:6:0;;-1:-1:-1;;;;;49352:21:0;;;49366:6;;49352:21;;49276:97;:136;;;;-1:-1:-1;;;;;;49393:19:0;;49407:4;49393:19;;49276:136;49255:1086;;;49575:11;;:15;49571:110;;49632:11;;49622:6;:21;;49614:48;;;;-1:-1:-1;;;49614:48:0;;16557:2:1;49614:48:0;;;16539:21:1;16596:2;16576:18;;;16569:30;-1:-1:-1;;;16615:18:1;;;16608:44;16669:18;;49614:48:0;16355:338:1;49614:48:0;49775:14;;;;;;;49771:199;;;49861:16;;49846:11;:31;;49813:138;;;;-1:-1:-1;;;49813:138:0;;16900:2:1;49813:138:0;;;16882:21:1;16939:2;16919:18;;;16912:30;16978:26;16958:18;;;16951:54;17022:18;;49813:138:0;16698:348:1;49813:138:0;50082:10;50053:40;;;;:28;:40;;;;;;50097:15;-1:-1:-1;50053:59:0;50024:165;;;;-1:-1:-1;;;50024:165:0;;17253:2:1;50024:165:0;;;17235:21:1;17292:2;17272:18;;;17265:30;17331:34;17311:18;;;17304:62;-1:-1:-1;;;17382:18:1;;;17375:33;17425:19;;50024:165:0;17051:399:1;50024:165:0;50308:18;;50270:56;;:15;:56;:::i;:::-;50236:10;50207:40;;;;:28;:40;;;;;:119;49255:1086;2148:6;;-1:-1:-1;;;;;50378:15:0;;;2148:6;;50378:15;;;;:44;;-1:-1:-1;2148:6:0;;-1:-1:-1;;;;;50409:13:0;;;2148:6;;50409:13;;50378:44;:76;;;;-1:-1:-1;;;;;;50438:16:0;;;;50378:76;:113;;;;-1:-1:-1;;;;;;50470:21:0;;50484:6;50470:21;;50378:113;:148;;;;-1:-1:-1;;;;;;50507:19:0;;50521:4;50507:19;;50378:148;:171;;;;-1:-1:-1;50543:6:0;;;;50542:7;50378:171;50361:1389;;;-1:-1:-1;;;;;50619:31:0;;;;;;:25;:31;;;;;;;;50615:1125;;;-1:-1:-1;;;;;50675:24:0;;;;;;:20;:24;;;;;;;;50670:403;;50766:20;;50756:6;:30;;50723:166;;;;-1:-1:-1;;;50723:166:0;;17657:2:1;50723:166:0;;;17639:21:1;17696:2;17676:18;;;17669:30;17735:34;17715:18;;;17708:62;-1:-1:-1;;;17786:18:1;;;17779:51;17847:19;;50723:166:0;17455:417:1;50723:166:0;50970:15;;50953:13;50963:2;50953:9;:13::i;:::-;50944:22;;:6;:22;:::i;:::-;:41;;50911:143;;;;-1:-1:-1;;;50911:143:0;;18079:2:1;50911:143:0;;;18061:21:1;18118:2;18098:18;;;18091:30;-1:-1:-1;;;18137:18:1;;;18130:49;18196:18;;50911:143:0;17877:343:1;50615:1125:0;-1:-1:-1;;;;;51149:29:0;;;;;;:25;:29;;;;;;;;51145:595;;;-1:-1:-1;;;;;51203:24:0;;;;;;:20;:24;;;;;;;;51198:239;;51294:20;;51284:6;:30;;51251:167;;;;-1:-1:-1;;;51251:167:0;;18427:2:1;51251:167:0;;;18409:21:1;18466:2;18446:18;;;18439:30;18505:34;18485:18;;;18478:62;-1:-1:-1;;;18556:18:1;;;18549:52;18618:19;;51251:167:0;18225:418:1;51145:595:0;-1:-1:-1;;;;;51516:24:0;;;;;;:20;:24;;;;;;;;51511:215;;51623:15;;51606:13;51616:2;51606:9;:13::i;14442:788::-;-1:-1:-1;;;;;14538:18:0;;14530:68;;;;-1:-1:-1;;;14530:68:0;;18850:2:1;14530:68:0;;;18832:21:1;18889:2;18869:18;;;18862:30;18928:34;18908:18;;;18901:62;-1:-1:-1;;;18979:18:1;;;18972:35;19024:19;;14530:68:0;18648:401:1;14530:68:0;-1:-1:-1;;;;;14616:16:0;;14608:64;;;;-1:-1:-1;;;14608:64:0;;19256:2:1;14608:64:0;;;19238:21:1;19295:2;19275:18;;;19268:30;19334:34;19314:18;;;19307:62;-1:-1:-1;;;19385:18:1;;;19378:33;19428:19;;14608:64:0;19054:399:1;14608:64:0;-1:-1:-1;;;;;14754:15:0;;14732:19;14754:15;;;;;;;;;;;14787:21;;;;14779:72;;;;-1:-1:-1;;;14779:72:0;;19660:2:1;14779:72:0;;;19642:21:1;19699:2;19679:18;;;19672:30;19738:34;19718:18;;;19711:62;-1:-1:-1;;;19789:18:1;;;19782:36;19835:19;;14779:72:0;19458:402:1;14779:72:0;-1:-1:-1;;;;;14885:15:0;;;:9;:15;;;;;;;;;;;14903:20;;;14885:38;;15100:13;;;;;;;;;;:23;;;;;;15149:26;;160:25:1;;;15100:13:0;;15149:26;;133:18:1;15149:26:0;;;;;;;15186:37;39263:799;51762:419;51867:4;51883:28;51914:24;51932:4;51914:9;:24::i;:::-;51883:55;;51991:13;;51967:20;:37;;:60;;;;-1:-1:-1;52021:6:0;;;;52020:7;51967:60;:90;;;;-1:-1:-1;52051:6:0;;-1:-1:-1;;;;;52043:14:0;;;52051:6;;52043:14;;51967:90;:127;;;;-1:-1:-1;52083:6:0;;52093:1;;52073:17;;-1:-1:-1;;;;;52083:6:0;52073:9;:17::i;:::-;:21;51967:127;:166;;;;-1:-1:-1;;;;;;52111:22:0;;;;;;:18;:22;;;;;;;;52110:23;51967:166;:207;;;;-1:-1:-1;;;;;;52150:24:0;;;;;;:18;:24;;;;;;;;52149:25;51967:207;51948:226;51762:419;-1:-1:-1;;;;51762:419:0:o;40550:2185::-;30244:6;:13;;-1:-1:-1;;30244:13:0;30253:4;30244:13;;;:6;40661:24:::1;40679:4;40661:9;:24::i;:::-;40724:17;::::0;40635:50;;-1:-1:-1;40724:21:0;40720:557:::1;;40779:17;::::0;40810:36:::1;40779:17:::0;40810:36;::::1;:::i;:::-;40880:1;40860:17;:21:::0;40951:20:::1;:27:::0;40810:36;;-1:-1:-1;40913:7:0;;40934:333:::1;40980:5:::0;;40934:333:::1;;41010:12;41025:1;41030;41025:6;:111;;27906:5;41095:19;41115:5;41119:1;41115::::0;:5:::1;:::i;:::-;41095:26;;;;;;;;:::i;:::-;;;;;;;;;41085:7;:36;;;;:::i;:::-;41084:52;;;;:::i;:::-;41025:111;;;41054:7;41025:111;41010:126:::0;-1:-1:-1;41154:54:0::1;41010:126:::0;41180:20:::1;41201:5;41205:1;41201::::0;:5:::1;:::i;:::-;41180:27;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;41180:27:0::1;41154:19;:54::i;:::-;41234:1;41230;:5;41226:26;;;41237:15;41248:4:::0;41237:15;::::1;:::i;:::-;;;41226:26;-1:-1:-1::0;40987:3:0;::::1;::::0;::::1;:::i;:::-;;;;40934:333;;;;40747:530;;40720:557;41305:24;41323:4;41305:9;:24::i;:::-;41287:42:::0;-1:-1:-1;41343:19:0;;41339:1390:::1;;41414:14;::::0;:18;41410:199:::1;;41452:142;27906:5;41512:14;;41494:15;:32;;;;:::i;:::-;41493:48;;;;:::i;:::-;41571:4;41452:19;:142::i;:::-;41659:20;::::0;:24;41655:170:::1;;41703:107;27906:5;41757:20;;41739:15;:38;;;;:::i;:::-;41738:54;;;;:::i;41703:107::-;41867:22;27906:5;42054:26;;42013:14;;41966:20;;:61;;;;:::i;:::-;:114;;;;:::i;:::-;41927:154;::::0;:15;:154:::1;:::i;:::-;41926:186;;;;:::i;:::-;41892:220;::::0;:15;:220:::1;:::i;:::-;41867:245:::0;-1:-1:-1;42130:18:0;;42126:109:::1;;42204:15;::::0;42168:52:::1;::::0;42188:14;;-1:-1:-1;;;;;42204:15:0::1;42168:19;:52::i;:::-;42277:16;::::0;:20;42273:243:::1;;42395:16;::::0;42338:21:::1;::::0;42382:29;::::1;42378:124;;;42435:48;42455:10;42475:6;42435:19;:48::i;:::-;42299:217;42273:243;42534:26;::::0;:30;42530:189:::1;;42584:120;27906:5;42645:26;;42627:15;:44;;;;:::i;:::-;42626:60;;;;:::i;:::-;42584:20;:120::i;:::-;41364:1365;41339:1390;-1:-1:-1::0;30278:6:0;:14;;-1:-1:-1;;30278:14:0;;;40550:2185::o;45052:1218::-;-1:-1:-1;;;;;45361:24:0;;45239:22;45361:24;;;:18;:24;;;;;;45264:6;;45343:4;;45361:24;;;:50;;-1:-1:-1;;;;;;45389:22:0;;;;;;:18;:22;;;;;;;;45361:50;45357:96;;;-1:-1:-1;45437:5:0;45357:96;45511:7;45507:651;;;45612:18;45632;45654:102;45694:4;45716:2;45736:6;45654:22;:102::i;:::-;45611:145;;-1:-1:-1;45611:145:0;-1:-1:-1;45801:1:0;45775:23;45611:145;;45775:23;:::i;:::-;:27;45771:377;;;45926:10;45904:19;45913:10;45904:6;:19;:::i;:::-;:32;;;;:::i;:::-;45887:49;-1:-1:-1;45958:14:0;;45954:51;;45995:10;45974:17;;:31;;;;;;;:::i;:::-;;;;-1:-1:-1;;45954:51:0;46072:61;46088:4;46102;46109:23;46122:10;46109;:23;:::i;:::-;46072:15;:61::i;:::-;45520:638;;45507:651;46222:41;46238:4;46244:2;46248:14;46222:15;:41::i;:::-;45168:1102;;45052:1218;;;:::o;40068:476::-;40150:20;;:33;;-1:-1:-1;;;;;;40150:33:0;;;;;160:25:1;;;-1:-1:-1;;;;;40150:20:0;;;;:28;;133:18:1;;40150:33:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;40150:33:0;;;;;;;;-1:-1:-1;;40150:33:0;;;;;;;;;;;;:::i;:::-;;;40146:392;;;40322:196;;;20237:25:1;;;20293:2;20278:18;;20271:34;;;20321:18;;;20314:34;;;20379:2;20364:18;;20357:34;;;40495:9:0;;40452:4;;40322:196;;20224:3:1;20209:19;40322:196:0;;;;;;;40184:345;;;40068:476;:::o;42741:499::-;42846:16;;;42860:1;42846:16;;;;;;;;42822:21;;42846:16;;;;;;;;-1:-1:-1;;42882:6:0;;;:13;;;-1:-1:-1;;;42882:13:0;;;;42822:40;;-1:-1:-1;;;;;;42882:6:0;;;;:11;;-1:-1:-1;42882:13:0;;;;;:6;:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42872:4;42877:1;42872:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;42872:23:0;;;-1:-1:-1;;;;;42872:23:0;;;;;42923:4;42905;42910:1;42905:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;42905:23:0;;;:7;;;;;;;;;;:23;;;;43103:6;:130;;-1:-1:-1;;;43103:130:0;;42957:15;;43103:6;;;;;:28;;43139:12;;43103:130;;42938:16;;43181:4;;43199:2;;42957:15;;43103:130;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;43103:130:0;;;;;;;;;;;;:::i;43885:682::-;44028:20;;43954:208;;43995:4;;-1:-1:-1;;;;;44028:20:0;44084:11;43995:4;43954:19;:208::i;:::-;44199:20;;44192:75;;-1:-1:-1;;;44192:75:0;;44252:4;44192:75;;;3686:51:1;44172:17:0;;-1:-1:-1;;;;;44199:20:0;;44192:38;;3659:18:1;;44192:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44299:20;;44351;;44292:113;;-1:-1:-1;;;44292:113:0;;-1:-1:-1;;;;;44351:20:0;;;44292:113;;;11961:51:1;12028:18;;;12021:34;;;44172:95:0;;-1:-1:-1;44277:12:0;;44299:20;;;44292:37;;11934:18:1;;44292:113:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44277:128;;44420:7;44416:145;;;44443:20;;:51;;-1:-1:-1;;;44443:51:0;;;;;160:25:1;;;-1:-1:-1;;;;;44443:20:0;;;;:40;;133:18:1;;44443:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;44513:37:0;;;22919:25:1;;;22975:2;22960:18;;22953:34;;;44513:37:0;;-1:-1:-1;22892:18:1;;-1:-1:-1;44513:37:0;;;;;;;43944:623;;43885:682;:::o;46276:1048::-;-1:-1:-1;;;;;46654:31:0;;46411:7;46654:31;;;:25;:31;;;;;;46411:7;;;;;;;;;;46654:31;;46650:376;;;46720:10;:17;46701:36;;46720:17;;46701:36;;:::i;:::-;;;46650:376;;;-1:-1:-1;;;;;46802:29:0;;;;;;:25;:29;;;;;;;;46798:228;;;46866:10;:18;46847:37;;46866:18;;;;;46847:37;;:::i;46798:228::-;46962:10;:22;46943:41;;46962:22;;;;;46943:41;;:::i;:::-;;;47011:4;46998:17;;46798:228;47067:19;;47063:103;;27906:5;47116:24;47125:15;47116:6;:24;:::i;:::-;47115:40;;;;:::i;:::-;47102:53;;47063:103;47181:10;47176:100;;27906:5;47221:29;28214:2;47221:6;:29;:::i;:::-;47220:45;;;;:::i;:::-;47207:58;;47176:100;-1:-1:-1;47294:10:0;;;;-1:-1:-1;46276:1048:0;-1:-1:-1;;;;;46276:1048:0:o;43246:633::-;43441:16;;;43455:1;43441:16;;;;;;;;;43417:21;;43441:16;;;;;;;;;;-1:-1:-1;43441:16:0;43417:40;;43477:17;43467:4;43472:1;43467:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;43467:27:0;;;:7;;;;;;;;;:27;43514:26;;43504:7;;43514:26;;;43504:4;;43514:26;;43504:7;;;;;;:::i;:::-;;;;;;:36;-1:-1:-1;;;;;43504:36:0;;;-1:-1:-1;;;;;43504:36:0;;;;;43560:15;43550:4;43555:1;43550:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;43550:25:0;;;:7;;;;;;;;;;:25;;;;43618:6;43586:53;;43603:4;;43618:6;43627:11;43586:8;:53::i;:::-;43691:6;;-1:-1:-1;;;;;43691:6:0;:60;43765:11;43691:6;43805:4;43823:3;43840:22;:15;43858:4;43840:22;:::i;:::-;43691:181;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43407:472;43246:633;;;;:::o;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:247;944:6;997:2;985:9;976:7;972:23;968:32;965:52;;;1013:1;1010;1003:12;965:52;1052:9;1039:23;1071:31;1096:5;1071:31;:::i;:::-;1121:5;885:247;-1:-1:-1;;;885:247:1:o;1329:315::-;1397:6;1405;1458:2;1446:9;1437:7;1433:23;1429:32;1426:52;;;1474:1;1471;1464:12;1426:52;1513:9;1500:23;1532:31;1557:5;1532:31;:::i;:::-;1582:5;1634:2;1619:18;;;;1606:32;;-1:-1:-1;;;1329:315:1:o;1649:159::-;1716:20;;1776:6;1765:18;;1755:29;;1745:57;;1798:1;1795;1788:12;1745:57;1649:159;;;:::o;1813:184::-;1871:6;1924:2;1912:9;1903:7;1899:23;1895:32;1892:52;;;1940:1;1937;1930:12;1892:52;1963:28;1981:9;1963:28;:::i;2002:180::-;2061:6;2114:2;2102:9;2093:7;2089:23;2085:32;2082:52;;;2130:1;2127;2120:12;2082:52;-1:-1:-1;2153:23:1;;2002:180;-1:-1:-1;2002:180:1:o;2557:456::-;2634:6;2642;2650;2703:2;2691:9;2682:7;2678:23;2674:32;2671:52;;;2719:1;2716;2709:12;2671:52;2758:9;2745:23;2777:31;2802:5;2777:31;:::i;:::-;2827:5;-1:-1:-1;2884:2:1;2869:18;;2856:32;2897:33;2856:32;2897:33;:::i;:::-;2557:456;;2949:7;;-1:-1:-1;;;3003:2:1;2988:18;;;;2975:32;;2557:456::o;3207:328::-;3281:6;3289;3297;3350:2;3338:9;3329:7;3325:23;3321:32;3318:52;;;3366:1;3363;3356:12;3318:52;3389:28;3407:9;3389:28;:::i;:::-;3379:38;;3436:37;3469:2;3458:9;3454:18;3436:37;:::i;:::-;3426:47;;3492:37;3525:2;3514:9;3510:18;3492:37;:::i;:::-;3482:47;;3207:328;;;;;:::o;3748:118::-;3834:5;3827:13;3820:21;3813:5;3810:32;3800:60;;3856:1;3853;3846:12;3871:241;3927:6;3980:2;3968:9;3959:7;3955:23;3951:32;3948:52;;;3996:1;3993;3986:12;3948:52;4035:9;4022:23;4054:28;4076:5;4054:28;:::i;4350:382::-;4415:6;4423;4476:2;4464:9;4455:7;4451:23;4447:32;4444:52;;;4492:1;4489;4482:12;4444:52;4531:9;4518:23;4550:31;4575:5;4550:31;:::i;:::-;4600:5;-1:-1:-1;4657:2:1;4642:18;;4629:32;4670:30;4629:32;4670:30;:::i;:::-;4719:7;4709:17;;;4350:382;;;;;:::o;4737:388::-;4805:6;4813;4866:2;4854:9;4845:7;4841:23;4837:32;4834:52;;;4882:1;4879;4872:12;4834:52;4921:9;4908:23;4940:31;4965:5;4940:31;:::i;:::-;4990:5;-1:-1:-1;5047:2:1;5032:18;;5019:32;5060:33;5019:32;5060:33;:::i;5365:380::-;5444:1;5440:12;;;;5487;;;5508:61;;5562:4;5554:6;5550:17;5540:27;;5508:61;5615:2;5607:6;5604:14;5584:18;5581:38;5578:161;;5661:10;5656:3;5652:20;5649:1;5642:31;5696:4;5693:1;5686:15;5724:4;5721:1;5714:15;5578:161;;5365:380;;;:::o;5750:127::-;5811:10;5806:3;5802:20;5799:1;5792:31;5842:4;5839:1;5832:15;5866:4;5863:1;5856:15;5882:125;5947:9;;;5968:10;;;5965:36;;;5981:18;;:::i;6012:356::-;6214:2;6196:21;;;6233:18;;;6226:30;6292:34;6287:2;6272:18;;6265:62;6359:2;6344:18;;6012:356::o;6782:168::-;6855:9;;;6886;;6903:15;;;6897:22;;6883:37;6873:71;;6924:18;;:::i;6955:217::-;6995:1;7021;7011:132;;7065:10;7060:3;7056:20;7053:1;7046:31;7100:4;7097:1;7090:15;7128:4;7125:1;7118:15;7011:132;-1:-1:-1;7157:9:1;;6955:217::o;9448:251::-;9518:6;9571:2;9559:9;9550:7;9546:23;9542:32;9539:52;;;9587:1;9584;9577:12;9539:52;9619:9;9613:16;9638:31;9663:5;9638:31;:::i;9704:128::-;9771:9;;;9792:11;;;9789:37;;;9806:18;;:::i;12871:127::-;12932:10;12927:3;12923:20;12920:1;12913:31;12963:4;12960:1;12953:15;12987:4;12984:1;12977:15;13003:127;13064:10;13059:3;13055:20;13052:1;13045:31;13095:4;13092:1;13085:15;13119:4;13116:1;13109:15;13135:461;13188:3;13226:5;13220:12;13253:6;13248:3;13241:19;13279:4;13308:2;13303:3;13299:12;13292:19;;13345:2;13338:5;13334:14;13366:1;13376:195;13390:6;13387:1;13384:13;13376:195;;;13455:13;;-1:-1:-1;;;;;13451:39:1;13439:52;;13511:12;;;;13546:15;;;;13487:1;13405:9;13376:195;;;-1:-1:-1;13587:3:1;;13135:461;-1:-1:-1;;;;;13135:461:1:o;13601:582::-;13900:6;13889:9;13882:25;13943:6;13938:2;13927:9;13923:18;13916:34;13986:3;13981:2;13970:9;13966:18;13959:31;13863:4;14007:57;14059:3;14048:9;14044:19;14036:6;14007:57;:::i;:::-;-1:-1:-1;;;;;14100:32:1;;;;14095:2;14080:18;;14073:60;-1:-1:-1;14164:3:1;14149:19;14142:35;13999:65;13601:582;-1:-1:-1;;;13601:582:1:o;14800:306::-;14888:6;14896;14904;14957:2;14945:9;14936:7;14932:23;14928:32;14925:52;;;14973:1;14970;14963:12;14925:52;15002:9;14996:16;14986:26;;15052:2;15041:9;15037:18;15031:25;15021:35;;15096:2;15085:9;15081:18;15075:25;15065:35;;14800:306;;;;;:::o;19865:136::-;19904:3;19932:5;19922:39;;19941:18;;:::i;:::-;-1:-1:-1;;;19977:18:1;;19865:136::o;20402:510::-;20673:6;20662:9;20655:25;20716:3;20711:2;20700:9;20696:18;20689:31;20636:4;20737:57;20789:3;20778:9;20774:19;20766:6;20737:57;:::i;:::-;-1:-1:-1;;;;;20830:32:1;;;;20825:2;20810:18;;20803:60;-1:-1:-1;20894:2:1;20879:18;20872:34;20729:65;20402:510;-1:-1:-1;;20402:510:1:o;20917:1105::-;21012:6;21043:2;21086;21074:9;21065:7;21061:23;21057:32;21054:52;;;21102:1;21099;21092:12;21054:52;21135:9;21129:16;21164:18;21205:2;21197:6;21194:14;21191:34;;;21221:1;21218;21211:12;21191:34;21259:6;21248:9;21244:22;21234:32;;21304:7;21297:4;21293:2;21289:13;21285:27;21275:55;;21326:1;21323;21316:12;21275:55;21355:2;21349:9;21377:2;21373;21370:10;21367:36;;;21383:18;;:::i;:::-;21429:2;21426:1;21422:10;21461:2;21455:9;21524:2;21520:7;21515:2;21511;21507:11;21503:25;21495:6;21491:38;21579:6;21567:10;21564:22;21559:2;21547:10;21544:18;21541:46;21538:72;;;21590:18;;:::i;:::-;21626:2;21619:22;21676:18;;;21710:15;;;;-1:-1:-1;21752:11:1;;;21748:20;;;21780:19;;;21777:39;;;21812:1;21809;21802:12;21777:39;21836:11;;;;21856:135;21872:6;21867:3;21864:15;21856:135;;;21938:10;;21926:23;;21889:12;;;;21969;;;;21856:135;;;22010:6;20917:1105;-1:-1:-1;;;;;;;;20917:1105:1:o;22027:184::-;22097:6;22150:2;22138:9;22129:7;22125:23;22121:32;22118:52;;;22166:1;22163;22156:12;22118:52;-1:-1:-1;22189:16:1;;22027:184;-1:-1:-1;22027:184:1:o;22495:245::-;22562:6;22615:2;22603:9;22594:7;22590:23;22586:32;22583:52;;;22631:1;22628;22621:12;22583:52;22663:9;22657:16;22682:28;22704:5;22682:28;:::i", + "sourcePath": "/Users/kasiopea/dev/flashbot/TokenBuilderSM/contracts/Token.sol", + "compiler": { + "name": "solc", + "version": "0.8.19+commit.7dd6d404" + }, + "ast": { + "absolutePath": "/Users/kasiopea/dev/flashbot/TokenBuilderSM/contracts/Token.sol", + "exportedSymbols": { + "Context": [ + 20 + ], + "ERC20": [ + 810 + ], + "ERC20Burnable": [ + 850 + ], + "IDividendTracker": [ + 1336 + ], + "IERC20": [ + 206 + ], + "IERC20Metadata": [ + 228 + ], + "IUniswapV2Factory": [ + 1302 + ], + "IUniswapV2Router01": [ + 1156 + ], + "IUniswapV2Router02": [ + 1241 + ], + "Ownable": [ + 130 + ], + "Token": [ + 3380 + ] + }, + "id": 3381, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "abstract": true, + "baseContracts": [], + "canonicalName": "Context", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 1, + "nodeType": "StructuredDocumentation", + "src": "118:496:0", + "text": " @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts." + }, + "fullyImplemented": true, + "id": 20, + "linearizedBaseContracts": [ + 20 + ], + "name": "Context", + "nameLocation": "633:7:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 9, + "nodeType": "Block", + "src": "709:34:0", + "statements": [ + { + "expression": { + "expression": { + "id": 6, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "726:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 7, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "730:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "726:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 5, + "id": 8, + "nodeType": "Return", + "src": "719:17:0" + } + ] + }, + "id": 10, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgSender", + "nameLocation": "656:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2, + "nodeType": "ParameterList", + "parameters": [], + "src": "666:2:0" + }, + "returnParameters": { + "id": 5, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10, + "src": "700:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "700:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "699:9:0" + }, + "scope": 20, + "src": "647:96:0", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 18, + "nodeType": "Block", + "src": "816:32:0", + "statements": [ + { + "expression": { + "expression": { + "id": 15, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "833:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 16, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "837:4:0", + "memberName": "data", + "nodeType": "MemberAccess", + "src": "833:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "functionReturnParameters": 14, + "id": 17, + "nodeType": "Return", + "src": "826:15:0" + } + ] + }, + "id": 19, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgData", + "nameLocation": "758:8:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11, + "nodeType": "ParameterList", + "parameters": [], + "src": "766:2:0" + }, + "returnParameters": { + "id": 14, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 19, + "src": "800:14:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "800:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "799:16:0" + }, + "scope": 20, + "src": "749:99:0", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 3381, + "src": "615:235:0", + "usedErrors": [] + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 22, + "name": "Context", + "nameLocations": [ + "1558:7:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 20, + "src": "1558:7:0" + }, + "id": 23, + "nodeType": "InheritanceSpecifier", + "src": "1558:7:0" + } + ], + "canonicalName": "Ownable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 21, + "nodeType": "StructuredDocumentation", + "src": "1034:494:0", + "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner." + }, + "fullyImplemented": true, + "id": 130, + "linearizedBaseContracts": [ + 130, + 20 + ], + "name": "Ownable", + "nameLocation": "1547:7:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 25, + "mutability": "mutable", + "name": "_owner", + "nameLocation": "1588:6:0", + "nodeType": "VariableDeclaration", + "scope": 130, + "src": "1572:22:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 24, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1572:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "private" + }, + { + "anonymous": false, + "eventSelector": "8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "id": 31, + "name": "OwnershipTransferred", + "nameLocation": "1607:20:0", + "nodeType": "EventDefinition", + "parameters": { + "id": 30, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 27, + "indexed": true, + "mutability": "mutable", + "name": "previousOwner", + "nameLocation": "1644:13:0", + "nodeType": "VariableDeclaration", + "scope": 31, + "src": "1628:29:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 26, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1628:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 29, + "indexed": true, + "mutability": "mutable", + "name": "newOwner", + "nameLocation": "1675:8:0", + "nodeType": "VariableDeclaration", + "scope": 31, + "src": "1659:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 28, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1659:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1627:57:0" + }, + "src": "1601:84:0" + }, + { + "body": { + "id": 40, + "nodeType": "Block", + "src": "1801:49:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 36, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "1830:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 37, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1830:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 35, + "name": "_transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "1811:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 38, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1811:32:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 39, + "nodeType": "ExpressionStatement", + "src": "1811:32:0" + } + ] + }, + "documentation": { + "id": 32, + "nodeType": "StructuredDocumentation", + "src": "1691:91:0", + "text": " @dev Initializes the contract setting the deployer as the initial owner." + }, + "id": 41, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 33, + "nodeType": "ParameterList", + "parameters": [], + "src": "1798:2:0" + }, + "returnParameters": { + "id": 34, + "nodeType": "ParameterList", + "parameters": [], + "src": "1801:0:0" + }, + "scope": 130, + "src": "1787:63:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 48, + "nodeType": "Block", + "src": "1959:41:0", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 44, + "name": "_checkOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 72, + "src": "1969:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 45, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1969:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 46, + "nodeType": "ExpressionStatement", + "src": "1969:13:0" + }, + { + "id": 47, + "nodeType": "PlaceholderStatement", + "src": "1992:1:0" + } + ] + }, + "documentation": { + "id": 42, + "nodeType": "StructuredDocumentation", + "src": "1856:77:0", + "text": " @dev Throws if called by any account other than the owner." + }, + "id": 49, + "name": "onlyOwner", + "nameLocation": "1947:9:0", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 43, + "nodeType": "ParameterList", + "parameters": [], + "src": "1956:2:0" + }, + "src": "1938:62:0", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 57, + "nodeType": "Block", + "src": "2131:30:0", + "statements": [ + { + "expression": { + "id": 55, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 25, + "src": "2148:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 54, + "id": 56, + "nodeType": "Return", + "src": "2141:13:0" + } + ] + }, + "documentation": { + "id": 50, + "nodeType": "StructuredDocumentation", + "src": "2006:65:0", + "text": " @dev Returns the address of the current owner." + }, + "functionSelector": "8da5cb5b", + "id": 58, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "owner", + "nameLocation": "2085:5:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 51, + "nodeType": "ParameterList", + "parameters": [], + "src": "2090:2:0" + }, + "returnParameters": { + "id": 54, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 53, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 58, + "src": "2122:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 52, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2122:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2121:9:0" + }, + "scope": 130, + "src": "2076:85:0", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 71, + "nodeType": "Block", + "src": "2279:85:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 67, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 63, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58, + "src": "2297:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 64, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2297:7:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 65, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "2308:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 66, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2308:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2297:23:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572", + "id": 68, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2322:34:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", + "typeString": "literal_string \"Ownable: caller is not the owner\"" + }, + "value": "Ownable: caller is not the owner" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", + "typeString": "literal_string \"Ownable: caller is not the owner\"" + } + ], + "id": 62, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "2289:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 69, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2289:68:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 70, + "nodeType": "ExpressionStatement", + "src": "2289:68:0" + } + ] + }, + "documentation": { + "id": 59, + "nodeType": "StructuredDocumentation", + "src": "2167:62:0", + "text": " @dev Throws if the sender is not the owner." + }, + "id": 72, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkOwner", + "nameLocation": "2243:11:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 60, + "nodeType": "ParameterList", + "parameters": [], + "src": "2254:2:0" + }, + "returnParameters": { + "id": 61, + "nodeType": "ParameterList", + "parameters": [], + "src": "2279:0:0" + }, + "scope": 130, + "src": "2234:130:0", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 85, + "nodeType": "Block", + "src": "2753:47:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 81, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2790:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 80, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2782:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 79, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2782:7:0", + "typeDescriptions": {} + } + }, + "id": 82, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2782:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 78, + "name": "_transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "2763:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 83, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2763:30:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 84, + "nodeType": "ExpressionStatement", + "src": "2763:30:0" + } + ] + }, + "documentation": { + "id": 73, + "nodeType": "StructuredDocumentation", + "src": "2370:324:0", + "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner." + }, + "functionSelector": "715018a6", + "id": 86, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 76, + "kind": "modifierInvocation", + "modifierName": { + "id": 75, + "name": "onlyOwner", + "nameLocations": [ + "2743:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49, + "src": "2743:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "2743:9:0" + } + ], + "name": "renounceOwnership", + "nameLocation": "2708:17:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 74, + "nodeType": "ParameterList", + "parameters": [], + "src": "2725:2:0" + }, + "returnParameters": { + "id": 77, + "nodeType": "ParameterList", + "parameters": [], + "src": "2753:0:0" + }, + "scope": 130, + "src": "2699:101:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 108, + "nodeType": "Block", + "src": "3019:128:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 100, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 95, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 89, + "src": "3037:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 98, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3057:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 97, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3049:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 96, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3049:7:0", + "typeDescriptions": {} + } + }, + "id": 99, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3049:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3037:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373", + "id": 101, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3061:40:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", + "typeString": "literal_string \"Ownable: new owner is the zero address\"" + }, + "value": "Ownable: new owner is the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", + "typeString": "literal_string \"Ownable: new owner is the zero address\"" + } + ], + "id": 94, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "3029:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3029:73:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 103, + "nodeType": "ExpressionStatement", + "src": "3029:73:0" + }, + { + "expression": { + "arguments": [ + { + "id": 105, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 89, + "src": "3131:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 104, + "name": "_transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "3112:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 106, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3112:28:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 107, + "nodeType": "ExpressionStatement", + "src": "3112:28:0" + } + ] + }, + "documentation": { + "id": 87, + "nodeType": "StructuredDocumentation", + "src": "2806:138:0", + "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner." + }, + "functionSelector": "f2fde38b", + "id": 109, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 92, + "kind": "modifierInvocation", + "modifierName": { + "id": 91, + "name": "onlyOwner", + "nameLocations": [ + "3009:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49, + "src": "3009:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "3009:9:0" + } + ], + "name": "transferOwnership", + "nameLocation": "2958:17:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 90, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 89, + "mutability": "mutable", + "name": "newOwner", + "nameLocation": "2984:8:0", + "nodeType": "VariableDeclaration", + "scope": 109, + "src": "2976:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 88, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2976:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2975:18:0" + }, + "returnParameters": { + "id": 93, + "nodeType": "ParameterList", + "parameters": [], + "src": "3019:0:0" + }, + "scope": 130, + "src": "2949:198:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 128, + "nodeType": "Block", + "src": "3364:124:0", + "statements": [ + { + "assignments": [ + 116 + ], + "declarations": [ + { + "constant": false, + "id": 116, + "mutability": "mutable", + "name": "oldOwner", + "nameLocation": "3382:8:0", + "nodeType": "VariableDeclaration", + "scope": 128, + "src": "3374:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 115, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3374:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 118, + "initialValue": { + "id": 117, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 25, + "src": "3393:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3374:25:0" + }, + { + "expression": { + "id": 121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 119, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 25, + "src": "3409:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 120, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 112, + "src": "3418:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3409:17:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 122, + "nodeType": "ExpressionStatement", + "src": "3409:17:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 124, + "name": "oldOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 116, + "src": "3462:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 125, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 112, + "src": "3472:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 123, + "name": "OwnershipTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 31, + "src": "3441:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3441:40:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 127, + "nodeType": "EmitStatement", + "src": "3436:45:0" + } + ] + }, + "documentation": { + "id": 110, + "nodeType": "StructuredDocumentation", + "src": "3153:143:0", + "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction." + }, + "id": 129, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transferOwnership", + "nameLocation": "3310:18:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 113, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 112, + "mutability": "mutable", + "name": "newOwner", + "nameLocation": "3337:8:0", + "nodeType": "VariableDeclaration", + "scope": 129, + "src": "3329:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 111, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3329:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3328:18:0" + }, + "returnParameters": { + "id": 114, + "nodeType": "ParameterList", + "parameters": [], + "src": "3364:0:0" + }, + "scope": 130, + "src": "3301:187:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 3381, + "src": "1529:1961:0", + "usedErrors": [] + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC20", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 131, + "nodeType": "StructuredDocumentation", + "src": "3682:70:0", + "text": " @dev Interface of the ERC20 standard as defined in the EIP." + }, + "fullyImplemented": false, + "id": 206, + "linearizedBaseContracts": [ + 206 + ], + "name": "IERC20", + "nameLocation": "3763:6:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": { + "id": 132, + "nodeType": "StructuredDocumentation", + "src": "3776:158:0", + "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero." + }, + "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "id": 140, + "name": "Transfer", + "nameLocation": "3945:8:0", + "nodeType": "EventDefinition", + "parameters": { + "id": 139, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 134, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "3970:4:0", + "nodeType": "VariableDeclaration", + "scope": 140, + "src": "3954:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 133, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3954:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 136, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "3992:2:0", + "nodeType": "VariableDeclaration", + "scope": 140, + "src": "3976:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 135, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3976:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 138, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "4004:5:0", + "nodeType": "VariableDeclaration", + "scope": 140, + "src": "3996:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 137, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3996:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3953:57:0" + }, + "src": "3939:72:0" + }, + { + "anonymous": false, + "documentation": { + "id": 141, + "nodeType": "StructuredDocumentation", + "src": "4017:148:0", + "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance." + }, + "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "id": 149, + "name": "Approval", + "nameLocation": "4176:8:0", + "nodeType": "EventDefinition", + "parameters": { + "id": 148, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 143, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "4201:5:0", + "nodeType": "VariableDeclaration", + "scope": 149, + "src": "4185:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 142, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4185:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 145, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "nameLocation": "4224:7:0", + "nodeType": "VariableDeclaration", + "scope": 149, + "src": "4208:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 144, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4208:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 147, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "4241:5:0", + "nodeType": "VariableDeclaration", + "scope": 149, + "src": "4233:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 146, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4233:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4184:63:0" + }, + "src": "4170:78:0" + }, + { + "documentation": { + "id": 150, + "nodeType": "StructuredDocumentation", + "src": "4254:66:0", + "text": " @dev Returns the amount of tokens in existence." + }, + "functionSelector": "18160ddd", + "id": 155, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "4334:11:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 151, + "nodeType": "ParameterList", + "parameters": [], + "src": "4345:2:0" + }, + "returnParameters": { + "id": 154, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 153, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 155, + "src": "4371:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 152, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4371:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4370:9:0" + }, + "scope": 206, + "src": "4325:55:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 156, + "nodeType": "StructuredDocumentation", + "src": "4386:72:0", + "text": " @dev Returns the amount of tokens owned by `account`." + }, + "functionSelector": "70a08231", + "id": 163, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "4472:9:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 159, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 158, + "mutability": "mutable", + "name": "account", + "nameLocation": "4490:7:0", + "nodeType": "VariableDeclaration", + "scope": 163, + "src": "4482:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 157, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4482:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4481:17:0" + }, + "returnParameters": { + "id": 162, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 161, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 163, + "src": "4522:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 160, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4522:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4521:9:0" + }, + "scope": 206, + "src": "4463:68:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 164, + "nodeType": "StructuredDocumentation", + "src": "4537:202:0", + "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "functionSelector": "a9059cbb", + "id": 173, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "4753:8:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 169, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 166, + "mutability": "mutable", + "name": "to", + "nameLocation": "4770:2:0", + "nodeType": "VariableDeclaration", + "scope": 173, + "src": "4762:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 165, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4762:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 168, + "mutability": "mutable", + "name": "amount", + "nameLocation": "4782:6:0", + "nodeType": "VariableDeclaration", + "scope": 173, + "src": "4774:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 167, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4774:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4761:28:0" + }, + "returnParameters": { + "id": 172, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 171, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 173, + "src": "4808:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 170, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4808:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4807:6:0" + }, + "scope": 206, + "src": "4744:70:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 174, + "nodeType": "StructuredDocumentation", + "src": "4820:264:0", + "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called." + }, + "functionSelector": "dd62ed3e", + "id": 183, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nameLocation": "5098:9:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 179, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 176, + "mutability": "mutable", + "name": "owner", + "nameLocation": "5116:5:0", + "nodeType": "VariableDeclaration", + "scope": 183, + "src": "5108:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 175, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5108:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 178, + "mutability": "mutable", + "name": "spender", + "nameLocation": "5131:7:0", + "nodeType": "VariableDeclaration", + "scope": 183, + "src": "5123:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 177, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5123:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5107:32:0" + }, + "returnParameters": { + "id": 182, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 181, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 183, + "src": "5163:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 180, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5163:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5162:9:0" + }, + "scope": 206, + "src": "5089:83:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 184, + "nodeType": "StructuredDocumentation", + "src": "5178:642:0", + "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event." + }, + "functionSelector": "095ea7b3", + "id": 193, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "5834:7:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 189, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 186, + "mutability": "mutable", + "name": "spender", + "nameLocation": "5850:7:0", + "nodeType": "VariableDeclaration", + "scope": 193, + "src": "5842:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 185, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5842:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 188, + "mutability": "mutable", + "name": "amount", + "nameLocation": "5867:6:0", + "nodeType": "VariableDeclaration", + "scope": 193, + "src": "5859:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 187, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5859:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5841:33:0" + }, + "returnParameters": { + "id": 192, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 191, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 193, + "src": "5893:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 190, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5893:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5892:6:0" + }, + "scope": 206, + "src": "5825:74:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 194, + "nodeType": "StructuredDocumentation", + "src": "5905:287:0", + "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "functionSelector": "23b872dd", + "id": 205, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "6206:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 201, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 196, + "mutability": "mutable", + "name": "from", + "nameLocation": "6227:4:0", + "nodeType": "VariableDeclaration", + "scope": 205, + "src": "6219:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 195, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6219:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 198, + "mutability": "mutable", + "name": "to", + "nameLocation": "6241:2:0", + "nodeType": "VariableDeclaration", + "scope": 205, + "src": "6233:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 197, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6233:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 200, + "mutability": "mutable", + "name": "amount", + "nameLocation": "6253:6:0", + "nodeType": "VariableDeclaration", + "scope": 205, + "src": "6245:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 199, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6245:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6218:42:0" + }, + "returnParameters": { + "id": 204, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 203, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 205, + "src": "6279:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 202, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6279:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6278:6:0" + }, + "scope": 206, + "src": "6197:88:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 3381, + "src": "3753:2534:0", + "usedErrors": [] + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 208, + "name": "IERC20", + "nameLocations": [ + "6647:6:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 206, + "src": "6647:6:0" + }, + "id": 209, + "nodeType": "InheritanceSpecifier", + "src": "6647:6:0" + } + ], + "canonicalName": "IERC20Metadata", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 207, + "nodeType": "StructuredDocumentation", + "src": "6502:116:0", + "text": " @dev Interface for the optional metadata functions from the ERC20 standard.\n _Available since v4.1._" + }, + "fullyImplemented": false, + "id": 228, + "linearizedBaseContracts": [ + 228, + 206 + ], + "name": "IERC20Metadata", + "nameLocation": "6629:14:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 210, + "nodeType": "StructuredDocumentation", + "src": "6660:54:0", + "text": " @dev Returns the name of the token." + }, + "functionSelector": "06fdde03", + "id": 215, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "6728:4:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 211, + "nodeType": "ParameterList", + "parameters": [], + "src": "6732:2:0" + }, + "returnParameters": { + "id": 214, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 213, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 215, + "src": "6758:13:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 212, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6758:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "6757:15:0" + }, + "scope": 228, + "src": "6719:54:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 216, + "nodeType": "StructuredDocumentation", + "src": "6779:56:0", + "text": " @dev Returns the symbol of the token." + }, + "functionSelector": "95d89b41", + "id": 221, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "6849:6:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 217, + "nodeType": "ParameterList", + "parameters": [], + "src": "6855:2:0" + }, + "returnParameters": { + "id": 220, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 219, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 221, + "src": "6881:13:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 218, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6881:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "6880:15:0" + }, + "scope": 228, + "src": "6840:56:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 222, + "nodeType": "StructuredDocumentation", + "src": "6902:65:0", + "text": " @dev Returns the decimals places of the token." + }, + "functionSelector": "313ce567", + "id": 227, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nameLocation": "6981:8:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 223, + "nodeType": "ParameterList", + "parameters": [], + "src": "6989:2:0" + }, + "returnParameters": { + "id": 226, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 225, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 227, + "src": "7015:5:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 224, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "7015:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "7014:7:0" + }, + "scope": 228, + "src": "6972:50:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 3381, + "src": "6619:405:0", + "usedErrors": [] + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 230, + "name": "Context", + "nameLocations": [ + "8536:7:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 20, + "src": "8536:7:0" + }, + "id": 231, + "nodeType": "InheritanceSpecifier", + "src": "8536:7:0" + }, + { + "baseName": { + "id": 232, + "name": "IERC20", + "nameLocations": [ + "8545:6:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 206, + "src": "8545:6:0" + }, + "id": 233, + "nodeType": "InheritanceSpecifier", + "src": "8545:6:0" + }, + { + "baseName": { + "id": 234, + "name": "IERC20Metadata", + "nameLocations": [ + "8553:14:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 228, + "src": "8553:14:0" + }, + "id": 235, + "nodeType": "InheritanceSpecifier", + "src": "8553:14:0" + } + ], + "canonicalName": "ERC20", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 229, + "nodeType": "StructuredDocumentation", + "src": "7216:1301:0", + "text": " @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC20\n applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}." + }, + "fullyImplemented": true, + "id": 810, + "linearizedBaseContracts": [ + 810, + 228, + 206, + 20 + ], + "name": "ERC20", + "nameLocation": "8527:5:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 239, + "mutability": "mutable", + "name": "_balances", + "nameLocation": "8610:9:0", + "nodeType": "VariableDeclaration", + "scope": 810, + "src": "8574:45:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 238, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 236, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8582:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "8574:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 237, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8593:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 245, + "mutability": "mutable", + "name": "_allowances", + "nameLocation": "8682:11:0", + "nodeType": "VariableDeclaration", + "scope": 810, + "src": "8626:67:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 244, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 240, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8634:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "8626:47:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 243, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 241, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8653:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "8645:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 242, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8664:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 247, + "mutability": "mutable", + "name": "_totalSupply", + "nameLocation": "8716:12:0", + "nodeType": "VariableDeclaration", + "scope": 810, + "src": "8700:28:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 246, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8700:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 249, + "mutability": "mutable", + "name": "_name", + "nameLocation": "8750:5:0", + "nodeType": "VariableDeclaration", + "scope": 810, + "src": "8735:20:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 248, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "8735:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 251, + "mutability": "mutable", + "name": "_symbol", + "nameLocation": "8776:7:0", + "nodeType": "VariableDeclaration", + "scope": 810, + "src": "8761:22:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 250, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "8761:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 267, + "nodeType": "Block", + "src": "9022:57:0", + "statements": [ + { + "expression": { + "id": 261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 259, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 249, + "src": "9032:5:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 260, + "name": "name_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 254, + "src": "9040:5:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "9032:13:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 262, + "nodeType": "ExpressionStatement", + "src": "9032:13:0" + }, + { + "expression": { + "id": 265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 263, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 251, + "src": "9055:7:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 264, + "name": "symbol_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 256, + "src": "9065:7:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "9055:17:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 266, + "nodeType": "ExpressionStatement", + "src": "9055:17:0" + } + ] + }, + "documentation": { + "id": 252, + "nodeType": "StructuredDocumentation", + "src": "8790:171:0", + "text": " @dev Sets the values for {name} and {symbol}.\n All two of these values are immutable: they can only be set once during\n construction." + }, + "id": 268, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 257, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 254, + "mutability": "mutable", + "name": "name_", + "nameLocation": "8992:5:0", + "nodeType": "VariableDeclaration", + "scope": 268, + "src": "8978:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 253, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "8978:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 256, + "mutability": "mutable", + "name": "symbol_", + "nameLocation": "9013:7:0", + "nodeType": "VariableDeclaration", + "scope": 268, + "src": "8999:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 255, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "8999:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "8977:44:0" + }, + "returnParameters": { + "id": 258, + "nodeType": "ParameterList", + "parameters": [], + "src": "9022:0:0" + }, + "scope": 810, + "src": "8966:113:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 215 + ], + "body": { + "id": 277, + "nodeType": "Block", + "src": "9213:29:0", + "statements": [ + { + "expression": { + "id": 275, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 249, + "src": "9230:5:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 274, + "id": 276, + "nodeType": "Return", + "src": "9223:12:0" + } + ] + }, + "documentation": { + "id": 269, + "nodeType": "StructuredDocumentation", + "src": "9085:54:0", + "text": " @dev Returns the name of the token." + }, + "functionSelector": "06fdde03", + "id": 278, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "9153:4:0", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 271, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "9180:8:0" + }, + "parameters": { + "id": 270, + "nodeType": "ParameterList", + "parameters": [], + "src": "9157:2:0" + }, + "returnParameters": { + "id": 274, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 273, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 278, + "src": "9198:13:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 272, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "9198:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "9197:15:0" + }, + "scope": 810, + "src": "9144:98:0", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 221 + ], + "body": { + "id": 287, + "nodeType": "Block", + "src": "9426:31:0", + "statements": [ + { + "expression": { + "id": 285, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 251, + "src": "9443:7:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 284, + "id": 286, + "nodeType": "Return", + "src": "9436:14:0" + } + ] + }, + "documentation": { + "id": 279, + "nodeType": "StructuredDocumentation", + "src": "9248:102:0", + "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name." + }, + "functionSelector": "95d89b41", + "id": 288, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "9364:6:0", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 281, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "9393:8:0" + }, + "parameters": { + "id": 280, + "nodeType": "ParameterList", + "parameters": [], + "src": "9370:2:0" + }, + "returnParameters": { + "id": 284, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 283, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 288, + "src": "9411:13:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 282, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "9411:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "9410:15:0" + }, + "scope": 810, + "src": "9355:102:0", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 227 + ], + "body": { + "id": 297, + "nodeType": "Block", + "src": "10155:26:0", + "statements": [ + { + "expression": { + "hexValue": "3138", + "id": 295, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10172:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "functionReturnParameters": 294, + "id": 296, + "nodeType": "Return", + "src": "10165:9:0" + } + ] + }, + "documentation": { + "id": 289, + "nodeType": "StructuredDocumentation", + "src": "9463:622:0", + "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the default value returned by this function, unless\n it's overridden.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}." + }, + "functionSelector": "313ce567", + "id": 298, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nameLocation": "10099:8:0", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 291, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "10130:8:0" + }, + "parameters": { + "id": 290, + "nodeType": "ParameterList", + "parameters": [], + "src": "10107:2:0" + }, + "returnParameters": { + "id": 294, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 293, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 298, + "src": "10148:5:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 292, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "10148:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "10147:7:0" + }, + "scope": 810, + "src": "10090:91:0", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 155 + ], + "body": { + "id": 307, + "nodeType": "Block", + "src": "10311:36:0", + "statements": [ + { + "expression": { + "id": 305, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 247, + "src": "10328:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 304, + "id": 306, + "nodeType": "Return", + "src": "10321:19:0" + } + ] + }, + "documentation": { + "id": 299, + "nodeType": "StructuredDocumentation", + "src": "10187:49:0", + "text": " @dev See {IERC20-totalSupply}." + }, + "functionSelector": "18160ddd", + "id": 308, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "10250:11:0", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 301, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "10284:8:0" + }, + "parameters": { + "id": 300, + "nodeType": "ParameterList", + "parameters": [], + "src": "10261:2:0" + }, + "returnParameters": { + "id": 304, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 303, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 308, + "src": "10302:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 302, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10302:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10301:9:0" + }, + "scope": 810, + "src": "10241:106:0", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 163 + ], + "body": { + "id": 321, + "nodeType": "Block", + "src": "10488:42:0", + "statements": [ + { + "expression": { + "baseExpression": { + "id": 317, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 239, + "src": "10505:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 319, + "indexExpression": { + "id": 318, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 311, + "src": "10515:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10505:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 316, + "id": 320, + "nodeType": "Return", + "src": "10498:25:0" + } + ] + }, + "documentation": { + "id": 309, + "nodeType": "StructuredDocumentation", + "src": "10353:47:0", + "text": " @dev See {IERC20-balanceOf}." + }, + "functionSelector": "70a08231", + "id": 322, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "10414:9:0", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 313, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "10461:8:0" + }, + "parameters": { + "id": 312, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 311, + "mutability": "mutable", + "name": "account", + "nameLocation": "10432:7:0", + "nodeType": "VariableDeclaration", + "scope": 322, + "src": "10424:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 310, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10424:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "10423:17:0" + }, + "returnParameters": { + "id": 316, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 315, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 322, + "src": "10479:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 314, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10479:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10478:9:0" + }, + "scope": 810, + "src": "10405:125:0", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 173 + ], + "body": { + "id": 346, + "nodeType": "Block", + "src": "10811:104:0", + "statements": [ + { + "assignments": [ + 334 + ], + "declarations": [ + { + "constant": false, + "id": 334, + "mutability": "mutable", + "name": "owner", + "nameLocation": "10829:5:0", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "10821:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 333, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10821:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 337, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 335, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "10837:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10837:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10821:28:0" + }, + { + "expression": { + "arguments": [ + { + "id": 339, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 334, + "src": "10869:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 340, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 325, + "src": "10876:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 341, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 327, + "src": "10880:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 338, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 570, + "src": "10859:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10859:28:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 343, + "nodeType": "ExpressionStatement", + "src": "10859:28:0" + }, + { + "expression": { + "hexValue": "74727565", + "id": 344, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10904:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 332, + "id": 345, + "nodeType": "Return", + "src": "10897:11:0" + } + ] + }, + "documentation": { + "id": 323, + "nodeType": "StructuredDocumentation", + "src": "10536:185:0", + "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `amount`." + }, + "functionSelector": "a9059cbb", + "id": 347, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "10735:8:0", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 329, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "10787:8:0" + }, + "parameters": { + "id": 328, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 325, + "mutability": "mutable", + "name": "to", + "nameLocation": "10752:2:0", + "nodeType": "VariableDeclaration", + "scope": 347, + "src": "10744:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 324, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10744:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 327, + "mutability": "mutable", + "name": "amount", + "nameLocation": "10764:6:0", + "nodeType": "VariableDeclaration", + "scope": 347, + "src": "10756:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 326, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10756:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10743:28:0" + }, + "returnParameters": { + "id": 332, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 331, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 347, + "src": "10805:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 330, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10805:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "10804:6:0" + }, + "scope": 810, + "src": "10726:189:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 183 + ], + "body": { + "id": 364, + "nodeType": "Block", + "src": "11071:51:0", + "statements": [ + { + "expression": { + "baseExpression": { + "baseExpression": { + "id": 358, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 245, + "src": "11088:11:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 360, + "indexExpression": { + "id": 359, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 350, + "src": "11100:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11088:18:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 362, + "indexExpression": { + "id": 361, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "11107:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11088:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 357, + "id": 363, + "nodeType": "Return", + "src": "11081:34:0" + } + ] + }, + "documentation": { + "id": 348, + "nodeType": "StructuredDocumentation", + "src": "10921:47:0", + "text": " @dev See {IERC20-allowance}." + }, + "functionSelector": "dd62ed3e", + "id": 365, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nameLocation": "10982:9:0", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 354, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "11044:8:0" + }, + "parameters": { + "id": 353, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 350, + "mutability": "mutable", + "name": "owner", + "nameLocation": "11000:5:0", + "nodeType": "VariableDeclaration", + "scope": 365, + "src": "10992:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 349, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10992:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 352, + "mutability": "mutable", + "name": "spender", + "nameLocation": "11015:7:0", + "nodeType": "VariableDeclaration", + "scope": 365, + "src": "11007:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 351, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11007:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "10991:32:0" + }, + "returnParameters": { + "id": 357, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 356, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 365, + "src": "11062:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 355, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11062:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11061:9:0" + }, + "scope": 810, + "src": "10973:149:0", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 193 + ], + "body": { + "id": 389, + "nodeType": "Block", + "src": "11519:108:0", + "statements": [ + { + "assignments": [ + 377 + ], + "declarations": [ + { + "constant": false, + "id": 377, + "mutability": "mutable", + "name": "owner", + "nameLocation": "11537:5:0", + "nodeType": "VariableDeclaration", + "scope": 389, + "src": "11529:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 376, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11529:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 380, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 378, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "11545:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11545:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11529:28:0" + }, + { + "expression": { + "arguments": [ + { + "id": 382, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 377, + "src": "11576:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 383, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 368, + "src": "11583:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 384, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 370, + "src": "11592:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 381, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 744, + "src": "11567:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 385, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11567:32:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 386, + "nodeType": "ExpressionStatement", + "src": "11567:32:0" + }, + { + "expression": { + "hexValue": "74727565", + "id": 387, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11616:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 375, + "id": 388, + "nodeType": "Return", + "src": "11609:11:0" + } + ] + }, + "documentation": { + "id": 366, + "nodeType": "StructuredDocumentation", + "src": "11128:297:0", + "text": " @dev See {IERC20-approve}.\n NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address." + }, + "functionSelector": "095ea7b3", + "id": 390, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "11439:7:0", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 372, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "11495:8:0" + }, + "parameters": { + "id": 371, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 368, + "mutability": "mutable", + "name": "spender", + "nameLocation": "11455:7:0", + "nodeType": "VariableDeclaration", + "scope": 390, + "src": "11447:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 367, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11447:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 370, + "mutability": "mutable", + "name": "amount", + "nameLocation": "11472:6:0", + "nodeType": "VariableDeclaration", + "scope": 390, + "src": "11464:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 369, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11464:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11446:33:0" + }, + "returnParameters": { + "id": 375, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 374, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 390, + "src": "11513:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 373, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "11513:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "11512:6:0" + }, + "scope": 810, + "src": "11430:197:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 205 + ], + "body": { + "id": 422, + "nodeType": "Block", + "src": "12292:153:0", + "statements": [ + { + "assignments": [ + 404 + ], + "declarations": [ + { + "constant": false, + "id": 404, + "mutability": "mutable", + "name": "spender", + "nameLocation": "12310:7:0", + "nodeType": "VariableDeclaration", + "scope": 422, + "src": "12302:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 403, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12302:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 407, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 405, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "12320:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12320:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12302:30:0" + }, + { + "expression": { + "arguments": [ + { + "id": 409, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 393, + "src": "12358:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 410, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 404, + "src": "12364:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 411, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 397, + "src": "12373:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 408, + "name": "_spendAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 787, + "src": "12342:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 412, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12342:38:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 413, + "nodeType": "ExpressionStatement", + "src": "12342:38:0" + }, + { + "expression": { + "arguments": [ + { + "id": 415, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 393, + "src": "12400:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 416, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 395, + "src": "12406:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 417, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 397, + "src": "12410:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 414, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 570, + "src": "12390:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12390:27:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 419, + "nodeType": "ExpressionStatement", + "src": "12390:27:0" + }, + { + "expression": { + "hexValue": "74727565", + "id": 420, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12434:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 402, + "id": 421, + "nodeType": "Return", + "src": "12427:11:0" + } + ] + }, + "documentation": { + "id": 391, + "nodeType": "StructuredDocumentation", + "src": "11633:551:0", + "text": " @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `amount`.\n - the caller must have allowance for ``from``'s tokens of at least\n `amount`." + }, + "functionSelector": "23b872dd", + "id": 423, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "12198:12:0", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 399, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "12268:8:0" + }, + "parameters": { + "id": 398, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 393, + "mutability": "mutable", + "name": "from", + "nameLocation": "12219:4:0", + "nodeType": "VariableDeclaration", + "scope": 423, + "src": "12211:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 392, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12211:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 395, + "mutability": "mutable", + "name": "to", + "nameLocation": "12233:2:0", + "nodeType": "VariableDeclaration", + "scope": 423, + "src": "12225:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 394, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12225:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 397, + "mutability": "mutable", + "name": "amount", + "nameLocation": "12245:6:0", + "nodeType": "VariableDeclaration", + "scope": 423, + "src": "12237:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 396, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12237:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12210:42:0" + }, + "returnParameters": { + "id": 402, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 401, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 423, + "src": "12286:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 400, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12286:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "12285:6:0" + }, + "scope": 810, + "src": "12189:256:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 451, + "nodeType": "Block", + "src": "12934:140:0", + "statements": [ + { + "assignments": [ + 434 + ], + "declarations": [ + { + "constant": false, + "id": 434, + "mutability": "mutable", + "name": "owner", + "nameLocation": "12952:5:0", + "nodeType": "VariableDeclaration", + "scope": 451, + "src": "12944:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 433, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12944:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 437, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 435, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "12960:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12960:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12944:28:0" + }, + { + "expression": { + "arguments": [ + { + "id": 439, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 434, + "src": "12991:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 440, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 426, + "src": "12998:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 442, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 434, + "src": "13017:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 443, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 426, + "src": "13024:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 441, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "13007:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view returns (uint256)" + } + }, + "id": 444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13007:25:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 445, + "name": "addedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 428, + "src": "13035:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13007:38:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 438, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 744, + "src": "12982:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12982:64:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 448, + "nodeType": "ExpressionStatement", + "src": "12982:64:0" + }, + { + "expression": { + "hexValue": "74727565", + "id": 449, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13063:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 432, + "id": 450, + "nodeType": "Return", + "src": "13056:11:0" + } + ] + }, + "documentation": { + "id": 424, + "nodeType": "StructuredDocumentation", + "src": "12451:384:0", + "text": " @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address." + }, + "functionSelector": "39509351", + "id": 452, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "increaseAllowance", + "nameLocation": "12849:17:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 429, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 426, + "mutability": "mutable", + "name": "spender", + "nameLocation": "12875:7:0", + "nodeType": "VariableDeclaration", + "scope": 452, + "src": "12867:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 425, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12867:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 428, + "mutability": "mutable", + "name": "addedValue", + "nameLocation": "12892:10:0", + "nodeType": "VariableDeclaration", + "scope": 452, + "src": "12884:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 427, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12884:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12866:37:0" + }, + "returnParameters": { + "id": 432, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 431, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 452, + "src": "12928:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 430, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12928:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "12927:6:0" + }, + "scope": 810, + "src": "12840:234:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 492, + "nodeType": "Block", + "src": "13660:328:0", + "statements": [ + { + "assignments": [ + 463 + ], + "declarations": [ + { + "constant": false, + "id": 463, + "mutability": "mutable", + "name": "owner", + "nameLocation": "13678:5:0", + "nodeType": "VariableDeclaration", + "scope": 492, + "src": "13670:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 462, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13670:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 466, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 464, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "13686:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13686:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13670:28:0" + }, + { + "assignments": [ + 468 + ], + "declarations": [ + { + "constant": false, + "id": 468, + "mutability": "mutable", + "name": "currentAllowance", + "nameLocation": "13716:16:0", + "nodeType": "VariableDeclaration", + "scope": 492, + "src": "13708:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 467, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13708:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 473, + "initialValue": { + "arguments": [ + { + "id": 470, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 463, + "src": "13745:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 471, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 455, + "src": "13752:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 469, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "13735:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view returns (uint256)" + } + }, + "id": 472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13735:25:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13708:52:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 475, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 468, + "src": "13778:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 476, + "name": "subtractedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 457, + "src": "13798:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13778:35:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", + "id": 478, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13815:39:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", + "typeString": "literal_string \"ERC20: decreased allowance below zero\"" + }, + "value": "ERC20: decreased allowance below zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", + "typeString": "literal_string \"ERC20: decreased allowance below zero\"" + } + ], + "id": 474, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "13770:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13770:85:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 480, + "nodeType": "ExpressionStatement", + "src": "13770:85:0" + }, + { + "id": 489, + "nodeType": "UncheckedBlock", + "src": "13865:95:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 482, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 463, + "src": "13898:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 483, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 455, + "src": "13905:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 486, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 484, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 468, + "src": "13914:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 485, + "name": "subtractedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 457, + "src": "13933:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13914:34:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 481, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 744, + "src": "13889:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13889:60:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 488, + "nodeType": "ExpressionStatement", + "src": "13889:60:0" + } + ] + }, + { + "expression": { + "hexValue": "74727565", + "id": 490, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13977:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 461, + "id": 491, + "nodeType": "Return", + "src": "13970:11:0" + } + ] + }, + "documentation": { + "id": 453, + "nodeType": "StructuredDocumentation", + "src": "13080:476:0", + "text": " @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`." + }, + "functionSelector": "a457c2d7", + "id": 493, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decreaseAllowance", + "nameLocation": "13570:17:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 458, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 455, + "mutability": "mutable", + "name": "spender", + "nameLocation": "13596:7:0", + "nodeType": "VariableDeclaration", + "scope": 493, + "src": "13588:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 454, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13588:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 457, + "mutability": "mutable", + "name": "subtractedValue", + "nameLocation": "13613:15:0", + "nodeType": "VariableDeclaration", + "scope": 493, + "src": "13605:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 456, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13605:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13587:42:0" + }, + "returnParameters": { + "id": 461, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 460, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 493, + "src": "13654:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 459, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13654:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "13653:6:0" + }, + "scope": 810, + "src": "13561:427:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 569, + "nodeType": "Block", + "src": "14520:710:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 504, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 496, + "src": "14538:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 507, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14554:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 506, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14546:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 505, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14546:7:0", + "typeDescriptions": {} + } + }, + "id": 508, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14546:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14538:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373", + "id": 510, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14558:39:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", + "typeString": "literal_string \"ERC20: transfer from the zero address\"" + }, + "value": "ERC20: transfer from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", + "typeString": "literal_string \"ERC20: transfer from the zero address\"" + } + ], + "id": 503, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "14530:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 511, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14530:68:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 512, + "nodeType": "ExpressionStatement", + "src": "14530:68:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 514, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "14616:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 517, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14630:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 516, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14622:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 515, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14622:7:0", + "typeDescriptions": {} + } + }, + "id": 518, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14622:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14616:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373", + "id": 520, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14634:37:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", + "typeString": "literal_string \"ERC20: transfer to the zero address\"" + }, + "value": "ERC20: transfer to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", + "typeString": "literal_string \"ERC20: transfer to the zero address\"" + } + ], + "id": 513, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "14608:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14608:64:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 522, + "nodeType": "ExpressionStatement", + "src": "14608:64:0" + }, + { + "expression": { + "arguments": [ + { + "id": 524, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 496, + "src": "14704:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 525, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "14710:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 526, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 500, + "src": "14714:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 523, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 798, + "src": "14683:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14683:38:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 528, + "nodeType": "ExpressionStatement", + "src": "14683:38:0" + }, + { + "assignments": [ + 530 + ], + "declarations": [ + { + "constant": false, + "id": 530, + "mutability": "mutable", + "name": "fromBalance", + "nameLocation": "14740:11:0", + "nodeType": "VariableDeclaration", + "scope": 569, + "src": "14732:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 529, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14732:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 534, + "initialValue": { + "baseExpression": { + "id": 531, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 239, + "src": "14754:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 533, + "indexExpression": { + "id": 532, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 496, + "src": "14764:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14754:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14732:37:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 536, + "name": "fromBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "14787:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 537, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 500, + "src": "14802:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14787:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365", + "id": 539, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14810:40:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", + "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" + }, + "value": "ERC20: transfer amount exceeds balance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", + "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" + } + ], + "id": 535, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "14779:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 540, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14779:72:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 541, + "nodeType": "ExpressionStatement", + "src": "14779:72:0" + }, + { + "id": 556, + "nodeType": "UncheckedBlock", + "src": "14861:273:0", + "statements": [ + { + "expression": { + "id": 548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 542, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 239, + "src": "14885:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 544, + "indexExpression": { + "id": 543, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 496, + "src": "14895:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "14885:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 545, + "name": "fromBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "14903:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 546, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 500, + "src": "14917:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14903:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14885:38:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 549, + "nodeType": "ExpressionStatement", + "src": "14885:38:0" + }, + { + "expression": { + "id": 554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 550, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 239, + "src": "15100:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 552, + "indexExpression": { + "id": 551, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "15110:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "15100:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 553, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 500, + "src": "15117:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15100:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 555, + "nodeType": "ExpressionStatement", + "src": "15100:23:0" + } + ] + }, + { + "eventCall": { + "arguments": [ + { + "id": 558, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 496, + "src": "15158:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 559, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "15164:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 560, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 500, + "src": "15168:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 557, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 140, + "src": "15149:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15149:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 562, + "nodeType": "EmitStatement", + "src": "15144:31:0" + }, + { + "expression": { + "arguments": [ + { + "id": 564, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 496, + "src": "15206:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 565, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "15212:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 566, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 500, + "src": "15216:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 563, + "name": "_afterTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "15186:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15186:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 568, + "nodeType": "ExpressionStatement", + "src": "15186:37:0" + } + ] + }, + "documentation": { + "id": 494, + "nodeType": "StructuredDocumentation", + "src": "13994:443:0", + "text": " @dev Moves `amount` of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `from` must have a balance of at least `amount`." + }, + "id": 570, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nameLocation": "14451:9:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 501, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 496, + "mutability": "mutable", + "name": "from", + "nameLocation": "14469:4:0", + "nodeType": "VariableDeclaration", + "scope": 570, + "src": "14461:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 495, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14461:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 498, + "mutability": "mutable", + "name": "to", + "nameLocation": "14483:2:0", + "nodeType": "VariableDeclaration", + "scope": 570, + "src": "14475:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 497, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14475:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 500, + "mutability": "mutable", + "name": "amount", + "nameLocation": "14495:6:0", + "nodeType": "VariableDeclaration", + "scope": 570, + "src": "14487:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 499, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14487:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14460:42:0" + }, + "returnParameters": { + "id": 502, + "nodeType": "ParameterList", + "parameters": [], + "src": "14520:0:0" + }, + "scope": 810, + "src": "14442:788:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 626, + "nodeType": "Block", + "src": "15571:470:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 579, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 573, + "src": "15589:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 582, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15608:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 581, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15600:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 580, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15600:7:0", + "typeDescriptions": {} + } + }, + "id": 583, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15600:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15589:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", + "id": 585, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15612:33:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", + "typeString": "literal_string \"ERC20: mint to the zero address\"" + }, + "value": "ERC20: mint to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", + "typeString": "literal_string \"ERC20: mint to the zero address\"" + } + ], + "id": 578, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "15581:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15581:65:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 587, + "nodeType": "ExpressionStatement", + "src": "15581:65:0" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 591, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15686:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 590, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15678:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 589, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15678:7:0", + "typeDescriptions": {} + } + }, + "id": 592, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15678:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 593, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 573, + "src": "15690:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 594, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 575, + "src": "15699:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 588, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 798, + "src": "15657:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 595, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15657:49:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 596, + "nodeType": "ExpressionStatement", + "src": "15657:49:0" + }, + { + "expression": { + "id": 599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 597, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 247, + "src": "15717:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 598, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 575, + "src": "15733:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15717:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 600, + "nodeType": "ExpressionStatement", + "src": "15717:22:0" + }, + { + "id": 607, + "nodeType": "UncheckedBlock", + "src": "15749:175:0", + "statements": [ + { + "expression": { + "id": 605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 601, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 239, + "src": "15885:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 603, + "indexExpression": { + "id": 602, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 573, + "src": "15895:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "15885:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 604, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 575, + "src": "15907:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15885:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 606, + "nodeType": "ExpressionStatement", + "src": "15885:28:0" + } + ] + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 611, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15955:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 610, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15947:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 609, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15947:7:0", + "typeDescriptions": {} + } + }, + "id": 612, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15947:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 613, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 573, + "src": "15959:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 614, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 575, + "src": "15968:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 608, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 140, + "src": "15938:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 615, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15938:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 616, + "nodeType": "EmitStatement", + "src": "15933:42:0" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 620, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16014:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 619, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16006:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 618, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16006:7:0", + "typeDescriptions": {} + } + }, + "id": 621, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16006:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 622, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 573, + "src": "16018:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 623, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 575, + "src": "16027:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 617, + "name": "_afterTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "15986:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15986:48:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 625, + "nodeType": "ExpressionStatement", + "src": "15986:48:0" + } + ] + }, + "documentation": { + "id": 571, + "nodeType": "StructuredDocumentation", + "src": "15236:265:0", + "text": "@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements:\n - `account` cannot be the zero address." + }, + "id": 627, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nameLocation": "15515:5:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 576, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 573, + "mutability": "mutable", + "name": "account", + "nameLocation": "15529:7:0", + "nodeType": "VariableDeclaration", + "scope": 627, + "src": "15521:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 572, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15521:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 575, + "mutability": "mutable", + "name": "amount", + "nameLocation": "15546:6:0", + "nodeType": "VariableDeclaration", + "scope": 627, + "src": "15538:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 574, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15538:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15520:33:0" + }, + "returnParameters": { + "id": 577, + "nodeType": "ParameterList", + "parameters": [], + "src": "15571:0:0" + }, + "scope": 810, + "src": "15506:535:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 698, + "nodeType": "Block", + "src": "16426:594:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 636, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 630, + "src": "16444:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 639, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16463:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 638, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16455:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 637, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16455:7:0", + "typeDescriptions": {} + } + }, + "id": 640, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16455:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "16444:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373", + "id": 642, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16467:35:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f", + "typeString": "literal_string \"ERC20: burn from the zero address\"" + }, + "value": "ERC20: burn from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f", + "typeString": "literal_string \"ERC20: burn from the zero address\"" + } + ], + "id": 635, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "16436:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16436:67:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 644, + "nodeType": "ExpressionStatement", + "src": "16436:67:0" + }, + { + "expression": { + "arguments": [ + { + "id": 646, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 630, + "src": "16535:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 649, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16552:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 648, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16544:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 647, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16544:7:0", + "typeDescriptions": {} + } + }, + "id": 650, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16544:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 651, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 632, + "src": "16556:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 645, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 798, + "src": "16514:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16514:49:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 653, + "nodeType": "ExpressionStatement", + "src": "16514:49:0" + }, + { + "assignments": [ + 655 + ], + "declarations": [ + { + "constant": false, + "id": 655, + "mutability": "mutable", + "name": "accountBalance", + "nameLocation": "16582:14:0", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "16574:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 654, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16574:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 659, + "initialValue": { + "baseExpression": { + "id": 656, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 239, + "src": "16599:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 658, + "indexExpression": { + "id": 657, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 630, + "src": "16609:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16599:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16574:43:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 661, + "name": "accountBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 655, + "src": "16635:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 662, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 632, + "src": "16653:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16635:24:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365", + "id": 664, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16661:36:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd", + "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" + }, + "value": "ERC20: burn amount exceeds balance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd", + "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" + } + ], + "id": 660, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "16627:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 665, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16627:71:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 666, + "nodeType": "ExpressionStatement", + "src": "16627:71:0" + }, + { + "id": 679, + "nodeType": "UncheckedBlock", + "src": "16708:194:0", + "statements": [ + { + "expression": { + "id": 673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 667, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 239, + "src": "16732:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 669, + "indexExpression": { + "id": 668, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 630, + "src": "16742:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "16732:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 672, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 670, + "name": "accountBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 655, + "src": "16753:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 671, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 632, + "src": "16770:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16753:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16732:44:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 674, + "nodeType": "ExpressionStatement", + "src": "16732:44:0" + }, + { + "expression": { + "id": 677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 675, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 247, + "src": "16869:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "id": 676, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 632, + "src": "16885:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16869:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 678, + "nodeType": "ExpressionStatement", + "src": "16869:22:0" + } + ] + }, + { + "eventCall": { + "arguments": [ + { + "id": 681, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 630, + "src": "16926:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 684, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16943:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 683, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16935:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 682, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16935:7:0", + "typeDescriptions": {} + } + }, + "id": 685, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16935:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 686, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 632, + "src": "16947:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 680, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 140, + "src": "16917:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16917:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 688, + "nodeType": "EmitStatement", + "src": "16912:42:0" + }, + { + "expression": { + "arguments": [ + { + "id": 690, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 630, + "src": "16985:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 693, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17002:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 692, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16994:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 691, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16994:7:0", + "typeDescriptions": {} + } + }, + "id": 694, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16994:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 695, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 632, + "src": "17006:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 689, + "name": "_afterTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "16965:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 696, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16965:48:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 697, + "nodeType": "ExpressionStatement", + "src": "16965:48:0" + } + ] + }, + "documentation": { + "id": 628, + "nodeType": "StructuredDocumentation", + "src": "16047:309:0", + "text": " @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens." + }, + "id": 699, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nameLocation": "16370:5:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 633, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 630, + "mutability": "mutable", + "name": "account", + "nameLocation": "16384:7:0", + "nodeType": "VariableDeclaration", + "scope": 699, + "src": "16376:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 629, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16376:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 632, + "mutability": "mutable", + "name": "amount", + "nameLocation": "16401:6:0", + "nodeType": "VariableDeclaration", + "scope": 699, + "src": "16393:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 631, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16393:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "16375:33:0" + }, + "returnParameters": { + "id": 634, + "nodeType": "ParameterList", + "parameters": [], + "src": "16426:0:0" + }, + "scope": 810, + "src": "16361:659:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 743, + "nodeType": "Block", + "src": "17526:257:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 710, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 702, + "src": "17544:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 713, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17561:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 712, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17553:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 711, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17553:7:0", + "typeDescriptions": {} + } + }, + "id": 714, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17553:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "17544:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373", + "id": 716, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17565:38:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", + "typeString": "literal_string \"ERC20: approve from the zero address\"" + }, + "value": "ERC20: approve from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", + "typeString": "literal_string \"ERC20: approve from the zero address\"" + } + ], + "id": 709, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "17536:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17536:68:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 718, + "nodeType": "ExpressionStatement", + "src": "17536:68:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 720, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 704, + "src": "17622:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 723, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17641:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 722, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17633:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 721, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17633:7:0", + "typeDescriptions": {} + } + }, + "id": 724, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17633:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "17622:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373", + "id": 726, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17645:36:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", + "typeString": "literal_string \"ERC20: approve to the zero address\"" + }, + "value": "ERC20: approve to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", + "typeString": "literal_string \"ERC20: approve to the zero address\"" + } + ], + "id": 719, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "17614:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17614:68:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 728, + "nodeType": "ExpressionStatement", + "src": "17614:68:0" + }, + { + "expression": { + "id": 735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 729, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 245, + "src": "17693:11:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 732, + "indexExpression": { + "id": 730, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 702, + "src": "17705:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17693:18:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 733, + "indexExpression": { + "id": 731, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 704, + "src": "17712:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "17693:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 734, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 706, + "src": "17723:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17693:36:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 736, + "nodeType": "ExpressionStatement", + "src": "17693:36:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 738, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 702, + "src": "17753:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 739, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 704, + "src": "17760:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 740, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 706, + "src": "17769:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 737, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "17744:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17744:32:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 742, + "nodeType": "EmitStatement", + "src": "17739:37:0" + } + ] + }, + "documentation": { + "id": 700, + "nodeType": "StructuredDocumentation", + "src": "17026:412:0", + "text": " @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address." + }, + "id": 744, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nameLocation": "17452:8:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 707, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 702, + "mutability": "mutable", + "name": "owner", + "nameLocation": "17469:5:0", + "nodeType": "VariableDeclaration", + "scope": 744, + "src": "17461:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 701, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17461:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 704, + "mutability": "mutable", + "name": "spender", + "nameLocation": "17484:7:0", + "nodeType": "VariableDeclaration", + "scope": 744, + "src": "17476:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 703, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17476:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 706, + "mutability": "mutable", + "name": "amount", + "nameLocation": "17501:6:0", + "nodeType": "VariableDeclaration", + "scope": 744, + "src": "17493:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 705, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17493:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "17460:48:0" + }, + "returnParameters": { + "id": 708, + "nodeType": "ParameterList", + "parameters": [], + "src": "17526:0:0" + }, + "scope": 810, + "src": "17443:340:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 786, + "nodeType": "Block", + "src": "18154:321:0", + "statements": [ + { + "assignments": [ + 755 + ], + "declarations": [ + { + "constant": false, + "id": 755, + "mutability": "mutable", + "name": "currentAllowance", + "nameLocation": "18172:16:0", + "nodeType": "VariableDeclaration", + "scope": 786, + "src": "18164:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 754, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18164:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 760, + "initialValue": { + "arguments": [ + { + "id": 757, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 747, + "src": "18201:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 758, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 749, + "src": "18208:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 756, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "18191:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view returns (uint256)" + } + }, + "id": 759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18191:25:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18164:52:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 767, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 761, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 755, + "src": "18230:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 764, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18255:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 763, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18255:7:0", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 762, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "18250:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 765, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18250:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 766, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "18264:3:0", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "18250:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18230:37:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 785, + "nodeType": "IfStatement", + "src": "18226:243:0", + "trueBody": { + "id": 784, + "nodeType": "Block", + "src": "18269:200:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 769, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 755, + "src": "18291:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 770, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 751, + "src": "18311:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18291:26:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a20696e73756666696369656e7420616c6c6f77616e6365", + "id": 772, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18319:31:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe", + "typeString": "literal_string \"ERC20: insufficient allowance\"" + }, + "value": "ERC20: insufficient allowance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe", + "typeString": "literal_string \"ERC20: insufficient allowance\"" + } + ], + "id": 768, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "18283:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 773, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18283:68:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 774, + "nodeType": "ExpressionStatement", + "src": "18283:68:0" + }, + { + "id": 783, + "nodeType": "UncheckedBlock", + "src": "18365:94:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 776, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 747, + "src": "18402:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 777, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 749, + "src": "18409:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 778, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 755, + "src": "18418:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 779, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 751, + "src": "18437:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18418:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 775, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 744, + "src": "18393:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18393:51:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 782, + "nodeType": "ExpressionStatement", + "src": "18393:51:0" + } + ] + } + ] + } + } + ] + }, + "documentation": { + "id": 745, + "nodeType": "StructuredDocumentation", + "src": "17789:270:0", + "text": " @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n Does not update the allowance amount in case of infinite allowance.\n Revert if not enough allowance is available.\n Might emit an {Approval} event." + }, + "id": 787, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_spendAllowance", + "nameLocation": "18073:15:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 752, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 747, + "mutability": "mutable", + "name": "owner", + "nameLocation": "18097:5:0", + "nodeType": "VariableDeclaration", + "scope": 787, + "src": "18089:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 746, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18089:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 749, + "mutability": "mutable", + "name": "spender", + "nameLocation": "18112:7:0", + "nodeType": "VariableDeclaration", + "scope": 787, + "src": "18104:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 748, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18104:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 751, + "mutability": "mutable", + "name": "amount", + "nameLocation": "18129:6:0", + "nodeType": "VariableDeclaration", + "scope": 787, + "src": "18121:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 750, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18121:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "18088:48:0" + }, + "returnParameters": { + "id": 753, + "nodeType": "ParameterList", + "parameters": [], + "src": "18154:0:0" + }, + "scope": 810, + "src": "18064:411:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 797, + "nodeType": "Block", + "src": "19148:2:0", + "statements": [] + }, + "documentation": { + "id": 788, + "nodeType": "StructuredDocumentation", + "src": "18481:573:0", + "text": " @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]." + }, + "id": 798, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_beforeTokenTransfer", + "nameLocation": "19068:20:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 795, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 790, + "mutability": "mutable", + "name": "from", + "nameLocation": "19097:4:0", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "19089:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 789, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19089:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 792, + "mutability": "mutable", + "name": "to", + "nameLocation": "19111:2:0", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "19103:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 791, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19103:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 794, + "mutability": "mutable", + "name": "amount", + "nameLocation": "19123:6:0", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "19115:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 793, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19115:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "19088:42:0" + }, + "returnParameters": { + "id": 796, + "nodeType": "ParameterList", + "parameters": [], + "src": "19148:0:0" + }, + "scope": 810, + "src": "19059:91:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 808, + "nodeType": "Block", + "src": "19826:2:0", + "statements": [] + }, + "documentation": { + "id": 799, + "nodeType": "StructuredDocumentation", + "src": "19156:577:0", + "text": " @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n has been transferred to `to`.\n - when `from` is zero, `amount` tokens have been minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]." + }, + "id": 809, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_afterTokenTransfer", + "nameLocation": "19747:19:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 806, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 801, + "mutability": "mutable", + "name": "from", + "nameLocation": "19775:4:0", + "nodeType": "VariableDeclaration", + "scope": 809, + "src": "19767:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 800, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19767:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 803, + "mutability": "mutable", + "name": "to", + "nameLocation": "19789:2:0", + "nodeType": "VariableDeclaration", + "scope": 809, + "src": "19781:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 802, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19781:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 805, + "mutability": "mutable", + "name": "amount", + "nameLocation": "19801:6:0", + "nodeType": "VariableDeclaration", + "scope": 809, + "src": "19793:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 804, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19793:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "19766:42:0" + }, + "returnParameters": { + "id": 807, + "nodeType": "ParameterList", + "parameters": [], + "src": "19826:0:0" + }, + "scope": 810, + "src": "19738:90:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 3381, + "src": "8518:11312:0", + "usedErrors": [] + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 812, + "name": "Context", + "nameLocations": [ + "20303:7:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 20, + "src": "20303:7:0" + }, + "id": 813, + "nodeType": "InheritanceSpecifier", + "src": "20303:7:0" + }, + { + "baseName": { + "id": 814, + "name": "ERC20", + "nameLocations": [ + "20312:5:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 810, + "src": "20312:5:0" + }, + "id": 815, + "nodeType": "InheritanceSpecifier", + "src": "20312:5:0" + } + ], + "canonicalName": "ERC20Burnable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 811, + "nodeType": "StructuredDocumentation", + "src": "20059:208:0", + "text": " @dev Extension of {ERC20} that allows token holders to destroy both their own\n tokens and those that they have an allowance for, in a way that can be\n recognized off-chain (via event analysis)." + }, + "fullyImplemented": true, + "id": 850, + "linearizedBaseContracts": [ + 850, + 810, + 228, + 206, + 20 + ], + "name": "ERC20Burnable", + "nameLocation": "20286:13:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 827, + "nodeType": "Block", + "src": "20472:44:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 822, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "20488:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20488:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 824, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 818, + "src": "20502:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 821, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 699, + "src": "20482:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 825, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20482:27:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 826, + "nodeType": "ExpressionStatement", + "src": "20482:27:0" + } + ] + }, + "documentation": { + "id": 816, + "nodeType": "StructuredDocumentation", + "src": "20324:98:0", + "text": " @dev Destroys `amount` tokens from the caller.\n See {ERC20-_burn}." + }, + "functionSelector": "42966c68", + "id": 828, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burn", + "nameLocation": "20436:4:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 819, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 818, + "mutability": "mutable", + "name": "amount", + "nameLocation": "20449:6:0", + "nodeType": "VariableDeclaration", + "scope": 828, + "src": "20441:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 817, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20441:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "20440:16:0" + }, + "returnParameters": { + "id": 820, + "nodeType": "ParameterList", + "parameters": [], + "src": "20472:0:0" + }, + "scope": 850, + "src": "20427:89:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 848, + "nodeType": "Block", + "src": "20888:95:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 837, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 831, + "src": "20914:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 838, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "20923:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20923:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 840, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 833, + "src": "20937:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 836, + "name": "_spendAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 787, + "src": "20898:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20898:46:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 842, + "nodeType": "ExpressionStatement", + "src": "20898:46:0" + }, + { + "expression": { + "arguments": [ + { + "id": 844, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 831, + "src": "20960:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 845, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 833, + "src": "20969:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 843, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 699, + "src": "20954:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20954:22:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 847, + "nodeType": "ExpressionStatement", + "src": "20954:22:0" + } + ] + }, + "documentation": { + "id": 829, + "nodeType": "StructuredDocumentation", + "src": "20522:295:0", + "text": " @dev Destroys `amount` tokens from `account`, deducting from the caller's\n allowance.\n See {ERC20-_burn} and {ERC20-allowance}.\n Requirements:\n - the caller must have allowance for ``accounts``'s tokens of at least\n `amount`." + }, + "functionSelector": "79cc6790", + "id": 849, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burnFrom", + "nameLocation": "20831:8:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 834, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 831, + "mutability": "mutable", + "name": "account", + "nameLocation": "20848:7:0", + "nodeType": "VariableDeclaration", + "scope": 849, + "src": "20840:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 830, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20840:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 833, + "mutability": "mutable", + "name": "amount", + "nameLocation": "20865:6:0", + "nodeType": "VariableDeclaration", + "scope": 849, + "src": "20857:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 832, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20857:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "20839:33:0" + }, + "returnParameters": { + "id": 835, + "nodeType": "ParameterList", + "parameters": [], + "src": "20888:0:0" + }, + "scope": 850, + "src": "20822:161:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + } + ], + "scope": 3381, + "src": "20268:717:0", + "usedErrors": [] + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IUniswapV2Router01", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 1156, + "linearizedBaseContracts": [ + 1156 + ], + "name": "IUniswapV2Router01", + "nameLocation": "21087:18:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "c45a0155", + "id": 855, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "factory", + "nameLocation": "21121:7:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 851, + "nodeType": "ParameterList", + "parameters": [], + "src": "21128:2:0" + }, + "returnParameters": { + "id": 854, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 853, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 855, + "src": "21154:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 852, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21154:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "21153:9:0" + }, + "scope": 1156, + "src": "21112:51:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "ad5c4648", + "id": 860, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "WETH", + "nameLocation": "21177:4:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 856, + "nodeType": "ParameterList", + "parameters": [], + "src": "21181:2:0" + }, + "returnParameters": { + "id": 859, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 858, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 860, + "src": "21207:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 857, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21207:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "21206:9:0" + }, + "scope": 1156, + "src": "21168:48:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "e8e33700", + "id": 885, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "addLiquidity", + "nameLocation": "21231:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 877, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 862, + "mutability": "mutable", + "name": "tokenA", + "nameLocation": "21261:6:0", + "nodeType": "VariableDeclaration", + "scope": 885, + "src": "21253:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 861, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21253:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 864, + "mutability": "mutable", + "name": "tokenB", + "nameLocation": "21285:6:0", + "nodeType": "VariableDeclaration", + "scope": 885, + "src": "21277:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 863, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21277:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 866, + "mutability": "mutable", + "name": "amountADesired", + "nameLocation": "21306:14:0", + "nodeType": "VariableDeclaration", + "scope": 885, + "src": "21301:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 865, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21301:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 868, + "mutability": "mutable", + "name": "amountBDesired", + "nameLocation": "21335:14:0", + "nodeType": "VariableDeclaration", + "scope": 885, + "src": "21330:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 867, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21330:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 870, + "mutability": "mutable", + "name": "amountAMin", + "nameLocation": "21364:10:0", + "nodeType": "VariableDeclaration", + "scope": 885, + "src": "21359:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 869, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21359:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 872, + "mutability": "mutable", + "name": "amountBMin", + "nameLocation": "21389:10:0", + "nodeType": "VariableDeclaration", + "scope": 885, + "src": "21384:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 871, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21384:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 874, + "mutability": "mutable", + "name": "to", + "nameLocation": "21417:2:0", + "nodeType": "VariableDeclaration", + "scope": 885, + "src": "21409:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 873, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21409:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 876, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "21434:8:0", + "nodeType": "VariableDeclaration", + "scope": 885, + "src": "21429:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 875, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21429:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "21243:205:0" + }, + "returnParameters": { + "id": 884, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 879, + "mutability": "mutable", + "name": "amountA", + "nameLocation": "21472:7:0", + "nodeType": "VariableDeclaration", + "scope": 885, + "src": "21467:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 878, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21467:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 881, + "mutability": "mutable", + "name": "amountB", + "nameLocation": "21486:7:0", + "nodeType": "VariableDeclaration", + "scope": 885, + "src": "21481:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 880, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21481:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 883, + "mutability": "mutable", + "name": "liquidity", + "nameLocation": "21500:9:0", + "nodeType": "VariableDeclaration", + "scope": 885, + "src": "21495:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 882, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21495:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "21466:44:0" + }, + "scope": 1156, + "src": "21222:289:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "f305d719", + "id": 906, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "addLiquidityETH", + "nameLocation": "21525:15:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 898, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 887, + "mutability": "mutable", + "name": "token", + "nameLocation": "21558:5:0", + "nodeType": "VariableDeclaration", + "scope": 906, + "src": "21550:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 886, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21550:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 889, + "mutability": "mutable", + "name": "amountTokenDesired", + "nameLocation": "21578:18:0", + "nodeType": "VariableDeclaration", + "scope": 906, + "src": "21573:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 888, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21573:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 891, + "mutability": "mutable", + "name": "amountTokenMin", + "nameLocation": "21611:14:0", + "nodeType": "VariableDeclaration", + "scope": 906, + "src": "21606:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 890, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21606:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 893, + "mutability": "mutable", + "name": "amountETHMin", + "nameLocation": "21640:12:0", + "nodeType": "VariableDeclaration", + "scope": 906, + "src": "21635:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 892, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21635:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 895, + "mutability": "mutable", + "name": "to", + "nameLocation": "21670:2:0", + "nodeType": "VariableDeclaration", + "scope": 906, + "src": "21662:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 894, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21662:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 897, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "21687:8:0", + "nodeType": "VariableDeclaration", + "scope": 906, + "src": "21682:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 896, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21682:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "21540:161:0" + }, + "returnParameters": { + "id": 905, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 900, + "mutability": "mutable", + "name": "amountToken", + "nameLocation": "21733:11:0", + "nodeType": "VariableDeclaration", + "scope": 906, + "src": "21728:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 899, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21728:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 902, + "mutability": "mutable", + "name": "amountETH", + "nameLocation": "21751:9:0", + "nodeType": "VariableDeclaration", + "scope": 906, + "src": "21746:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 901, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21746:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 904, + "mutability": "mutable", + "name": "liquidity", + "nameLocation": "21767:9:0", + "nodeType": "VariableDeclaration", + "scope": 906, + "src": "21762:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 903, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21762:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "21727:50:0" + }, + "scope": 1156, + "src": "21516:262:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "baa2abde", + "id": 927, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeLiquidity", + "nameLocation": "21792:15:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 921, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 908, + "mutability": "mutable", + "name": "tokenA", + "nameLocation": "21825:6:0", + "nodeType": "VariableDeclaration", + "scope": 927, + "src": "21817:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 907, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21817:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 910, + "mutability": "mutable", + "name": "tokenB", + "nameLocation": "21849:6:0", + "nodeType": "VariableDeclaration", + "scope": 927, + "src": "21841:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 909, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21841:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 912, + "mutability": "mutable", + "name": "liquidity", + "nameLocation": "21870:9:0", + "nodeType": "VariableDeclaration", + "scope": 927, + "src": "21865:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 911, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21865:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 914, + "mutability": "mutable", + "name": "amountAMin", + "nameLocation": "21894:10:0", + "nodeType": "VariableDeclaration", + "scope": 927, + "src": "21889:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 913, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21889:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 916, + "mutability": "mutable", + "name": "amountBMin", + "nameLocation": "21919:10:0", + "nodeType": "VariableDeclaration", + "scope": 927, + "src": "21914:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 915, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21914:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 918, + "mutability": "mutable", + "name": "to", + "nameLocation": "21947:2:0", + "nodeType": "VariableDeclaration", + "scope": 927, + "src": "21939:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 917, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21939:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 920, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "21964:8:0", + "nodeType": "VariableDeclaration", + "scope": 927, + "src": "21959:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 919, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21959:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "21807:171:0" + }, + "returnParameters": { + "id": 926, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 923, + "mutability": "mutable", + "name": "amountA", + "nameLocation": "22002:7:0", + "nodeType": "VariableDeclaration", + "scope": 927, + "src": "21997:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 922, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21997:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 925, + "mutability": "mutable", + "name": "amountB", + "nameLocation": "22016:7:0", + "nodeType": "VariableDeclaration", + "scope": 927, + "src": "22011:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 924, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22011:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "21996:28:0" + }, + "scope": 1156, + "src": "21783:242:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "02751cec", + "id": 946, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeLiquidityETH", + "nameLocation": "22039:18:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 940, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 929, + "mutability": "mutable", + "name": "token", + "nameLocation": "22075:5:0", + "nodeType": "VariableDeclaration", + "scope": 946, + "src": "22067:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 928, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22067:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 931, + "mutability": "mutable", + "name": "liquidity", + "nameLocation": "22095:9:0", + "nodeType": "VariableDeclaration", + "scope": 946, + "src": "22090:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 930, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22090:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 933, + "mutability": "mutable", + "name": "amountTokenMin", + "nameLocation": "22119:14:0", + "nodeType": "VariableDeclaration", + "scope": 946, + "src": "22114:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 932, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22114:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 935, + "mutability": "mutable", + "name": "amountETHMin", + "nameLocation": "22148:12:0", + "nodeType": "VariableDeclaration", + "scope": 946, + "src": "22143:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 934, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22143:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 937, + "mutability": "mutable", + "name": "to", + "nameLocation": "22178:2:0", + "nodeType": "VariableDeclaration", + "scope": 946, + "src": "22170:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 936, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22170:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 939, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "22195:8:0", + "nodeType": "VariableDeclaration", + "scope": 946, + "src": "22190:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 938, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22190:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "22057:152:0" + }, + "returnParameters": { + "id": 945, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 942, + "mutability": "mutable", + "name": "amountToken", + "nameLocation": "22233:11:0", + "nodeType": "VariableDeclaration", + "scope": 946, + "src": "22228:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 941, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22228:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 944, + "mutability": "mutable", + "name": "amountETH", + "nameLocation": "22251:9:0", + "nodeType": "VariableDeclaration", + "scope": 946, + "src": "22246:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 943, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22246:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "22227:34:0" + }, + "scope": 1156, + "src": "22030:232:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "2195995c", + "id": 975, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeLiquidityWithPermit", + "nameLocation": "22276:25:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 969, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 948, + "mutability": "mutable", + "name": "tokenA", + "nameLocation": "22319:6:0", + "nodeType": "VariableDeclaration", + "scope": 975, + "src": "22311:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 947, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22311:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 950, + "mutability": "mutable", + "name": "tokenB", + "nameLocation": "22343:6:0", + "nodeType": "VariableDeclaration", + "scope": 975, + "src": "22335:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 949, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22335:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 952, + "mutability": "mutable", + "name": "liquidity", + "nameLocation": "22364:9:0", + "nodeType": "VariableDeclaration", + "scope": 975, + "src": "22359:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 951, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22359:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 954, + "mutability": "mutable", + "name": "amountAMin", + "nameLocation": "22388:10:0", + "nodeType": "VariableDeclaration", + "scope": 975, + "src": "22383:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 953, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22383:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 956, + "mutability": "mutable", + "name": "amountBMin", + "nameLocation": "22413:10:0", + "nodeType": "VariableDeclaration", + "scope": 975, + "src": "22408:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 955, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22408:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 958, + "mutability": "mutable", + "name": "to", + "nameLocation": "22441:2:0", + "nodeType": "VariableDeclaration", + "scope": 975, + "src": "22433:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 957, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22433:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 960, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "22458:8:0", + "nodeType": "VariableDeclaration", + "scope": 975, + "src": "22453:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 959, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22453:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 962, + "mutability": "mutable", + "name": "approveMax", + "nameLocation": "22481:10:0", + "nodeType": "VariableDeclaration", + "scope": 975, + "src": "22476:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 961, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "22476:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 964, + "mutability": "mutable", + "name": "v", + "nameLocation": "22499:1:0", + "nodeType": "VariableDeclaration", + "scope": 975, + "src": "22493:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 963, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "22493:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 966, + "mutability": "mutable", + "name": "r", + "nameLocation": "22510:1:0", + "nodeType": "VariableDeclaration", + "scope": 975, + "src": "22502:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 965, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "22502:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 968, + "mutability": "mutable", + "name": "s", + "nameLocation": "22521:1:0", + "nodeType": "VariableDeclaration", + "scope": 975, + "src": "22513:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 967, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "22513:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "22301:227:0" + }, + "returnParameters": { + "id": 974, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 971, + "mutability": "mutable", + "name": "amountA", + "nameLocation": "22552:7:0", + "nodeType": "VariableDeclaration", + "scope": 975, + "src": "22547:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 970, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22547:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 973, + "mutability": "mutable", + "name": "amountB", + "nameLocation": "22566:7:0", + "nodeType": "VariableDeclaration", + "scope": 975, + "src": "22561:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 972, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22561:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "22546:28:0" + }, + "scope": 1156, + "src": "22267:308:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "ded9382a", + "id": 1002, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeLiquidityETHWithPermit", + "nameLocation": "22589:28:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 996, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 977, + "mutability": "mutable", + "name": "token", + "nameLocation": "22635:5:0", + "nodeType": "VariableDeclaration", + "scope": 1002, + "src": "22627:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 976, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22627:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 979, + "mutability": "mutable", + "name": "liquidity", + "nameLocation": "22655:9:0", + "nodeType": "VariableDeclaration", + "scope": 1002, + "src": "22650:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 978, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22650:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 981, + "mutability": "mutable", + "name": "amountTokenMin", + "nameLocation": "22679:14:0", + "nodeType": "VariableDeclaration", + "scope": 1002, + "src": "22674:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 980, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22674:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 983, + "mutability": "mutable", + "name": "amountETHMin", + "nameLocation": "22708:12:0", + "nodeType": "VariableDeclaration", + "scope": 1002, + "src": "22703:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 982, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22703:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 985, + "mutability": "mutable", + "name": "to", + "nameLocation": "22738:2:0", + "nodeType": "VariableDeclaration", + "scope": 1002, + "src": "22730:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 984, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22730:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 987, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "22755:8:0", + "nodeType": "VariableDeclaration", + "scope": 1002, + "src": "22750:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 986, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22750:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 989, + "mutability": "mutable", + "name": "approveMax", + "nameLocation": "22778:10:0", + "nodeType": "VariableDeclaration", + "scope": 1002, + "src": "22773:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 988, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "22773:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 991, + "mutability": "mutable", + "name": "v", + "nameLocation": "22796:1:0", + "nodeType": "VariableDeclaration", + "scope": 1002, + "src": "22790:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 990, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "22790:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 993, + "mutability": "mutable", + "name": "r", + "nameLocation": "22807:1:0", + "nodeType": "VariableDeclaration", + "scope": 1002, + "src": "22799:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 992, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "22799:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 995, + "mutability": "mutable", + "name": "s", + "nameLocation": "22818:1:0", + "nodeType": "VariableDeclaration", + "scope": 1002, + "src": "22810:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 994, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "22810:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "22617:208:0" + }, + "returnParameters": { + "id": 1001, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 998, + "mutability": "mutable", + "name": "amountToken", + "nameLocation": "22849:11:0", + "nodeType": "VariableDeclaration", + "scope": 1002, + "src": "22844:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 997, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22844:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1000, + "mutability": "mutable", + "name": "amountETH", + "nameLocation": "22867:9:0", + "nodeType": "VariableDeclaration", + "scope": 1002, + "src": "22862:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 999, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22862:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "22843:34:0" + }, + "scope": 1156, + "src": "22580:298:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "38ed1739", + "id": 1019, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactTokensForTokens", + "nameLocation": "22892:24:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1014, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1004, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "22931:8:0", + "nodeType": "VariableDeclaration", + "scope": 1019, + "src": "22926:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1003, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22926:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1006, + "mutability": "mutable", + "name": "amountOutMin", + "nameLocation": "22954:12:0", + "nodeType": "VariableDeclaration", + "scope": 1019, + "src": "22949:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1005, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22949:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1009, + "mutability": "mutable", + "name": "path", + "nameLocation": "22995:4:0", + "nodeType": "VariableDeclaration", + "scope": 1019, + "src": "22976:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1007, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22976:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1008, + "nodeType": "ArrayTypeName", + "src": "22976:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1011, + "mutability": "mutable", + "name": "to", + "nameLocation": "23017:2:0", + "nodeType": "VariableDeclaration", + "scope": 1019, + "src": "23009:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1010, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23009:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1013, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "23034:8:0", + "nodeType": "VariableDeclaration", + "scope": 1019, + "src": "23029:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1012, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23029:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "22916:132:0" + }, + "returnParameters": { + "id": 1018, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1017, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "23081:7:0", + "nodeType": "VariableDeclaration", + "scope": 1019, + "src": "23067:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1015, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23067:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1016, + "nodeType": "ArrayTypeName", + "src": "23067:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "23066:23:0" + }, + "scope": 1156, + "src": "22883:207:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "8803dbee", + "id": 1036, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapTokensForExactTokens", + "nameLocation": "23104:24:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1031, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1021, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "23143:9:0", + "nodeType": "VariableDeclaration", + "scope": 1036, + "src": "23138:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1020, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23138:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1023, + "mutability": "mutable", + "name": "amountInMax", + "nameLocation": "23167:11:0", + "nodeType": "VariableDeclaration", + "scope": 1036, + "src": "23162:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1022, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23162:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1026, + "mutability": "mutable", + "name": "path", + "nameLocation": "23207:4:0", + "nodeType": "VariableDeclaration", + "scope": 1036, + "src": "23188:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1024, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23188:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1025, + "nodeType": "ArrayTypeName", + "src": "23188:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1028, + "mutability": "mutable", + "name": "to", + "nameLocation": "23229:2:0", + "nodeType": "VariableDeclaration", + "scope": 1036, + "src": "23221:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1027, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23221:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1030, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "23246:8:0", + "nodeType": "VariableDeclaration", + "scope": 1036, + "src": "23241:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1029, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23241:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "23128:132:0" + }, + "returnParameters": { + "id": 1035, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1034, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "23293:7:0", + "nodeType": "VariableDeclaration", + "scope": 1036, + "src": "23279:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1032, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23279:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1033, + "nodeType": "ArrayTypeName", + "src": "23279:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "23278:23:0" + }, + "scope": 1156, + "src": "23095:207:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "7ff36ab5", + "id": 1051, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactETHForTokens", + "nameLocation": "23316:21:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1046, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1038, + "mutability": "mutable", + "name": "amountOutMin", + "nameLocation": "23343:12:0", + "nodeType": "VariableDeclaration", + "scope": 1051, + "src": "23338:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1037, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23338:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1041, + "mutability": "mutable", + "name": "path", + "nameLocation": "23376:4:0", + "nodeType": "VariableDeclaration", + "scope": 1051, + "src": "23357:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1039, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23357:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1040, + "nodeType": "ArrayTypeName", + "src": "23357:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1043, + "mutability": "mutable", + "name": "to", + "nameLocation": "23390:2:0", + "nodeType": "VariableDeclaration", + "scope": 1051, + "src": "23382:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1042, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23382:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1045, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "23399:8:0", + "nodeType": "VariableDeclaration", + "scope": 1051, + "src": "23394:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1044, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23394:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "23337:71:0" + }, + "returnParameters": { + "id": 1050, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1049, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "23473:7:0", + "nodeType": "VariableDeclaration", + "scope": 1051, + "src": "23459:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1047, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23459:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1048, + "nodeType": "ArrayTypeName", + "src": "23459:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "23458:23:0" + }, + "scope": 1156, + "src": "23307:175:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "4a25d94a", + "id": 1068, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapTokensForExactETH", + "nameLocation": "23496:21:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1063, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1053, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "23523:9:0", + "nodeType": "VariableDeclaration", + "scope": 1068, + "src": "23518:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1052, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23518:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1055, + "mutability": "mutable", + "name": "amountInMax", + "nameLocation": "23539:11:0", + "nodeType": "VariableDeclaration", + "scope": 1068, + "src": "23534:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1054, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23534:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1058, + "mutability": "mutable", + "name": "path", + "nameLocation": "23571:4:0", + "nodeType": "VariableDeclaration", + "scope": 1068, + "src": "23552:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1056, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23552:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1057, + "nodeType": "ArrayTypeName", + "src": "23552:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1060, + "mutability": "mutable", + "name": "to", + "nameLocation": "23585:2:0", + "nodeType": "VariableDeclaration", + "scope": 1068, + "src": "23577:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1059, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23577:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1062, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "23594:8:0", + "nodeType": "VariableDeclaration", + "scope": 1068, + "src": "23589:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1061, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23589:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "23517:86:0" + }, + "returnParameters": { + "id": 1067, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1066, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "23652:7:0", + "nodeType": "VariableDeclaration", + "scope": 1068, + "src": "23638:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1064, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23638:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1065, + "nodeType": "ArrayTypeName", + "src": "23638:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "23637:23:0" + }, + "scope": 1156, + "src": "23487:174:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "18cbafe5", + "id": 1085, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactTokensForETH", + "nameLocation": "23675:21:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1080, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1070, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "23702:8:0", + "nodeType": "VariableDeclaration", + "scope": 1085, + "src": "23697:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1069, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23697:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1072, + "mutability": "mutable", + "name": "amountOutMin", + "nameLocation": "23717:12:0", + "nodeType": "VariableDeclaration", + "scope": 1085, + "src": "23712:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1071, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23712:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1075, + "mutability": "mutable", + "name": "path", + "nameLocation": "23750:4:0", + "nodeType": "VariableDeclaration", + "scope": 1085, + "src": "23731:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1073, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23731:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1074, + "nodeType": "ArrayTypeName", + "src": "23731:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1077, + "mutability": "mutable", + "name": "to", + "nameLocation": "23764:2:0", + "nodeType": "VariableDeclaration", + "scope": 1085, + "src": "23756:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1076, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23756:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1079, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "23773:8:0", + "nodeType": "VariableDeclaration", + "scope": 1085, + "src": "23768:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1078, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23768:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "23696:86:0" + }, + "returnParameters": { + "id": 1084, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1083, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "23831:7:0", + "nodeType": "VariableDeclaration", + "scope": 1085, + "src": "23817:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1081, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23817:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1082, + "nodeType": "ArrayTypeName", + "src": "23817:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "23816:23:0" + }, + "scope": 1156, + "src": "23666:174:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "fb3bdb41", + "id": 1100, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapETHForExactTokens", + "nameLocation": "23854:21:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1095, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1087, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "23881:9:0", + "nodeType": "VariableDeclaration", + "scope": 1100, + "src": "23876:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1086, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23876:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1090, + "mutability": "mutable", + "name": "path", + "nameLocation": "23911:4:0", + "nodeType": "VariableDeclaration", + "scope": 1100, + "src": "23892:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1088, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23892:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1089, + "nodeType": "ArrayTypeName", + "src": "23892:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1092, + "mutability": "mutable", + "name": "to", + "nameLocation": "23925:2:0", + "nodeType": "VariableDeclaration", + "scope": 1100, + "src": "23917:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1091, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23917:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1094, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "23934:8:0", + "nodeType": "VariableDeclaration", + "scope": 1100, + "src": "23929:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1093, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23929:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "23875:68:0" + }, + "returnParameters": { + "id": 1099, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1098, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "24008:7:0", + "nodeType": "VariableDeclaration", + "scope": 1100, + "src": "23994:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1096, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23994:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1097, + "nodeType": "ArrayTypeName", + "src": "23994:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "23993:23:0" + }, + "scope": 1156, + "src": "23845:172:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "ad615dec", + "id": 1111, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "quote", + "nameLocation": "24032:5:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1107, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1102, + "mutability": "mutable", + "name": "amountA", + "nameLocation": "24043:7:0", + "nodeType": "VariableDeclaration", + "scope": 1111, + "src": "24038:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1101, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24038:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1104, + "mutability": "mutable", + "name": "reserveA", + "nameLocation": "24057:8:0", + "nodeType": "VariableDeclaration", + "scope": 1111, + "src": "24052:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1103, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24052:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1106, + "mutability": "mutable", + "name": "reserveB", + "nameLocation": "24072:8:0", + "nodeType": "VariableDeclaration", + "scope": 1111, + "src": "24067:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1105, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24067:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "24037:44:0" + }, + "returnParameters": { + "id": 1110, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1109, + "mutability": "mutable", + "name": "amountB", + "nameLocation": "24110:7:0", + "nodeType": "VariableDeclaration", + "scope": 1111, + "src": "24105:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1108, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24105:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "24104:14:0" + }, + "scope": 1156, + "src": "24023:96:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "054d50d4", + "id": 1122, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getAmountOut", + "nameLocation": "24133:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1118, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1113, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "24151:8:0", + "nodeType": "VariableDeclaration", + "scope": 1122, + "src": "24146:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1112, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24146:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1115, + "mutability": "mutable", + "name": "reserveIn", + "nameLocation": "24166:9:0", + "nodeType": "VariableDeclaration", + "scope": 1122, + "src": "24161:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1114, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24161:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1117, + "mutability": "mutable", + "name": "reserveOut", + "nameLocation": "24182:10:0", + "nodeType": "VariableDeclaration", + "scope": 1122, + "src": "24177:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1116, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24177:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "24145:48:0" + }, + "returnParameters": { + "id": 1121, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1120, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "24222:9:0", + "nodeType": "VariableDeclaration", + "scope": 1122, + "src": "24217:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1119, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24217:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "24216:16:0" + }, + "scope": 1156, + "src": "24124:109:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "85f8c259", + "id": 1133, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getAmountIn", + "nameLocation": "24247:11:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1129, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1124, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "24264:9:0", + "nodeType": "VariableDeclaration", + "scope": 1133, + "src": "24259:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1123, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24259:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1126, + "mutability": "mutable", + "name": "reserveIn", + "nameLocation": "24280:9:0", + "nodeType": "VariableDeclaration", + "scope": 1133, + "src": "24275:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1125, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24275:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1128, + "mutability": "mutable", + "name": "reserveOut", + "nameLocation": "24296:10:0", + "nodeType": "VariableDeclaration", + "scope": 1133, + "src": "24291:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1127, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24291:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "24258:49:0" + }, + "returnParameters": { + "id": 1132, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1131, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "24336:8:0", + "nodeType": "VariableDeclaration", + "scope": 1133, + "src": "24331:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1130, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24331:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "24330:15:0" + }, + "scope": 1156, + "src": "24238:108:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "d06ca61f", + "id": 1144, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getAmountsOut", + "nameLocation": "24360:13:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1139, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1135, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "24379:8:0", + "nodeType": "VariableDeclaration", + "scope": 1144, + "src": "24374:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1134, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24374:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1138, + "mutability": "mutable", + "name": "path", + "nameLocation": "24408:4:0", + "nodeType": "VariableDeclaration", + "scope": 1144, + "src": "24389:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1136, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24389:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1137, + "nodeType": "ArrayTypeName", + "src": "24389:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "src": "24373:40:0" + }, + "returnParameters": { + "id": 1143, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1142, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "24451:7:0", + "nodeType": "VariableDeclaration", + "scope": 1144, + "src": "24437:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1140, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24437:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1141, + "nodeType": "ArrayTypeName", + "src": "24437:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "24436:23:0" + }, + "scope": 1156, + "src": "24351:109:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "1f00ca74", + "id": 1155, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getAmountsIn", + "nameLocation": "24474:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1150, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1146, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "24492:9:0", + "nodeType": "VariableDeclaration", + "scope": 1155, + "src": "24487:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1145, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24487:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1149, + "mutability": "mutable", + "name": "path", + "nameLocation": "24522:4:0", + "nodeType": "VariableDeclaration", + "scope": 1155, + "src": "24503:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1147, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24503:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1148, + "nodeType": "ArrayTypeName", + "src": "24503:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "src": "24486:41:0" + }, + "returnParameters": { + "id": 1154, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1153, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "24565:7:0", + "nodeType": "VariableDeclaration", + "scope": 1155, + "src": "24551:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1151, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24551:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1152, + "nodeType": "ArrayTypeName", + "src": "24551:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "24550:23:0" + }, + "scope": 1156, + "src": "24465:109:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 3381, + "src": "21077:3499:0", + "usedErrors": [] + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 1157, + "name": "IUniswapV2Router01", + "nameLocations": [ + "24700:18:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1156, + "src": "24700:18:0" + }, + "id": 1158, + "nodeType": "InheritanceSpecifier", + "src": "24700:18:0" + } + ], + "canonicalName": "IUniswapV2Router02", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 1241, + "linearizedBaseContracts": [ + 1241, + 1156 + ], + "name": "IUniswapV2Router02", + "nameLocation": "24678:18:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "af2979eb", + "id": 1175, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeLiquidityETHSupportingFeeOnTransferTokens", + "nameLocation": "24734:47:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1171, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1160, + "mutability": "mutable", + "name": "token", + "nameLocation": "24799:5:0", + "nodeType": "VariableDeclaration", + "scope": 1175, + "src": "24791:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1159, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24791:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1162, + "mutability": "mutable", + "name": "liquidity", + "nameLocation": "24819:9:0", + "nodeType": "VariableDeclaration", + "scope": 1175, + "src": "24814:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1161, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24814:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1164, + "mutability": "mutable", + "name": "amountTokenMin", + "nameLocation": "24843:14:0", + "nodeType": "VariableDeclaration", + "scope": 1175, + "src": "24838:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1163, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24838:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1166, + "mutability": "mutable", + "name": "amountETHMin", + "nameLocation": "24872:12:0", + "nodeType": "VariableDeclaration", + "scope": 1175, + "src": "24867:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1165, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24867:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1168, + "mutability": "mutable", + "name": "to", + "nameLocation": "24902:2:0", + "nodeType": "VariableDeclaration", + "scope": 1175, + "src": "24894:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1167, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24894:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1170, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "24919:8:0", + "nodeType": "VariableDeclaration", + "scope": 1175, + "src": "24914:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1169, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24914:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "24781:152:0" + }, + "returnParameters": { + "id": 1174, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1173, + "mutability": "mutable", + "name": "amountETH", + "nameLocation": "24957:9:0", + "nodeType": "VariableDeclaration", + "scope": 1175, + "src": "24952:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1172, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "24952:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "24951:16:0" + }, + "scope": 1241, + "src": "24725:243:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "5b0d5984", + "id": 1200, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", + "nameLocation": "24982:57:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1196, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1177, + "mutability": "mutable", + "name": "token", + "nameLocation": "25057:5:0", + "nodeType": "VariableDeclaration", + "scope": 1200, + "src": "25049:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1176, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25049:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1179, + "mutability": "mutable", + "name": "liquidity", + "nameLocation": "25077:9:0", + "nodeType": "VariableDeclaration", + "scope": 1200, + "src": "25072:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1178, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "25072:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1181, + "mutability": "mutable", + "name": "amountTokenMin", + "nameLocation": "25101:14:0", + "nodeType": "VariableDeclaration", + "scope": 1200, + "src": "25096:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1180, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "25096:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1183, + "mutability": "mutable", + "name": "amountETHMin", + "nameLocation": "25130:12:0", + "nodeType": "VariableDeclaration", + "scope": 1200, + "src": "25125:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1182, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "25125:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1185, + "mutability": "mutable", + "name": "to", + "nameLocation": "25160:2:0", + "nodeType": "VariableDeclaration", + "scope": 1200, + "src": "25152:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1184, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25152:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1187, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "25177:8:0", + "nodeType": "VariableDeclaration", + "scope": 1200, + "src": "25172:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1186, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "25172:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1189, + "mutability": "mutable", + "name": "approveMax", + "nameLocation": "25200:10:0", + "nodeType": "VariableDeclaration", + "scope": 1200, + "src": "25195:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1188, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "25195:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1191, + "mutability": "mutable", + "name": "v", + "nameLocation": "25218:1:0", + "nodeType": "VariableDeclaration", + "scope": 1200, + "src": "25212:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1190, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "25212:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1193, + "mutability": "mutable", + "name": "r", + "nameLocation": "25229:1:0", + "nodeType": "VariableDeclaration", + "scope": 1200, + "src": "25221:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1192, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "25221:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1195, + "mutability": "mutable", + "name": "s", + "nameLocation": "25240:1:0", + "nodeType": "VariableDeclaration", + "scope": 1200, + "src": "25232:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1194, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "25232:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "25039:208:0" + }, + "returnParameters": { + "id": 1199, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1198, + "mutability": "mutable", + "name": "amountETH", + "nameLocation": "25271:9:0", + "nodeType": "VariableDeclaration", + "scope": 1200, + "src": "25266:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1197, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "25266:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "25265:16:0" + }, + "scope": 1241, + "src": "24973:309:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "5c11d795", + "id": 1214, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "nameLocation": "25297:53:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1212, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1202, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "25365:8:0", + "nodeType": "VariableDeclaration", + "scope": 1214, + "src": "25360:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1201, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "25360:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1204, + "mutability": "mutable", + "name": "amountOutMin", + "nameLocation": "25388:12:0", + "nodeType": "VariableDeclaration", + "scope": 1214, + "src": "25383:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1203, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "25383:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1207, + "mutability": "mutable", + "name": "path", + "nameLocation": "25429:4:0", + "nodeType": "VariableDeclaration", + "scope": 1214, + "src": "25410:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1205, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25410:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1206, + "nodeType": "ArrayTypeName", + "src": "25410:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1209, + "mutability": "mutable", + "name": "to", + "nameLocation": "25451:2:0", + "nodeType": "VariableDeclaration", + "scope": 1214, + "src": "25443:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1208, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25443:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1211, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "25468:8:0", + "nodeType": "VariableDeclaration", + "scope": 1214, + "src": "25463:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1210, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "25463:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "25350:132:0" + }, + "returnParameters": { + "id": 1213, + "nodeType": "ParameterList", + "parameters": [], + "src": "25491:0:0" + }, + "scope": 1241, + "src": "25288:204:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "b6f9de95", + "id": 1226, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactETHForTokensSupportingFeeOnTransferTokens", + "nameLocation": "25506:50:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1224, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1216, + "mutability": "mutable", + "name": "amountOutMin", + "nameLocation": "25571:12:0", + "nodeType": "VariableDeclaration", + "scope": 1226, + "src": "25566:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1215, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "25566:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1219, + "mutability": "mutable", + "name": "path", + "nameLocation": "25612:4:0", + "nodeType": "VariableDeclaration", + "scope": 1226, + "src": "25593:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1217, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25593:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1218, + "nodeType": "ArrayTypeName", + "src": "25593:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1221, + "mutability": "mutable", + "name": "to", + "nameLocation": "25634:2:0", + "nodeType": "VariableDeclaration", + "scope": 1226, + "src": "25626:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1220, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25626:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1223, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "25651:8:0", + "nodeType": "VariableDeclaration", + "scope": 1226, + "src": "25646:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1222, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "25646:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "25556:109:0" + }, + "returnParameters": { + "id": 1225, + "nodeType": "ParameterList", + "parameters": [], + "src": "25682:0:0" + }, + "scope": 1241, + "src": "25497:186:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "791ac947", + "id": 1240, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactTokensForETHSupportingFeeOnTransferTokens", + "nameLocation": "25697:50:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1238, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1228, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "25762:8:0", + "nodeType": "VariableDeclaration", + "scope": 1240, + "src": "25757:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1227, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "25757:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1230, + "mutability": "mutable", + "name": "amountOutMin", + "nameLocation": "25785:12:0", + "nodeType": "VariableDeclaration", + "scope": 1240, + "src": "25780:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1229, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "25780:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1233, + "mutability": "mutable", + "name": "path", + "nameLocation": "25826:4:0", + "nodeType": "VariableDeclaration", + "scope": 1240, + "src": "25807:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1231, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25807:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1232, + "nodeType": "ArrayTypeName", + "src": "25807:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1235, + "mutability": "mutable", + "name": "to", + "nameLocation": "25848:2:0", + "nodeType": "VariableDeclaration", + "scope": 1240, + "src": "25840:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1234, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25840:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1237, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "25865:8:0", + "nodeType": "VariableDeclaration", + "scope": 1240, + "src": "25860:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1236, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "25860:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "25747:132:0" + }, + "returnParameters": { + "id": 1239, + "nodeType": "ParameterList", + "parameters": [], + "src": "25888:0:0" + }, + "scope": 1241, + "src": "25688:201:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 3381, + "src": "24668:1223:0", + "usedErrors": [] + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IUniswapV2Factory", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 1302, + "linearizedBaseContracts": [ + 1302 + ], + "name": "IUniswapV2Factory", + "nameLocation": "25980:17:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "eventSelector": "0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9", + "id": 1251, + "name": "PairCreated", + "nameLocation": "26010:11:0", + "nodeType": "EventDefinition", + "parameters": { + "id": 1250, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1243, + "indexed": true, + "mutability": "mutable", + "name": "token0", + "nameLocation": "26038:6:0", + "nodeType": "VariableDeclaration", + "scope": 1251, + "src": "26022:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1242, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26022:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1245, + "indexed": true, + "mutability": "mutable", + "name": "token1", + "nameLocation": "26062:6:0", + "nodeType": "VariableDeclaration", + "scope": 1251, + "src": "26046:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1244, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26046:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1247, + "indexed": false, + "mutability": "mutable", + "name": "pair", + "nameLocation": "26078:4:0", + "nodeType": "VariableDeclaration", + "scope": 1251, + "src": "26070:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1246, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26070:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1249, + "indexed": false, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1251, + "src": "26084:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1248, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "26084:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "26021:68:0" + }, + "src": "26004:86:0" + }, + { + "functionSelector": "017e7e58", + "id": 1256, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "feeTo", + "nameLocation": "26105:5:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1252, + "nodeType": "ParameterList", + "parameters": [], + "src": "26110:2:0" + }, + "returnParameters": { + "id": 1255, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1254, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1256, + "src": "26136:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1253, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26136:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "26135:9:0" + }, + "scope": 1302, + "src": "26096:49:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "094b7415", + "id": 1261, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "feeToSetter", + "nameLocation": "26159:11:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1257, + "nodeType": "ParameterList", + "parameters": [], + "src": "26170:2:0" + }, + "returnParameters": { + "id": 1260, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1259, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1261, + "src": "26196:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1258, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26196:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "26195:9:0" + }, + "scope": 1302, + "src": "26150:55:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "e6a43905", + "id": 1270, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getPair", + "nameLocation": "26220:7:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1266, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1263, + "mutability": "mutable", + "name": "tokenA", + "nameLocation": "26236:6:0", + "nodeType": "VariableDeclaration", + "scope": 1270, + "src": "26228:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1262, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26228:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1265, + "mutability": "mutable", + "name": "tokenB", + "nameLocation": "26252:6:0", + "nodeType": "VariableDeclaration", + "scope": 1270, + "src": "26244:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1264, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26244:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "26227:32:0" + }, + "returnParameters": { + "id": 1269, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1268, + "mutability": "mutable", + "name": "pair", + "nameLocation": "26291:4:0", + "nodeType": "VariableDeclaration", + "scope": 1270, + "src": "26283:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1267, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26283:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "26282:14:0" + }, + "scope": 1302, + "src": "26211:86:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "1e3dd18b", + "id": 1277, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allPairs", + "nameLocation": "26311:8:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1273, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1272, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1277, + "src": "26320:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1271, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "26320:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "26319:6:0" + }, + "returnParameters": { + "id": 1276, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1275, + "mutability": "mutable", + "name": "pair", + "nameLocation": "26357:4:0", + "nodeType": "VariableDeclaration", + "scope": 1277, + "src": "26349:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1274, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26349:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "26348:14:0" + }, + "scope": 1302, + "src": "26302:61:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "574f2ba3", + "id": 1282, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allPairsLength", + "nameLocation": "26377:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1278, + "nodeType": "ParameterList", + "parameters": [], + "src": "26391:2:0" + }, + "returnParameters": { + "id": 1281, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1280, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1282, + "src": "26417:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1279, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "26417:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "26416:6:0" + }, + "scope": 1302, + "src": "26368:55:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "c9c65396", + "id": 1291, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "createPair", + "nameLocation": "26438:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1287, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1284, + "mutability": "mutable", + "name": "tokenA", + "nameLocation": "26457:6:0", + "nodeType": "VariableDeclaration", + "scope": 1291, + "src": "26449:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1283, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26449:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1286, + "mutability": "mutable", + "name": "tokenB", + "nameLocation": "26473:6:0", + "nodeType": "VariableDeclaration", + "scope": 1291, + "src": "26465:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1285, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26465:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "26448:32:0" + }, + "returnParameters": { + "id": 1290, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1289, + "mutability": "mutable", + "name": "pair", + "nameLocation": "26507:4:0", + "nodeType": "VariableDeclaration", + "scope": 1291, + "src": "26499:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1288, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26499:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "26498:14:0" + }, + "scope": 1302, + "src": "26429:84:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "f46901ed", + "id": 1296, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setFeeTo", + "nameLocation": "26528:8:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1294, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1293, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1296, + "src": "26537:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1292, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26537:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "26536:9:0" + }, + "returnParameters": { + "id": 1295, + "nodeType": "ParameterList", + "parameters": [], + "src": "26554:0:0" + }, + "scope": 1302, + "src": "26519:36:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a2e74af6", + "id": 1301, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setFeeToSetter", + "nameLocation": "26569:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1299, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1298, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1301, + "src": "26584:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1297, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26584:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "26583:9:0" + }, + "returnParameters": { + "id": 1300, + "nodeType": "ParameterList", + "parameters": [], + "src": "26601:0:0" + }, + "scope": 1302, + "src": "26560:42:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 3381, + "src": "25970:634:0", + "usedErrors": [] + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IDividendTracker", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 1336, + "linearizedBaseContracts": [ + 1336 + ], + "name": "IDividendTracker", + "nameLocation": "26708:16:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "31e79db0", + "id": 1307, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "excludeFromDividends", + "nameLocation": "26740:20:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1305, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1304, + "mutability": "mutable", + "name": "account", + "nameLocation": "26769:7:0", + "nodeType": "VariableDeclaration", + "scope": 1307, + "src": "26761:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1303, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26761:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "26760:17:0" + }, + "returnParameters": { + "id": 1306, + "nodeType": "ParameterList", + "parameters": [], + "src": "26786:0:0" + }, + "scope": 1336, + "src": "26731:56:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "e30443bc", + "id": 1314, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setBalance", + "nameLocation": "26802:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1312, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1309, + "mutability": "mutable", + "name": "account", + "nameLocation": "26829:7:0", + "nodeType": "VariableDeclaration", + "scope": 1314, + "src": "26813:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 1308, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26813:15:0", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1311, + "mutability": "mutable", + "name": "newBalance", + "nameLocation": "26846:10:0", + "nodeType": "VariableDeclaration", + "scope": 1314, + "src": "26838:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1310, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26838:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "26812:45:0" + }, + "returnParameters": { + "id": 1313, + "nodeType": "ParameterList", + "parameters": [], + "src": "26866:0:0" + }, + "scope": 1336, + "src": "26793:74:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "ffb2c479", + "id": 1325, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "process", + "nameLocation": "26882:7:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1317, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1316, + "mutability": "mutable", + "name": "gas", + "nameLocation": "26898:3:0", + "nodeType": "VariableDeclaration", + "scope": 1325, + "src": "26890:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1315, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26890:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "26889:13:0" + }, + "returnParameters": { + "id": 1324, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1319, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1325, + "src": "26921:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1318, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26921:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1321, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1325, + "src": "26930:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1320, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26930:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1323, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1325, + "src": "26939:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1322, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26939:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "26920:27:0" + }, + "scope": 1336, + "src": "26873:75:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "3243c791", + "id": 1330, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "distributeDividends", + "nameLocation": "26963:19:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1328, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1327, + "mutability": "mutable", + "name": "amount", + "nameLocation": "26991:6:0", + "nodeType": "VariableDeclaration", + "scope": 1330, + "src": "26983:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1326, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26983:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "26982:16:0" + }, + "returnParameters": { + "id": 1329, + "nodeType": "ParameterList", + "parameters": [], + "src": "27007:0:0" + }, + "scope": 1336, + "src": "26954:54:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "d1af0c7d", + "id": 1335, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "rewardsToken", + "nameLocation": "27023:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1331, + "nodeType": "ParameterList", + "parameters": [], + "src": "27035:2:0" + }, + "returnParameters": { + "id": 1334, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1333, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1335, + "src": "27061:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1332, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27061:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "27060:9:0" + }, + "scope": 1336, + "src": "27014:56:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 3381, + "src": "26698:374:0", + "usedErrors": [] + }, + { + "id": 1337, + "literals": [ + "solidity", + "0.8", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "27154:23:0" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 1338, + "name": "ERC20Burnable", + "nameLocations": [ + "27225:13:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 850, + "src": "27225:13:0" + }, + "id": 1339, + "nodeType": "InheritanceSpecifier", + "src": "27225:13:0" + }, + { + "baseName": { + "id": 1340, + "name": "Ownable", + "nameLocations": [ + "27240:7:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 130, + "src": "27240:7:0" + }, + "id": 1341, + "nodeType": "InheritanceSpecifier", + "src": "27240:7:0" + } + ], + "canonicalName": "Token", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 3380, + "linearizedBaseContracts": [ + 3380, + 130, + 850, + 810, + 228, + 206, + 20 + ], + "name": "Token", + "nameLocation": "27216:5:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "functionSelector": "452ed4f1", + "id": 1343, + "mutability": "mutable", + "name": "lpPair", + "nameLocation": "27379:6:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "27364:21:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1342, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27364:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "f3117322", + "id": 1346, + "mutability": "mutable", + "name": "platformFeeAddresses", + "nameLocation": "27435:20:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "27418:37:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1344, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27418:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1345, + "nodeType": "ArrayTypeName", + "src": "27418:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "c5f956af", + "id": 1348, + "mutability": "mutable", + "name": "treasuryAddress", + "nameLocation": "27506:15:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "27491:30:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1347, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27491:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "35dcb05e", + "id": 1350, + "mutability": "mutable", + "name": "dividendTokenAddress", + "nameLocation": "27570:20:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "27555:35:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1349, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27555:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "883bfec4", + "id": 1352, + "mutability": "mutable", + "name": "dividentTokenBridgeAddress", + "nameLocation": "27637:26:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "27622:41:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1351, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27622:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "0445b667", + "id": 1354, + "mutability": "mutable", + "name": "swapThreshold", + "nameLocation": "27828:13:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "27813:28:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1353, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27813:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "a335d4ff", + "id": 1357, + "mutability": "constant", + "name": "TAX_DIVISOR", + "nameLocation": "27892:11:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "27868:43:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1355, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27868:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3130303030", + "id": 1356, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27906:5:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + }, + "value": "10000" + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "aa4bde28", + "id": 1359, + "mutability": "mutable", + "name": "maxWalletAmount", + "nameLocation": "27970:15:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "27955:30:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1358, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27955:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "bd74c046", + "id": 1361, + "mutability": "mutable", + "name": "platformFeeAmount", + "nameLocation": "28041:17:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "28026:32:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1360, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28026:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "148829f5", + "id": 1363, + "mutability": "mutable", + "name": "preMintAmount", + "nameLocation": "28112:13:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "28097:28:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1362, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28097:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "560d52d4", + "id": 1366, + "mutability": "constant", + "name": "PLATFORM_FEE_PERCENT", + "nameLocation": "28191:20:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "28167:49:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1364, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28167:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3530", + "id": 1365, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28214:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_50_by_1", + "typeString": "int_const 50" + }, + "value": "50" + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "13fa254a", + "id": 1369, + "mutability": "mutable", + "name": "platformFeePercents", + "nameLocation": "28283:19:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "28266:36:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1367, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28266:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1368, + "nodeType": "ArrayTypeName", + "src": "28266:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "deb5896e", + "id": 1371, + "mutability": "mutable", + "name": "autoLiquidityPercent", + "nameLocation": "28323:20:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "28308:35:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1370, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28308:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "c8c8ebe4", + "id": 1373, + "mutability": "mutable", + "name": "maxTransactionAmount", + "nameLocation": "28386:20:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "28371:35:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1372, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28371:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "6f15d975", + "id": 1375, + "mutability": "mutable", + "name": "buyBackThreshold", + "nameLocation": "28427:16:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "28412:31:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1374, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28412:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "4a569e94", + "id": 1377, + "mutability": "mutable", + "name": "buyBackPercent", + "nameLocation": "28485:14:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "28470:29:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1376, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28470:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "6aa5b37f", + "id": 1379, + "mutability": "mutable", + "name": "maxBuyLimit", + "nameLocation": "28520:11:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "28505:26:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1378, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28505:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "edf731c5", + "id": 1381, + "mutability": "mutable", + "name": "initialDelayTime", + "nameLocation": "28552:16:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "28537:31:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1380, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28537:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "094d776f", + "id": 1383, + "mutability": "mutable", + "name": "totalDelayTime", + "nameLocation": "28644:14:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "28629:29:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1382, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28629:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "1b11c874", + "id": 1385, + "mutability": "mutable", + "name": "maxGasPriceLimit", + "nameLocation": "28679:16:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "28664:31:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1384, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28664:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "3d90fff9", + "id": 1387, + "mutability": "mutable", + "name": "timeDelayBetweenTx", + "nameLocation": "28749:18:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "28734:33:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1386, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28734:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "9c1b8af5", + "id": 1389, + "mutability": "mutable", + "name": "gasForProcessing", + "nameLocation": "28809:16:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "28794:31:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1388, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28794:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "1e94ed07", + "id": 1391, + "mutability": "mutable", + "name": "distributionRewardsPercent", + "nameLocation": "28846:26:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "28831:41:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1390, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28831:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "d8306786", + "id": 1393, + "mutability": "mutable", + "name": "inSwap", + "nameLocation": "29001:6:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "28989:18:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1392, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "28989:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "f9017966", + "id": 1395, + "mutability": "mutable", + "name": "gasLimitActive", + "nameLocation": "29060:14:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "29048:26:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1394, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "29048:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "c876d0b9", + "id": 1397, + "mutability": "mutable", + "name": "transferDelayEnabled", + "nameLocation": "29092:20:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "29080:32:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1396, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "29080:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "768dc710", + "id": 1401, + "mutability": "mutable", + "name": "_isExcludedFromFee", + "nameLocation": "29218:18:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "29186:50:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 1400, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 1398, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "29194:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "29186:24:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 1399, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "29205:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "07866291", + "id": 1405, + "mutability": "mutable", + "name": "_isExcludedFromMaxTx", + "nameLocation": "29309:20:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "29277:52:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 1404, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 1402, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "29285:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "29277:24:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 1403, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "29296:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "b62496f5", + "id": 1409, + "mutability": "mutable", + "name": "automatedMarketMakerPairs", + "nameLocation": "29402:25:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "29370:57:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 1408, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 1406, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "29378:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "29370:24:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 1407, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "29389:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "cd5f101d", + "id": 1413, + "mutability": "mutable", + "name": "_holderLastTransferTimestamp", + "nameLocation": "29468:28:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "29433:63:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 1412, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 1410, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "29441:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "29433:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 1411, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29452:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "public" + }, + { + "canonicalName": "Token.Fees", + "id": 1420, + "members": [ + { + "constant": false, + "id": 1415, + "mutability": "mutable", + "name": "buyFee", + "nameLocation": "29696:6:0", + "nodeType": "VariableDeclaration", + "scope": 1420, + "src": "29689:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 1414, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "29689:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1417, + "mutability": "mutable", + "name": "sellFee", + "nameLocation": "29749:7:0", + "nodeType": "VariableDeclaration", + "scope": 1420, + "src": "29742:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 1416, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "29742:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1419, + "mutability": "mutable", + "name": "transferFee", + "nameLocation": "29804:11:0", + "nodeType": "VariableDeclaration", + "scope": 1420, + "src": "29797:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 1418, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "29797:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "name": "Fees", + "nameLocation": "29674:4:0", + "nodeType": "StructDefinition", + "scope": 3380, + "src": "29667:190:0", + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "f887ea40", + "id": 1423, + "mutability": "mutable", + "name": "router", + "nameLocation": "29999:6:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "29973:32:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + }, + "typeName": { + "id": 1422, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1421, + "name": "IUniswapV2Router02", + "nameLocations": [ + "29973:18:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1241, + "src": "29973:18:0" + }, + "referencedDeclaration": 1241, + "src": "29973:18:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "b559f9b6", + "id": 1426, + "mutability": "mutable", + "name": "tokenDividendTracker", + "nameLocation": "30035:20:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "30011:44:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDividendTracker_$1336", + "typeString": "contract IDividendTracker" + }, + "typeName": { + "id": 1425, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1424, + "name": "IDividendTracker", + "nameLocations": [ + "30011:16:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1336, + "src": "30011:16:0" + }, + "referencedDeclaration": 1336, + "src": "30011:16:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDividendTracker_$1336", + "typeString": "contract IDividendTracker" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "1c06a7e1", + "id": 1429, + "mutability": "mutable", + "name": "_feesRates", + "nameLocation": "30073:10:0", + "nodeType": "VariableDeclaration", + "scope": 3380, + "src": "30061:22:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fees_$1420_storage", + "typeString": "struct Token.Fees" + }, + "typeName": { + "id": 1428, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1427, + "name": "Fees", + "nameLocations": [ + "30061:4:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1420, + "src": "30061:4:0" + }, + "referencedDeclaration": 1420, + "src": "30061:4:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fees_$1420_storage_ptr", + "typeString": "struct Token.Fees" + } + }, + "visibility": "public" + }, + { + "body": { + "id": 1440, + "nodeType": "Block", + "src": "30234:65:0", + "statements": [ + { + "expression": { + "id": 1433, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1431, + "name": "inSwap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1393, + "src": "30244:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 1432, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30253:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "30244:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1434, + "nodeType": "ExpressionStatement", + "src": "30244:13:0" + }, + { + "id": 1435, + "nodeType": "PlaceholderStatement", + "src": "30267:1:0" + }, + { + "expression": { + "id": 1438, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1436, + "name": "inSwap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1393, + "src": "30278:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 1437, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30287:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "30278:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1439, + "nodeType": "ExpressionStatement", + "src": "30278:14:0" + } + ] + }, + "id": 1441, + "name": "swapping", + "nameLocation": "30223:8:0", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1430, + "nodeType": "ParameterList", + "parameters": [], + "src": "30231:2:0" + }, + "src": "30214:85:0", + "virtual": false, + "visibility": "internal" + }, + { + "anonymous": false, + "eventSelector": "c864333d6121033635ab41b29ae52f10a22cf4438c3e4f1c4c68518feb2f8a98", + "id": 1455, + "name": "ProcessedDividendTracker", + "nameLocation": "30421:24:0", + "nodeType": "EventDefinition", + "parameters": { + "id": 1454, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1443, + "indexed": false, + "mutability": "mutable", + "name": "iterations", + "nameLocation": "30463:10:0", + "nodeType": "VariableDeclaration", + "scope": 1455, + "src": "30455:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1442, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30455:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1445, + "indexed": false, + "mutability": "mutable", + "name": "claims", + "nameLocation": "30491:6:0", + "nodeType": "VariableDeclaration", + "scope": 1455, + "src": "30483:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1444, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30483:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1447, + "indexed": false, + "mutability": "mutable", + "name": "lastProcessedIndex", + "nameLocation": "30515:18:0", + "nodeType": "VariableDeclaration", + "scope": 1455, + "src": "30507:26:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1446, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30507:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1449, + "indexed": true, + "mutability": "mutable", + "name": "automatic", + "nameLocation": "30556:9:0", + "nodeType": "VariableDeclaration", + "scope": 1455, + "src": "30543:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1448, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "30543:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1451, + "indexed": false, + "mutability": "mutable", + "name": "gas", + "nameLocation": "30583:3:0", + "nodeType": "VariableDeclaration", + "scope": 1455, + "src": "30575:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1450, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30575:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1453, + "indexed": true, + "mutability": "mutable", + "name": "processor", + "nameLocation": "30612:9:0", + "nodeType": "VariableDeclaration", + "scope": 1455, + "src": "30596:25:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1452, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "30596:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "30445:182:0" + }, + "src": "30415:213:0" + }, + { + "anonymous": false, + "eventSelector": "80195cc573b02cc48460cbca6e6e4cc85ddb91959d946e1c3025ea3d87942dc3", + "id": 1461, + "name": "SendDividends", + "nameLocation": "30639:13:0", + "nodeType": "EventDefinition", + "parameters": { + "id": 1460, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1457, + "indexed": false, + "mutability": "mutable", + "name": "tokensSwapped", + "nameLocation": "30661:13:0", + "nodeType": "VariableDeclaration", + "scope": 1461, + "src": "30653:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1456, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30653:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1459, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "30684:6:0", + "nodeType": "VariableDeclaration", + "scope": 1461, + "src": "30676:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1458, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30676:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "30652:39:0" + }, + "src": "30633:59:0" + }, + { + "body": { + "id": 1840, + "nodeType": "Block", + "src": "31133:3912:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1486, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1483, + "name": "addresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1472, + "src": "31151:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "31161:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "31151:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "32", + "id": 1485, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31171:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "31151:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "496e76616c6964206164647265737320617267756d656e74", + "id": 1487, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31174:26:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_59f7e4ef889b7837a13c04697a37dd3dd153b2771bb1f183a75e35ef2268dcdb", + "typeString": "literal_string \"Invalid address argument\"" + }, + "value": "Invalid address argument" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_59f7e4ef889b7837a13c04697a37dd3dd153b2771bb1f183a75e35ef2268dcdb", + "typeString": "literal_string \"Invalid address argument\"" + } + ], + "id": 1482, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "31143:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31143:58:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1489, + "nodeType": "ExpressionStatement", + "src": "31143:58:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1491, + "name": "percents", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1475, + "src": "31219:8:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", + "typeString": "uint16[] memory" + } + }, + "id": 1492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "31228:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "31219:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "35", + "id": 1493, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31238:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "src": "31219:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "496e76616c69642070657263656e7420617267756d656e74", + "id": 1495, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31241:26:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7b25d5b748df40d4a1da2632036159dd607983b12c16e120be2ad26918d749bc", + "typeString": "literal_string \"Invalid percent argument\"" + }, + "value": "Invalid percent argument" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7b25d5b748df40d4a1da2632036159dd607983b12c16e120be2ad26918d749bc", + "typeString": "literal_string \"Invalid percent argument\"" + } + ], + "id": 1490, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "31211:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1496, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31211:57:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1497, + "nodeType": "ExpressionStatement", + "src": "31211:57:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "id": 1503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 1499, + "name": "percents", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1475, + "src": "31286:8:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", + "typeString": "uint16[] memory" + } + }, + "id": 1501, + "indexExpression": { + "hexValue": "31", + "id": 1500, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31295:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31286:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "hexValue": "39393030", + "id": 1502, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31301:4:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_9900_by_1", + "typeString": "int_const 9900" + }, + "value": "9900" + }, + "src": "31286:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "id": 1508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 1504, + "name": "percents", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1475, + "src": "31309:8:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", + "typeString": "uint16[] memory" + } + }, + "id": 1506, + "indexExpression": { + "hexValue": "32", + "id": 1505, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31318:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31309:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "hexValue": "39393030", + "id": 1507, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31324:4:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_9900_by_1", + "typeString": "int_const 9900" + }, + "value": "9900" + }, + "src": "31309:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "31286:42:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "546f6f20686967687420746178", + "id": 1510, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31330:15:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fb13f92a6668ec2822ba83dd0fb39751e3d0f025940ec85cae1d62e2a5d06a7a", + "typeString": "literal_string \"Too hight tax\"" + }, + "value": "Too hight tax" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fb13f92a6668ec2822ba83dd0fb39751e3d0f025940ec85cae1d62e2a5d06a7a", + "typeString": "literal_string \"Too hight tax\"" + } + ], + "id": 1498, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "31278:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1511, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31278:68:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1512, + "nodeType": "ExpressionStatement", + "src": "31278:68:0" + }, + { + "expression": { + "id": 1517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1513, + "name": "treasuryAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1348, + "src": "31405:15:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "id": 1514, + "name": "addresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1472, + "src": "31423:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1516, + "indexExpression": { + "hexValue": "31", + "id": 1515, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31433:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31423:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "31405:30:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1518, + "nodeType": "ExpressionStatement", + "src": "31405:30:0" + }, + { + "assignments": [ + 1520 + ], + "declarations": [ + { + "constant": false, + "id": 1520, + "mutability": "mutable", + "name": "burnAmount", + "nameLocation": "31454:10:0", + "nodeType": "VariableDeclaration", + "scope": 1840, + "src": "31446:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1519, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31446:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1529, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1521, + "name": "supply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1467, + "src": "31468:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "baseExpression": { + "id": 1522, + "name": "percents", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1475, + "src": "31477:8:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", + "typeString": "uint16[] memory" + } + }, + "id": 1524, + "indexExpression": { + "hexValue": "30", + "id": 1523, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31486:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31477:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "31468:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1526, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "31467:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 1527, + "name": "TAX_DIVISOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1357, + "src": "31492:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31467:36:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31446:57:0" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 1531, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "31519:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "31523:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "31519:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1533, + "name": "supply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1467, + "src": "31531:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 1534, + "name": "preMint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1469, + "src": "31540:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31531:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 1536, + "name": "burnAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1520, + "src": "31550:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31531:29:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1530, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 627, + "src": "31513:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31513:48:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1539, + "nodeType": "ExpressionStatement", + "src": "31513:48:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1540, + "name": "preMint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1469, + "src": "31575:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 1541, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31585:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "31575:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1548, + "nodeType": "IfStatement", + "src": "31571:48:0", + "trueBody": { + "expression": { + "arguments": [ + { + "id": 1544, + "name": "treasuryAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1348, + "src": "31594:15:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1545, + "name": "preMint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1469, + "src": "31611:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1543, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 627, + "src": "31588:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31588:31:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1547, + "nodeType": "ExpressionStatement", + "src": "31588:31:0" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1551, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1549, + "name": "burnAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1520, + "src": "31633:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 1550, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31646:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "31633:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1560, + "nodeType": "IfStatement", + "src": "31629:54:0", + "trueBody": { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "307864656164", + "id": 1555, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31663:6:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_57005_by_1", + "typeString": "int_const 57005" + }, + "value": "0xdead" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_57005_by_1", + "typeString": "int_const 57005" + } + ], + "id": 1554, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "31655:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1553, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31655:7:0", + "typeDescriptions": {} + } + }, + "id": 1556, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31655:15:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1557, + "name": "burnAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1520, + "src": "31672:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1552, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 627, + "src": "31649:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31649:34:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1559, + "nodeType": "ExpressionStatement", + "src": "31649:34:0" + } + }, + { + "expression": { + "id": 1577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1561, + "name": "maxWalletAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1359, + "src": "31694:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "id": 1566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 1562, + "name": "percents", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1475, + "src": "31712:8:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", + "typeString": "uint16[] memory" + } + }, + "id": 1564, + "indexExpression": { + "hexValue": "33", + "id": 1563, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31721:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31712:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1565, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31727:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "31712:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1568, + "name": "supply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1467, + "src": "31765:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "baseExpression": { + "id": 1569, + "name": "percents", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1475, + "src": "31774:8:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", + "typeString": "uint16[] memory" + } + }, + "id": 1571, + "indexExpression": { + "hexValue": "33", + "id": 1570, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31783:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31774:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "31765:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1573, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "31764:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 1574, + "name": "TAX_DIVISOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1357, + "src": "31789:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31764:36:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "31712:88:0", + "trueExpression": { + "id": 1567, + "name": "supply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1467, + "src": "31743:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31694:106:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1578, + "nodeType": "ExpressionStatement", + "src": "31694:106:0" + }, + { + "expression": { + "id": 1595, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1579, + "name": "maxTransactionAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1373, + "src": "31810:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "id": 1584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 1580, + "name": "percents", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1475, + "src": "31833:8:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", + "typeString": "uint16[] memory" + } + }, + "id": 1582, + "indexExpression": { + "hexValue": "34", + "id": 1581, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31842:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31833:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1583, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31848:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "31833:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1586, + "name": "supply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1467, + "src": "31886:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "baseExpression": { + "id": 1587, + "name": "percents", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1475, + "src": "31895:8:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", + "typeString": "uint16[] memory" + } + }, + "id": 1589, + "indexExpression": { + "hexValue": "34", + "id": 1588, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31904:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31895:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "31886:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1591, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "31885:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 1592, + "name": "TAX_DIVISOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1357, + "src": "31910:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31885:36:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "31833:88:0", + "trueExpression": { + "id": 1585, + "name": "supply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1467, + "src": "31864:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31810:111:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1596, + "nodeType": "ExpressionStatement", + "src": "31810:111:0" + }, + { + "expression": { + "arguments": [ + { + "hexValue": "307837413933393336633537353837413541306465316242633064393962363131333933393436393843", + "id": 1600, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31958:42:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "value": "0x7A93936c57587A5A0de1bBc0d99b61139394698C" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 1597, + "name": "platformFeeAddresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1346, + "src": "31932:20:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "31953:4:0", + "memberName": "push", + "nodeType": "MemberAccess", + "src": "31932:25:0", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$", + "typeString": "function (address[] storage pointer,address)" + } + }, + "id": 1601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31932:69:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1602, + "nodeType": "ExpressionStatement", + "src": "31932:69:0" + }, + { + "expression": { + "arguments": [ + { + "hexValue": "307831386262314437453544443764643030313761383238644142463136343732643966443163366145", + "id": 1606, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32037:42:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "value": "0x18bb1D7E5DD7dd0017a828dABF16472d9fD1c6aE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 1603, + "name": "platformFeeAddresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1346, + "src": "32011:20:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "32032:4:0", + "memberName": "push", + "nodeType": "MemberAccess", + "src": "32011:25:0", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$", + "typeString": "function (address[] storage pointer,address)" + } + }, + "id": 1607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32011:69:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1608, + "nodeType": "ExpressionStatement", + "src": "32011:69:0" + }, + { + "expression": { + "arguments": [ + { + "hexValue": "38303030", + "id": 1612, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32116:4:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_8000_by_1", + "typeString": "int_const 8000" + }, + "value": "8000" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_8000_by_1", + "typeString": "int_const 8000" + } + ], + "expression": { + "id": 1609, + "name": "platformFeePercents", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1369, + "src": "32091:19:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 1611, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "32111:4:0", + "memberName": "push", + "nodeType": "MemberAccess", + "src": "32091:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$", + "typeString": "function (uint256[] storage pointer,uint256)" + } + }, + "id": 1613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32091:30:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1614, + "nodeType": "ExpressionStatement", + "src": "32091:30:0" + }, + { + "expression": { + "arguments": [ + { + "hexValue": "32303030", + "id": 1618, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32156:4:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2000_by_1", + "typeString": "int_const 2000" + }, + "value": "2000" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_2000_by_1", + "typeString": "int_const 2000" + } + ], + "expression": { + "id": 1615, + "name": "platformFeePercents", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1369, + "src": "32131:19:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 1617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "32151:4:0", + "memberName": "push", + "nodeType": "MemberAccess", + "src": "32131:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$", + "typeString": "function (uint256[] storage pointer,uint256)" + } + }, + "id": 1619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32131:30:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1620, + "nodeType": "ExpressionStatement", + "src": "32131:30:0" + }, + { + "expression": { + "id": 1631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1621, + "name": "_feesRates", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1429, + "src": "32196:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fees_$1420_storage", + "typeString": "struct Token.Fees storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "baseExpression": { + "id": 1623, + "name": "percents", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1475, + "src": "32236:8:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", + "typeString": "uint16[] memory" + } + }, + "id": 1625, + "indexExpression": { + "hexValue": "31", + "id": 1624, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32245:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32236:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "baseExpression": { + "id": 1626, + "name": "percents", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1475, + "src": "32270:8:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", + "typeString": "uint16[] memory" + } + }, + "id": 1628, + "indexExpression": { + "hexValue": "32", + "id": 1627, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32279:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32270:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "hexValue": "30", + "id": 1629, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32308:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1622, + "name": "Fees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1420, + "src": "32209:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_Fees_$1420_storage_ptr_$", + "typeString": "type(struct Token.Fees storage pointer)" + } + }, + "id": 1630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [ + "32228:6:0", + "32261:7:0", + "32295:11:0" + ], + "names": [ + "buyFee", + "sellFee", + "transferFee" + ], + "nodeType": "FunctionCall", + "src": "32209:111:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fees_$1420_memory_ptr", + "typeString": "struct Token.Fees memory" + } + }, + "src": "32196:124:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fees_$1420_storage", + "typeString": "struct Token.Fees storage ref" + } + }, + "id": 1632, + "nodeType": "ExpressionStatement", + "src": "32196:124:0" + }, + { + "expression": { + "id": 1639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1633, + "name": "router", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1423, + "src": "32331:6:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "baseExpression": { + "id": 1635, + "name": "addresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1472, + "src": "32359:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1637, + "indexExpression": { + "hexValue": "30", + "id": 1636, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32369:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32359:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1634, + "name": "IUniswapV2Router02", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1241, + "src": "32340:18:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV2Router02_$1241_$", + "typeString": "type(contract IUniswapV2Router02)" + } + }, + "id": 1638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32340:32:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + }, + "src": "32331:41:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + }, + "id": 1640, + "nodeType": "ExpressionStatement", + "src": "32331:41:0" + }, + { + "expression": { + "id": 1645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1641, + "name": "dividentTokenBridgeAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1352, + "src": "32382:26:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 1642, + "name": "router", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1423, + "src": "32411:6:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + }, + "id": 1643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "32418:4:0", + "memberName": "WETH", + "nodeType": "MemberAccess", + "referencedDeclaration": 860, + "src": "32411:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_pure$__$returns$_t_address_$", + "typeString": "function () pure external returns (address)" + } + }, + "id": 1644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32411:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "32382:42:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1646, + "nodeType": "ExpressionStatement", + "src": "32382:42:0" + }, + { + "expression": { + "id": 1662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1647, + "name": "lpPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1343, + "src": "32487:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 1656, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "32564:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + ], + "id": 1655, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "32556:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1654, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32556:7:0", + "typeDescriptions": {} + } + }, + "id": 1657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32556:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 1658, + "name": "router", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1423, + "src": "32583:6:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + }, + "id": 1659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "32590:4:0", + "memberName": "WETH", + "nodeType": "MemberAccess", + "referencedDeclaration": 860, + "src": "32583:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_pure$__$returns$_t_address_$", + "typeString": "function () pure external returns (address)" + } + }, + "id": 1660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32583:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 1649, + "name": "router", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1423, + "src": "32514:6:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + }, + "id": 1650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "32521:7:0", + "memberName": "factory", + "nodeType": "MemberAccess", + "referencedDeclaration": 855, + "src": "32514:14:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_pure$__$returns$_t_address_$", + "typeString": "function () pure external returns (address)" + } + }, + "id": 1651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32514:16:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1648, + "name": "IUniswapV2Factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1302, + "src": "32496:17:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV2Factory_$1302_$", + "typeString": "type(contract IUniswapV2Factory)" + } + }, + "id": 1652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32496:35:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Factory_$1302", + "typeString": "contract IUniswapV2Factory" + } + }, + "id": 1653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "32532:10:0", + "memberName": "createPair", + "nodeType": "MemberAccess", + "referencedDeclaration": 1291, + "src": "32496:46:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address) external returns (address)" + } + }, + "id": 1661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32496:110:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "32487:119:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1663, + "nodeType": "ExpressionStatement", + "src": "32487:119:0" + }, + { + "expression": { + "id": 1668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1664, + "name": "automatedMarketMakerPairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1409, + "src": "32616:25:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1666, + "indexExpression": { + "id": 1665, + "name": "lpPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1343, + "src": "32642:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "32616:33:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 1667, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32652:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "32616:40:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1669, + "nodeType": "ExpressionStatement", + "src": "32616:40:0" + }, + { + "expression": { + "id": 1675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1670, + "name": "_isExcludedFromFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1401, + "src": "33472:18:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1673, + "indexExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1671, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58, + "src": "33491:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1672, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "33491:7:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "33472:27:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 1674, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33502:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "33472:34:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1676, + "nodeType": "ExpressionStatement", + "src": "33472:34:0" + }, + { + "expression": { + "id": 1681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1677, + "name": "_isExcludedFromFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1401, + "src": "33516:18:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1679, + "indexExpression": { + "id": 1678, + "name": "treasuryAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1348, + "src": "33535:15:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "33516:35:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 1680, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33554:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "33516:42:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1682, + "nodeType": "ExpressionStatement", + "src": "33516:42:0" + }, + { + "expression": { + "id": 1689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1683, + "name": "_isExcludedFromFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1401, + "src": "33568:18:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1687, + "indexExpression": { + "baseExpression": { + "id": 1684, + "name": "platformFeeAddresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1346, + "src": "33587:20:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1686, + "indexExpression": { + "hexValue": "30", + "id": 1685, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33608:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33587:23:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "33568:43:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 1688, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33614:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "33568:50:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1690, + "nodeType": "ExpressionStatement", + "src": "33568:50:0" + }, + { + "expression": { + "id": 1697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1691, + "name": "_isExcludedFromFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1401, + "src": "33628:18:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1695, + "indexExpression": { + "baseExpression": { + "id": 1692, + "name": "platformFeeAddresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1346, + "src": "33647:20:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1694, + "indexExpression": { + "hexValue": "31", + "id": 1693, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33668:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33647:23:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "33628:43:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 1696, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33674:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "33628:50:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1698, + "nodeType": "ExpressionStatement", + "src": "33628:50:0" + }, + { + "expression": { + "id": 1706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1699, + "name": "_isExcludedFromFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1401, + "src": "33688:18:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1704, + "indexExpression": { + "arguments": [ + { + "id": 1702, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "33715:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + ], + "id": 1701, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33707:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1700, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "33707:7:0", + "typeDescriptions": {} + } + }, + "id": 1703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "33707:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "33688:33:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 1705, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33724:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "33688:40:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1707, + "nodeType": "ExpressionStatement", + "src": "33688:40:0" + }, + { + "expression": { + "id": 1713, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1708, + "name": "_isExcludedFromMaxTx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1405, + "src": "33739:20:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1711, + "indexExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1709, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58, + "src": "33760:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "33760:7:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "33739:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 1712, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33771:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "33739:36:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1714, + "nodeType": "ExpressionStatement", + "src": "33739:36:0" + }, + { + "expression": { + "id": 1719, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1715, + "name": "_isExcludedFromMaxTx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1405, + "src": "33785:20:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1717, + "indexExpression": { + "id": 1716, + "name": "treasuryAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1348, + "src": "33806:15:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "33785:37:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 1718, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33825:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "33785:44:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1720, + "nodeType": "ExpressionStatement", + "src": "33785:44:0" + }, + { + "expression": { + "id": 1727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1721, + "name": "_isExcludedFromMaxTx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1405, + "src": "33839:20:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1725, + "indexExpression": { + "baseExpression": { + "id": 1722, + "name": "platformFeeAddresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1346, + "src": "33860:20:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1724, + "indexExpression": { + "hexValue": "30", + "id": 1723, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33881:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33860:23:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "33839:45:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 1726, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33887:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "33839:52:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1728, + "nodeType": "ExpressionStatement", + "src": "33839:52:0" + }, + { + "expression": { + "id": 1735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1729, + "name": "_isExcludedFromMaxTx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1405, + "src": "33901:20:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1733, + "indexExpression": { + "baseExpression": { + "id": 1730, + "name": "platformFeeAddresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1346, + "src": "33922:20:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1732, + "indexExpression": { + "hexValue": "31", + "id": 1731, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33943:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33922:23:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "33901:45:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 1734, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33949:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "33901:52:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1736, + "nodeType": "ExpressionStatement", + "src": "33901:52:0" + }, + { + "expression": { + "id": 1744, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1737, + "name": "_isExcludedFromMaxTx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1405, + "src": "33963:20:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1742, + "indexExpression": { + "arguments": [ + { + "id": 1740, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "33992:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + ], + "id": 1739, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33984:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1738, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "33984:7:0", + "typeDescriptions": {} + } + }, + "id": 1741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "33984:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "33963:35:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 1743, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34001:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "33963:42:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1745, + "nodeType": "ExpressionStatement", + "src": "33963:42:0" + }, + { + "expression": { + "id": 1753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1746, + "name": "_isExcludedFromMaxTx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1405, + "src": "34015:20:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1751, + "indexExpression": { + "arguments": [ + { + "id": 1749, + "name": "router", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1423, + "src": "34044:6:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + ], + "id": 1748, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "34036:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1747, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "34036:7:0", + "typeDescriptions": {} + } + }, + "id": 1750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34036:15:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "34015:37:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 1752, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34055:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "34015:44:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1754, + "nodeType": "ExpressionStatement", + "src": "34015:44:0" + }, + { + "expression": { + "id": 1759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1755, + "name": "_isExcludedFromMaxTx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1405, + "src": "34069:20:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1757, + "indexExpression": { + "id": 1756, + "name": "lpPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1343, + "src": "34090:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "34069:28:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 1758, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34100:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "34069:35:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1760, + "nodeType": "ExpressionStatement", + "src": "34069:35:0" + }, + { + "expression": { + "id": 1763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1761, + "name": "swapThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1354, + "src": "34171:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "31303030", + "id": 1762, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34187:10:0", + "subdenomination": "ether", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000000000000000000_by_1", + "typeString": "int_const 1000000000000000000000" + }, + "value": "1000" + }, + "src": "34171:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1764, + "nodeType": "ExpressionStatement", + "src": "34171:26:0" + }, + { + "expression": { + "id": 1767, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1765, + "name": "autoLiquidityPercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1371, + "src": "34208:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 1766, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34231:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "34208:24:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1768, + "nodeType": "ExpressionStatement", + "src": "34208:24:0" + }, + { + "expression": { + "id": 1771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1769, + "name": "buyBackPercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1377, + "src": "34247:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 1770, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34264:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "34247:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1772, + "nodeType": "ExpressionStatement", + "src": "34247:18:0" + }, + { + "expression": { + "id": 1775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1773, + "name": "buyBackThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1375, + "src": "34281:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "31", + "id": 1774, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34300:7:0", + "subdenomination": "ether", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000000000000000_by_1", + "typeString": "int_const 1000000000000000000" + }, + "value": "1" + }, + "src": "34281:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1776, + "nodeType": "ExpressionStatement", + "src": "34281:26:0" + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1778, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58, + "src": "34400:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34400:7:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 1782, + "name": "router", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1423, + "src": "34417:6:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + ], + "id": 1781, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "34409:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1780, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "34409:7:0", + "typeDescriptions": {} + } + }, + "id": 1783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34409:15:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "arguments": [ + { + "id": 1786, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "34431:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 1785, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "34431:7:0", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 1784, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "34426:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1787, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34426:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 1788, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "34440:3:0", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "34426:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1777, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 744, + "src": "34391:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34391:53:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1790, + "nodeType": "ExpressionStatement", + "src": "34391:53:0" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 1794, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "34471:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + ], + "id": 1793, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "34463:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1792, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "34463:7:0", + "typeDescriptions": {} + } + }, + "id": 1795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34463:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 1798, + "name": "router", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1423, + "src": "34486:6:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + ], + "id": 1797, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "34478:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1796, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "34478:7:0", + "typeDescriptions": {} + } + }, + "id": 1799, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34478:15:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "arguments": [ + { + "id": 1802, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "34500:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 1801, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "34500:7:0", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 1800, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "34495:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1803, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34495:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 1804, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "34509:3:0", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "34495:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1791, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 744, + "src": "34454:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34454:59:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1806, + "nodeType": "ExpressionStatement", + "src": "34454:59:0" + }, + { + "expression": { + "id": 1809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1807, + "name": "maxBuyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1379, + "src": "34524:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1808, + "name": "supply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1467, + "src": "34538:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34524:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1810, + "nodeType": "ExpressionStatement", + "src": "34524:20:0" + }, + { + "expression": { + "id": 1813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1811, + "name": "gasLimitActive", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1395, + "src": "34554:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 1812, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34571:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "34554:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1814, + "nodeType": "ExpressionStatement", + "src": "34554:22:0" + }, + { + "expression": { + "id": 1817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1815, + "name": "transferDelayEnabled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1397, + "src": "34638:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 1816, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34661:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "34638:28:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1818, + "nodeType": "ExpressionStatement", + "src": "34638:28:0" + }, + { + "expression": { + "id": 1822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1819, + "name": "initialDelayTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1381, + "src": "34676:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 1820, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967292, + "src": "34695:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "34701:9:0", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "34695:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34676:34:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1823, + "nodeType": "ExpressionStatement", + "src": "34676:34:0" + }, + { + "expression": { + "id": 1826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1824, + "name": "maxGasPriceLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1385, + "src": "34774:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "3135303030303030303030", + "id": 1825, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34793:11:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_15000000000_by_1", + "typeString": "int_const 15000000000" + }, + "value": "15000000000" + }, + "src": "34774:30:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1827, + "nodeType": "ExpressionStatement", + "src": "34774:30:0" + }, + { + "expression": { + "id": 1830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1828, + "name": "timeDelayBetweenTx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1387, + "src": "34901:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "35", + "id": 1829, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34922:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "src": "34901:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1831, + "nodeType": "ExpressionStatement", + "src": "34901:22:0" + }, + { + "expression": { + "id": 1834, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1832, + "name": "totalDelayTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1383, + "src": "34933:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "33363030", + "id": 1833, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34950:4:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_3600_by_1", + "typeString": "int_const 3600" + }, + "value": "3600" + }, + "src": "34933:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1835, + "nodeType": "ExpressionStatement", + "src": "34933:21:0" + }, + { + "expression": { + "id": 1838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1836, + "name": "gasForProcessing", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1389, + "src": "35013:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "333030303030", + "id": 1837, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "35032:6:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_300000_by_1", + "typeString": "int_const 300000" + }, + "value": "300000" + }, + "src": "35013:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1839, + "nodeType": "ExpressionStatement", + "src": "35013:25:0" + } + ] + }, + "id": 1841, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "id": 1478, + "name": "tokenName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1463, + "src": "31109:9:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 1479, + "name": "tokenSymbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1465, + "src": "31120:11:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 1480, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 1477, + "name": "ERC20", + "nameLocations": [ + "31103:5:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 810, + "src": "31103:5:0" + }, + "nodeType": "ModifierInvocation", + "src": "31103:29:0" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1476, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1463, + "mutability": "mutable", + "name": "tokenName", + "nameLocation": "30843:9:0", + "nodeType": "VariableDeclaration", + "scope": 1841, + "src": "30829:23:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1462, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "30829:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1465, + "mutability": "mutable", + "name": "tokenSymbol", + "nameLocation": "30876:11:0", + "nodeType": "VariableDeclaration", + "scope": 1841, + "src": "30862:25:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1464, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "30862:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1467, + "mutability": "mutable", + "name": "supply", + "nameLocation": "30905:6:0", + "nodeType": "VariableDeclaration", + "scope": 1841, + "src": "30897:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1466, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30897:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1469, + "mutability": "mutable", + "name": "preMint", + "nameLocation": "30929:7:0", + "nodeType": "VariableDeclaration", + "scope": 1841, + "src": "30921:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1468, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30921:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1472, + "mutability": "mutable", + "name": "addresses", + "nameLocation": "30963:9:0", + "nodeType": "VariableDeclaration", + "scope": 1841, + "src": "30946:26:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1470, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "30946:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1471, + "nodeType": "ArrayTypeName", + "src": "30946:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1475, + "mutability": "mutable", + "name": "percents", + "nameLocation": "31032:8:0", + "nodeType": "VariableDeclaration", + "scope": 1841, + "src": "31016:24:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", + "typeString": "uint16[]" + }, + "typeName": { + "baseType": { + "id": 1473, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "31016:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 1474, + "nodeType": "ArrayTypeName", + "src": "31016:8:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr", + "typeString": "uint16[]" + } + }, + "visibility": "internal" + } + ], + "src": "30819:283:0" + }, + "returnParameters": { + "id": 1481, + "nodeType": "ParameterList", + "parameters": [], + "src": "31133:0:0" + }, + "scope": 3380, + "src": "30808:4237:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1869, + "nodeType": "Block", + "src": "35144:272:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1849, + "name": "newAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1843, + "src": "35175:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 1850, + "name": "dividentTokenBridgeAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1352, + "src": "35189:26:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "35175:40:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "546865206469766964656e6420747261636b657220616c72656164792068617320746861742061646472657373", + "id": 1852, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "35229:47:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fc225be1fe02e1632f8808f45c6476438eb284de6783830a01925af132a555e1", + "typeString": "literal_string \"The dividend tracker already has that address\"" + }, + "value": "The dividend tracker already has that address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fc225be1fe02e1632f8808f45c6476438eb284de6783830a01925af132a555e1", + "typeString": "literal_string \"The dividend tracker already has that address\"" + } + ], + "id": 1848, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "35154:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "35154:132:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1854, + "nodeType": "ExpressionStatement", + "src": "35154:132:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1856, + "name": "newAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1843, + "src": "35304:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1859, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "35326:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1858, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "35318:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1857, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "35318:7:0", + "typeDescriptions": {} + } + }, + "id": 1860, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "35318:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "35304:24:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "6e65772061646472657373206973205a65726f2061646472657373", + "id": 1862, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "35330:29:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_13793132560fa2ec8558717f0a4d251a32bc5c8aa8bdb216b5dae0975b67951d", + "typeString": "literal_string \"new address is Zero address\"" + }, + "value": "new address is Zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_13793132560fa2ec8558717f0a4d251a32bc5c8aa8bdb216b5dae0975b67951d", + "typeString": "literal_string \"new address is Zero address\"" + } + ], + "id": 1855, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "35296:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "35296:64:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1864, + "nodeType": "ExpressionStatement", + "src": "35296:64:0" + }, + { + "expression": { + "id": 1867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1865, + "name": "dividentTokenBridgeAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1352, + "src": "35370:26:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1866, + "name": "newAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1843, + "src": "35399:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "35370:39:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1868, + "nodeType": "ExpressionStatement", + "src": "35370:39:0" + } + ] + }, + "functionSelector": "54fb8e40", + "id": 1870, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1846, + "kind": "modifierInvocation", + "modifierName": { + "id": 1845, + "name": "onlyOwner", + "nameLocations": [ + "35134:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49, + "src": "35134:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "35134:9:0" + } + ], + "name": "updateDividentTokenBridgeAddress", + "nameLocation": "35060:32:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1844, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1843, + "mutability": "mutable", + "name": "newAddress", + "nameLocation": "35110:10:0", + "nodeType": "VariableDeclaration", + "scope": 1870, + "src": "35102:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1842, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "35102:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "35092:34:0" + }, + "returnParameters": { + "id": 1847, + "nodeType": "ParameterList", + "parameters": [], + "src": "35144:0:0" + }, + "scope": 3380, + "src": "35051:365:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1961, + "nodeType": "Block", + "src": "35507:814:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1880, + "name": "newAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1872, + "src": "35525:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1883, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "35547:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1882, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "35539:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1881, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "35539:7:0", + "typeDescriptions": {} + } + }, + "id": 1884, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "35539:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "35525:24:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "6e65772061646472657373206973205a65726f2061646472657373", + "id": 1886, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "35551:29:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_13793132560fa2ec8558717f0a4d251a32bc5c8aa8bdb216b5dae0975b67951d", + "typeString": "literal_string \"new address is Zero address\"" + }, + "value": "new address is Zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_13793132560fa2ec8558717f0a4d251a32bc5c8aa8bdb216b5dae0975b67951d", + "typeString": "literal_string \"new address is Zero address\"" + } + ], + "id": 1879, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "35517:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1887, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "35517:64:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1888, + "nodeType": "ExpressionStatement", + "src": "35517:64:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1890, + "name": "percent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1874, + "src": "35599:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "hexValue": "35303030", + "id": 1891, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "35610:4:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_5000_by_1", + "typeString": "int_const 5000" + }, + "value": "5000" + }, + "src": "35599:15:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "696e76616c69642070657263656e74", + "id": 1893, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "35616:17:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2eedacd67c79124943e426d53746f41e0d2d4e7d7605d824a7e838c14495a95a", + "typeString": "literal_string \"invalid percent\"" + }, + "value": "invalid percent" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2eedacd67c79124943e426d53746f41e0d2d4e7d7605d824a7e838c14495a95a", + "typeString": "literal_string \"invalid percent\"" + } + ], + "id": 1889, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "35591:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1894, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "35591:43:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1895, + "nodeType": "ExpressionStatement", + "src": "35591:43:0" + }, + { + "expression": { + "id": 1900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1896, + "name": "tokenDividendTracker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1426, + "src": "35690:20:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDividendTracker_$1336", + "typeString": "contract IDividendTracker" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1898, + "name": "newAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1872, + "src": "35730:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1897, + "name": "IDividendTracker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1336, + "src": "35713:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDividendTracker_$1336_$", + "typeString": "type(contract IDividendTracker)" + } + }, + "id": 1899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "35713:28:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDividendTracker_$1336", + "typeString": "contract IDividendTracker" + } + }, + "src": "35690:51:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDividendTracker_$1336", + "typeString": "contract IDividendTracker" + } + }, + "id": 1901, + "nodeType": "ExpressionStatement", + "src": "35690:51:0" + }, + { + "expression": { + "arguments": [ + { + "id": 1905, + "name": "newAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1872, + "src": "35838:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 1902, + "name": "tokenDividendTracker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1426, + "src": "35796:20:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDividendTracker_$1336", + "typeString": "contract IDividendTracker" + } + }, + "id": 1904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "35817:20:0", + "memberName": "excludeFromDividends", + "nodeType": "MemberAccess", + "referencedDeclaration": 1307, + "src": "35796:41:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", + "typeString": "function (address) external" + } + }, + "id": 1906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "35796:53:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1907, + "nodeType": "ExpressionStatement", + "src": "35796:53:0" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 1913, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "35909:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + ], + "id": 1912, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "35901:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1911, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "35901:7:0", + "typeDescriptions": {} + } + }, + "id": 1914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "35901:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 1908, + "name": "tokenDividendTracker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1426, + "src": "35859:20:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDividendTracker_$1336", + "typeString": "contract IDividendTracker" + } + }, + "id": 1910, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "35880:20:0", + "memberName": "excludeFromDividends", + "nodeType": "MemberAccess", + "referencedDeclaration": 1307, + "src": "35859:41:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", + "typeString": "function (address) external" + } + }, + "id": 1915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "35859:56:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1916, + "nodeType": "ExpressionStatement", + "src": "35859:56:0" + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1920, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58, + "src": "35967:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "35967:7:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 1917, + "name": "tokenDividendTracker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1426, + "src": "35925:20:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDividendTracker_$1336", + "typeString": "contract IDividendTracker" + } + }, + "id": 1919, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "35946:20:0", + "memberName": "excludeFromDividends", + "nodeType": "MemberAccess", + "referencedDeclaration": 1307, + "src": "35925:41:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", + "typeString": "function (address) external" + } + }, + "id": 1922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "35925:50:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1923, + "nodeType": "ExpressionStatement", + "src": "35925:50:0" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 1929, + "name": "router", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1423, + "src": "36035:6:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + ], + "id": 1928, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "36027:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1927, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "36027:7:0", + "typeDescriptions": {} + } + }, + "id": 1930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "36027:15:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 1924, + "name": "tokenDividendTracker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1426, + "src": "35985:20:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDividendTracker_$1336", + "typeString": "contract IDividendTracker" + } + }, + "id": 1926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "36006:20:0", + "memberName": "excludeFromDividends", + "nodeType": "MemberAccess", + "referencedDeclaration": 1307, + "src": "35985:41:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", + "typeString": "function (address) external" + } + }, + "id": 1931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "35985:58:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1932, + "nodeType": "ExpressionStatement", + "src": "35985:58:0" + }, + { + "expression": { + "arguments": [ + { + "id": 1936, + "name": "lpPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1343, + "src": "36095:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 1933, + "name": "tokenDividendTracker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1426, + "src": "36053:20:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDividendTracker_$1336", + "typeString": "contract IDividendTracker" + } + }, + "id": 1935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "36074:20:0", + "memberName": "excludeFromDividends", + "nodeType": "MemberAccess", + "referencedDeclaration": 1307, + "src": "36053:41:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", + "typeString": "function (address) external" + } + }, + "id": 1937, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "36053:49:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1938, + "nodeType": "ExpressionStatement", + "src": "36053:49:0" + }, + { + "expression": { + "id": 1943, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1939, + "name": "_isExcludedFromFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1401, + "src": "36113:18:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1941, + "indexExpression": { + "id": 1940, + "name": "newAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1872, + "src": "36132:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "36113:30:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 1942, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36146:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "36113:37:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1944, + "nodeType": "ExpressionStatement", + "src": "36113:37:0" + }, + { + "expression": { + "id": 1949, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1945, + "name": "_isExcludedFromMaxTx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1405, + "src": "36160:20:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1947, + "indexExpression": { + "id": 1946, + "name": "newAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1872, + "src": "36181:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "36160:32:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 1948, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36195:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "36160:39:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1950, + "nodeType": "ExpressionStatement", + "src": "36160:39:0" + }, + { + "expression": { + "id": 1953, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1951, + "name": "distributionRewardsPercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1391, + "src": "36210:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1952, + "name": "percent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1874, + "src": "36239:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "36210:36:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1954, + "nodeType": "ExpressionStatement", + "src": "36210:36:0" + }, + { + "expression": { + "id": 1959, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1955, + "name": "dividendTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1350, + "src": "36256:20:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 1956, + "name": "tokenDividendTracker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1426, + "src": "36279:20:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDividendTracker_$1336", + "typeString": "contract IDividendTracker" + } + }, + "id": 1957, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "36300:12:0", + "memberName": "rewardsToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 1335, + "src": "36279:33:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 1958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "36279:35:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "36256:58:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1960, + "nodeType": "ExpressionStatement", + "src": "36256:58:0" + } + ] + }, + "functionSelector": "b9c6ec50", + "id": 1962, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1877, + "kind": "modifierInvocation", + "modifierName": { + "id": 1876, + "name": "onlyOwner", + "nameLocations": [ + "35497:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49, + "src": "35497:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "35497:9:0" + } + ], + "name": "updateDividendTracker", + "nameLocation": "35431:21:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1875, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1872, + "mutability": "mutable", + "name": "newAddress", + "nameLocation": "35461:10:0", + "nodeType": "VariableDeclaration", + "scope": 1962, + "src": "35453:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1871, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "35453:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1874, + "mutability": "mutable", + "name": "percent", + "nameLocation": "35481:7:0", + "nodeType": "VariableDeclaration", + "scope": 1962, + "src": "35473:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1873, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "35473:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "35452:37:0" + }, + "returnParameters": { + "id": 1878, + "nodeType": "ParameterList", + "parameters": [], + "src": "35507:0:0" + }, + "scope": 3380, + "src": "35422:899:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1981, + "nodeType": "Block", + "src": "36654:164:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1971, + "name": "newValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1965, + "src": "36685:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "hexValue": "3130303030303030303030", + "id": 1972, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36697:11:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000000000_by_1", + "typeString": "int_const 10000000000" + }, + "value": "10000000000" + }, + "src": "36685:23:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "6d6178206761732070726963652063616e74206265206c6f776572207468616e2031302067576569", + "id": 1974, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36722:42:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8b446a2615c168287da7f51d3066ab9e1be5b0d2b94b85826a37d72ccee0f1ea", + "typeString": "literal_string \"max gas price cant be lower than 10 gWei\"" + }, + "value": "max gas price cant be lower than 10 gWei" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8b446a2615c168287da7f51d3066ab9e1be5b0d2b94b85826a37d72ccee0f1ea", + "typeString": "literal_string \"max gas price cant be lower than 10 gWei\"" + } + ], + "id": 1970, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "36664:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "36664:110:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1976, + "nodeType": "ExpressionStatement", + "src": "36664:110:0" + }, + { + "expression": { + "id": 1979, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1977, + "name": "maxGasPriceLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1385, + "src": "36784:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1978, + "name": "newValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1965, + "src": "36803:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "36784:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1980, + "nodeType": "ExpressionStatement", + "src": "36784:27:0" + } + ] + }, + "documentation": { + "id": 1963, + "nodeType": "StructuredDocumentation", + "src": "36327:255:0", + "text": " @notice This function is used to Update the Max Gas Price Limit for transactions\n @dev This function is used inside the tokenTransfer during the first hour of the contract\n @param newValue uint256 The new Max Gas Price Limit" + }, + "functionSelector": "1630e97f", + "id": 1982, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1968, + "kind": "modifierInvocation", + "modifierName": { + "id": 1967, + "name": "onlyOwner", + "nameLocations": [ + "36644:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49, + "src": "36644:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "36644:9:0" + } + ], + "name": "updateMaxGasPriceLimit", + "nameLocation": "36596:22:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1966, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1965, + "mutability": "mutable", + "name": "newValue", + "nameLocation": "36627:8:0", + "nodeType": "VariableDeclaration", + "scope": 1982, + "src": "36619:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1964, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "36619:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "36618:18:0" + }, + "returnParameters": { + "id": 1969, + "nodeType": "ParameterList", + "parameters": [], + "src": "36654:0:0" + }, + "scope": 3380, + "src": "36587:231:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1994, + "nodeType": "Block", + "src": "37043:46:0", + "statements": [ + { + "expression": { + "id": 1992, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1990, + "name": "transferDelayEnabled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1397, + "src": "37053:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1991, + "name": "newVal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "37076:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "37053:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1993, + "nodeType": "ExpressionStatement", + "src": "37053:29:0" + } + ] + }, + "documentation": { + "id": 1983, + "nodeType": "StructuredDocumentation", + "src": "36824:146:0", + "text": " @notice This function is updating the value of the variable transferDelayEnabled\n @param newVal New value of the variable" + }, + "functionSelector": "a2065e71", + "id": 1995, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1988, + "kind": "modifierInvocation", + "modifierName": { + "id": 1987, + "name": "onlyOwner", + "nameLocations": [ + "37033:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49, + "src": "37033:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "37033:9:0" + } + ], + "name": "updateTransferDelayEnabled", + "nameLocation": "36984:26:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1986, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1985, + "mutability": "mutable", + "name": "newVal", + "nameLocation": "37016:6:0", + "nodeType": "VariableDeclaration", + "scope": 1995, + "src": "37011:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1984, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "37011:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "37010:13:0" + }, + "returnParameters": { + "id": 1989, + "nodeType": "ParameterList", + "parameters": [], + "src": "37043:0:0" + }, + "scope": 3380, + "src": "36975:114:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 2013, + "nodeType": "Block", + "src": "37300:70:0", + "statements": [ + { + "expression": { + "id": 2011, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2003, + "name": "maxBuyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1379, + "src": "37310:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2010, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2004, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 308, + "src": "37325:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 2005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "37325:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 2006, + "name": "percent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1998, + "src": "37341:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37325:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2008, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "37324:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 2009, + "name": "TAX_DIVISOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1357, + "src": "37352:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37324:39:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37310:53:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2012, + "nodeType": "ExpressionStatement", + "src": "37310:53:0" + } + ] + }, + "documentation": { + "id": 1996, + "nodeType": "StructuredDocumentation", + "src": "37095:139:0", + "text": " @dev Update the max amount of tokens that can be buyed in one transaction\n @param percent New max buy limit in wei" + }, + "functionSelector": "7dee3290", + "id": 2014, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2001, + "kind": "modifierInvocation", + "modifierName": { + "id": 2000, + "name": "onlyOwner", + "nameLocations": [ + "37290:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49, + "src": "37290:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "37290:9:0" + } + ], + "name": "updateMaxBuyLimit", + "nameLocation": "37248:17:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1999, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1998, + "mutability": "mutable", + "name": "percent", + "nameLocation": "37274:7:0", + "nodeType": "VariableDeclaration", + "scope": 2014, + "src": "37266:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1997, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "37266:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "37265:17:0" + }, + "returnParameters": { + "id": 2002, + "nodeType": "ParameterList", + "parameters": [], + "src": "37300:0:0" + }, + "scope": 3380, + "src": "37239:131:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 2026, + "nodeType": "Block", + "src": "37567:40:0", + "statements": [ + { + "expression": { + "id": 2024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2022, + "name": "gasLimitActive", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1395, + "src": "37577:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2023, + "name": "newVal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2017, + "src": "37594:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "37577:23:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2025, + "nodeType": "ExpressionStatement", + "src": "37577:23:0" + } + ] + }, + "documentation": { + "id": 2015, + "nodeType": "StructuredDocumentation", + "src": "37376:126:0", + "text": " @dev Update the max gas limit that can be used in the transaction\n @param newVal New gas limit amount" + }, + "functionSelector": "8d0cb35a", + "id": 2027, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2020, + "kind": "modifierInvocation", + "modifierName": { + "id": 2019, + "name": "onlyOwner", + "nameLocations": [ + "37557:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49, + "src": "37557:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "37557:9:0" + } + ], + "name": "updateGasLimitActive", + "nameLocation": "37516:20:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2018, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2017, + "mutability": "mutable", + "name": "newVal", + "nameLocation": "37542:6:0", + "nodeType": "VariableDeclaration", + "scope": 2027, + "src": "37537:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2016, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "37537:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "37536:13:0" + }, + "returnParameters": { + "id": 2021, + "nodeType": "ParameterList", + "parameters": [], + "src": "37567:0:0" + }, + "scope": 3380, + "src": "37507:100:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 2030, + "nodeType": "Block", + "src": "37691:2:0", + "statements": [] + }, + "id": 2031, + "implemented": true, + "kind": "receive", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2028, + "nodeType": "ParameterList", + "parameters": [], + "src": "37671:2:0" + }, + "returnParameters": { + "id": 2029, + "nodeType": "ParameterList", + "parameters": [], + "src": "37691:0:0" + }, + "scope": 3380, + "src": "37664:29:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 2071, + "nodeType": "Block", + "src": "37841:196:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2049, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "id": 2045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2043, + "name": "buyFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2033, + "src": "37859:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "hexValue": "39393030", + "id": 2044, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37869:4:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_9900_by_1", + "typeString": "int_const 9900" + }, + "value": "9900" + }, + "src": "37859:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "id": 2048, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2046, + "name": "sellFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2035, + "src": "37877:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "hexValue": "39393030", + "id": 2047, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37888:4:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_9900_by_1", + "typeString": "int_const 9900" + }, + "value": "9900" + }, + "src": "37877:15:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "37859:33:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "546f6f20686967687420746178", + "id": 2050, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37894:15:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fb13f92a6668ec2822ba83dd0fb39751e3d0f025940ec85cae1d62e2a5d06a7a", + "typeString": "literal_string \"Too hight tax\"" + }, + "value": "Too hight tax" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fb13f92a6668ec2822ba83dd0fb39751e3d0f025940ec85cae1d62e2a5d06a7a", + "typeString": "literal_string \"Too hight tax\"" + } + ], + "id": 2042, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "37851:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "37851:59:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2052, + "nodeType": "ExpressionStatement", + "src": "37851:59:0" + }, + { + "expression": { + "id": 2057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 2053, + "name": "_feesRates", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1429, + "src": "37920:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fees_$1420_storage", + "typeString": "struct Token.Fees storage ref" + } + }, + "id": 2055, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "37931:6:0", + "memberName": "buyFee", + "nodeType": "MemberAccess", + "referencedDeclaration": 1415, + "src": "37920:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2056, + "name": "buyFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2033, + "src": "37940:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "37920:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 2058, + "nodeType": "ExpressionStatement", + "src": "37920:26:0" + }, + { + "expression": { + "id": 2063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 2059, + "name": "_feesRates", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1429, + "src": "37956:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fees_$1420_storage", + "typeString": "struct Token.Fees storage ref" + } + }, + "id": 2061, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "37967:7:0", + "memberName": "sellFee", + "nodeType": "MemberAccess", + "referencedDeclaration": 1417, + "src": "37956:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2062, + "name": "sellFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2035, + "src": "37977:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "37956:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 2064, + "nodeType": "ExpressionStatement", + "src": "37956:28:0" + }, + { + "expression": { + "id": 2069, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 2065, + "name": "_feesRates", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1429, + "src": "37994:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fees_$1420_storage", + "typeString": "struct Token.Fees storage ref" + } + }, + "id": 2067, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "38005:11:0", + "memberName": "transferFee", + "nodeType": "MemberAccess", + "referencedDeclaration": 1419, + "src": "37994:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2068, + "name": "transferFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2037, + "src": "38019:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "37994:36:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 2070, + "nodeType": "ExpressionStatement", + "src": "37994:36:0" + } + ] + }, + "functionSelector": "32cde664", + "id": 2072, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2040, + "kind": "modifierInvocation", + "modifierName": { + "id": 2039, + "name": "onlyOwner", + "nameLocations": [ + "37831:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49, + "src": "37831:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "37831:9:0" + } + ], + "name": "setTaxes", + "nameLocation": "37724:8:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2038, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2033, + "mutability": "mutable", + "name": "buyFee", + "nameLocation": "37749:6:0", + "nodeType": "VariableDeclaration", + "scope": 2072, + "src": "37742:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 2032, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "37742:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2035, + "mutability": "mutable", + "name": "sellFee", + "nameLocation": "37772:7:0", + "nodeType": "VariableDeclaration", + "scope": 2072, + "src": "37765:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 2034, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "37765:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2037, + "mutability": "mutable", + "name": "transferFee", + "nameLocation": "37796:11:0", + "nodeType": "VariableDeclaration", + "scope": 2072, + "src": "37789:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 2036, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "37789:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "37732:81:0" + }, + "returnParameters": { + "id": 2041, + "nodeType": "ParameterList", + "parameters": [], + "src": "37841:0:0" + }, + "scope": 3380, + "src": "37715:322:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 2083, + "nodeType": "Block", + "src": "38154:48:0", + "statements": [ + { + "expression": { + "id": 2081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2079, + "name": "buyBackThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1375, + "src": "38164:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2080, + "name": "newThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2074, + "src": "38183:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "38164:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2082, + "nodeType": "ExpressionStatement", + "src": "38164:31:0" + } + ] + }, + "functionSelector": "efac4585", + "id": 2084, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2077, + "kind": "modifierInvocation", + "modifierName": { + "id": 2076, + "name": "onlyOwner", + "nameLocations": [ + "38144:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49, + "src": "38144:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "38144:9:0" + } + ], + "name": "setBuyBackThreshold", + "nameLocation": "38093:19:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2075, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2074, + "mutability": "mutable", + "name": "newThreshold", + "nameLocation": "38121:12:0", + "nodeType": "VariableDeclaration", + "scope": 2084, + "src": "38113:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2073, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "38113:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "38112:22:0" + }, + "returnParameters": { + "id": 2078, + "nodeType": "ParameterList", + "parameters": [], + "src": "38154:0:0" + }, + "scope": 3380, + "src": "38084:118:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 2106, + "nodeType": "Block", + "src": "38312:226:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2098, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2096, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2092, + "name": "newPercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2086, + "src": "38343:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 2093, + "name": "autoLiquidityPercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1371, + "src": "38356:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "38343:33:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 2095, + "name": "distributionRewardsPercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1391, + "src": "38379:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "38343:62:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 2097, + "name": "TAX_DIVISOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1357, + "src": "38425:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "38343:93:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "50657263656e742063616e7420626520686967686572207468616e2031303025", + "id": 2099, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "38450:34:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b60e78bf99b9a1aff10c8fa4af9582695d3eac27aed6cb1648f83013e2cccdea", + "typeString": "literal_string \"Percent cant be higher than 100%\"" + }, + "value": "Percent cant be higher than 100%" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b60e78bf99b9a1aff10c8fa4af9582695d3eac27aed6cb1648f83013e2cccdea", + "typeString": "literal_string \"Percent cant be higher than 100%\"" + } + ], + "id": 2091, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "38322:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2100, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "38322:172:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2101, + "nodeType": "ExpressionStatement", + "src": "38322:172:0" + }, + { + "expression": { + "id": 2104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2102, + "name": "buyBackPercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1377, + "src": "38504:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2103, + "name": "newPercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2086, + "src": "38521:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "38504:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2105, + "nodeType": "ExpressionStatement", + "src": "38504:27:0" + } + ] + }, + "functionSelector": "123e6cd8", + "id": 2107, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2089, + "kind": "modifierInvocation", + "modifierName": { + "id": 2088, + "name": "onlyOwner", + "nameLocations": [ + "38302:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49, + "src": "38302:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "38302:9:0" + } + ], + "name": "setBuyBackPercent", + "nameLocation": "38256:17:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2087, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2086, + "mutability": "mutable", + "name": "newPercent", + "nameLocation": "38281:10:0", + "nodeType": "VariableDeclaration", + "scope": 2107, + "src": "38274:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 2085, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "38274:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "38273:19:0" + }, + "returnParameters": { + "id": 2090, + "nodeType": "ParameterList", + "parameters": [], + "src": "38312:0:0" + }, + "scope": 3380, + "src": "38247:291:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 2129, + "nodeType": "Block", + "src": "38660:226:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2115, + "name": "newPercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2109, + "src": "38691:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 2116, + "name": "buyBackPercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1377, + "src": "38704:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "38691:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 2118, + "name": "distributionRewardsPercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1391, + "src": "38721:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "38691:56:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 2120, + "name": "TAX_DIVISOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1357, + "src": "38767:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "38691:87:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "50657263656e742063616e7420626520686967686572207468616e2031303025", + "id": 2122, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "38792:34:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b60e78bf99b9a1aff10c8fa4af9582695d3eac27aed6cb1648f83013e2cccdea", + "typeString": "literal_string \"Percent cant be higher than 100%\"" + }, + "value": "Percent cant be higher than 100%" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b60e78bf99b9a1aff10c8fa4af9582695d3eac27aed6cb1648f83013e2cccdea", + "typeString": "literal_string \"Percent cant be higher than 100%\"" + } + ], + "id": 2114, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "38670:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "38670:166:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2124, + "nodeType": "ExpressionStatement", + "src": "38670:166:0" + }, + { + "expression": { + "id": 2127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2125, + "name": "autoLiquidityPercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1371, + "src": "38846:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2126, + "name": "newPercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2109, + "src": "38869:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "38846:33:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2128, + "nodeType": "ExpressionStatement", + "src": "38846:33:0" + } + ] + }, + "functionSelector": "738c6c09", + "id": 2130, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2112, + "kind": "modifierInvocation", + "modifierName": { + "id": 2111, + "name": "onlyOwner", + "nameLocations": [ + "38650:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49, + "src": "38650:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "38650:9:0" + } + ], + "name": "setAutoLiquidityPercent", + "nameLocation": "38598:23:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2110, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2109, + "mutability": "mutable", + "name": "newPercent", + "nameLocation": "38629:10:0", + "nodeType": "VariableDeclaration", + "scope": 2130, + "src": "38622:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 2108, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "38622:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "38621:19:0" + }, + "returnParameters": { + "id": 2113, + "nodeType": "ParameterList", + "parameters": [], + "src": "38660:0:0" + }, + "scope": 3380, + "src": "38589:297:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 2152, + "nodeType": "Block", + "src": "38983:210:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2138, + "name": "newPercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2132, + "src": "39014:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 2139, + "name": "buyBackPercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1377, + "src": "39027:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "39014:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 2141, + "name": "autoLiquidityPercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1371, + "src": "39044:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "39014:50:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 2143, + "name": "TAX_DIVISOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1357, + "src": "39068:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "39014:65:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "50657263656e742063616e7420626520686967686572207468616e2031303025", + "id": 2145, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "39093:34:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b60e78bf99b9a1aff10c8fa4af9582695d3eac27aed6cb1648f83013e2cccdea", + "typeString": "literal_string \"Percent cant be higher than 100%\"" + }, + "value": "Percent cant be higher than 100%" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b60e78bf99b9a1aff10c8fa4af9582695d3eac27aed6cb1648f83013e2cccdea", + "typeString": "literal_string \"Percent cant be higher than 100%\"" + } + ], + "id": 2137, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "38993:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "38993:144:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2147, + "nodeType": "ExpressionStatement", + "src": "38993:144:0" + }, + { + "expression": { + "id": 2150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2148, + "name": "distributionRewardsPercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1391, + "src": "39147:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2149, + "name": "newPercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2132, + "src": "39176:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "39147:39:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2151, + "nodeType": "ExpressionStatement", + "src": "39147:39:0" + } + ] + }, + "functionSelector": "45b1b441", + "id": 2153, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2135, + "kind": "modifierInvocation", + "modifierName": { + "id": 2134, + "name": "onlyOwner", + "nameLocations": [ + "38973:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49, + "src": "38973:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "38973:9:0" + } + ], + "name": "setDistributionRewardsPercent", + "nameLocation": "38901:29:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2133, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2132, + "mutability": "mutable", + "name": "newPercent", + "nameLocation": "38947:10:0", + "nodeType": "VariableDeclaration", + "scope": 2153, + "src": "38940:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 2131, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "38940:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "38930:33:0" + }, + "returnParameters": { + "id": 2136, + "nodeType": "ParameterList", + "parameters": [], + "src": "38983:0:0" + }, + "scope": 3380, + "src": "38892:301:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 570 + ], + "body": { + "id": 2245, + "nodeType": "Block", + "src": "39380:682:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2164, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2155, + "src": "39411:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2165, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2157, + "src": "39417:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2166, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2159, + "src": "39421:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2163, + "name": "_beforeTransferCheck", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3202, + "src": "39390:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 2167, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "39390:38:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2168, + "nodeType": "ExpressionStatement", + "src": "39390:38:0" + }, + { + "condition": { + "id": 2169, + "name": "inSwap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1393, + "src": "39443:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2180, + "nodeType": "IfStatement", + "src": "39439:90:0", + "trueBody": { + "id": 2179, + "nodeType": "Block", + "src": "39451:78:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2173, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2155, + "src": "39481:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2174, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2157, + "src": "39487:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2175, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2159, + "src": "39491:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2170, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967271, + "src": "39465:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_Token_$3380_$", + "typeString": "type(contract super Token)" + } + }, + "id": 2172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "39471:9:0", + "memberName": "_transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 570, + "src": "39465:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 2176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "39465:33:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2177, + "nodeType": "ExpressionStatement", + "src": "39465:33:0" + }, + { + "functionReturnParameters": 2162, + "id": 2178, + "nodeType": "Return", + "src": "39512:7:0" + } + ] + } + }, + { + "condition": { + "arguments": [ + { + "id": 2182, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2155, + "src": "39560:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2183, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2157, + "src": "39566:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2181, + "name": "contractMustSwap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3248, + "src": "39543:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 2184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "39543:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2189, + "nodeType": "IfStatement", + "src": "39539:65:0", + "trueBody": { + "id": 2188, + "nodeType": "Block", + "src": "39571:33:0", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2185, + "name": "doSwap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2474, + "src": "39585:6:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 2186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "39585:8:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2187, + "nodeType": "ExpressionStatement", + "src": "39585:8:0" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 2191, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2155, + "src": "39632:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2192, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2157, + "src": "39638:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2193, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2159, + "src": "39642:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2190, + "name": "_finalizeTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2801, + "src": "39614:17:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 2194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "39614:35:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2195, + "nodeType": "ExpressionStatement", + "src": "39614:35:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 2198, + "name": "tokenDividendTracker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1426, + "src": "39672:20:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDividendTracker_$1336", + "typeString": "contract IDividendTracker" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IDividendTracker_$1336", + "typeString": "contract IDividendTracker" + } + ], + "id": 2197, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "39664:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2196, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39664:7:0", + "typeDescriptions": {} + } + }, + "id": 2199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "39664:29:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 2202, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "39705:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2201, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "39697:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2200, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39697:7:0", + "typeDescriptions": {} + } + }, + "id": 2203, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "39697:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "39664:43:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2244, + "nodeType": "IfStatement", + "src": "39660:396:0", + "trueBody": { + "id": 2243, + "nodeType": "Block", + "src": "39709:347:0", + "statements": [ + { + "clauses": [ + { + "block": { + "id": 2215, + "nodeType": "Block", + "src": "39819:2:0", + "statements": [] + }, + "errorName": "", + "id": 2216, + "nodeType": "TryCatchClause", + "src": "39819:2:0" + }, + { + "block": { + "id": 2217, + "nodeType": "Block", + "src": "39828:2:0", + "statements": [] + }, + "errorName": "", + "id": 2218, + "nodeType": "TryCatchClause", + "src": "39822:8:0" + } + ], + "externalCall": { + "arguments": [ + { + "arguments": [ + { + "id": 2209, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2155, + "src": "39783:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2208, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "39775:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 2207, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39775:8:0", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 2210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "39775:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "arguments": [ + { + "id": 2212, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2155, + "src": "39800:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2211, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 322, + "src": "39790:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 2213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "39790:15:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2205, + "name": "tokenDividendTracker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1426, + "src": "39743:20:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDividendTracker_$1336", + "typeString": "contract IDividendTracker" + } + }, + "id": 2206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "39764:10:0", + "memberName": "setBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 1314, + "src": "39743:31:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$_t_uint256_$returns$__$", + "typeString": "function (address payable,uint256) external" + } + }, + "id": 2214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "39743:63:0", + "tryCall": true, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2219, + "nodeType": "TryStatement", + "src": "39723:107:0" + }, + { + "clauses": [ + { + "block": { + "id": 2230, + "nodeType": "Block", + "src": "39935:2:0", + "statements": [] + }, + "errorName": "", + "id": 2231, + "nodeType": "TryCatchClause", + "src": "39935:2:0" + }, + { + "block": { + "id": 2232, + "nodeType": "Block", + "src": "39944:2:0", + "statements": [] + }, + "errorName": "", + "id": 2233, + "nodeType": "TryCatchClause", + "src": "39938:8:0" + } + ], + "externalCall": { + "arguments": [ + { + "arguments": [ + { + "id": 2224, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2157, + "src": "39903:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2223, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "39895:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 2222, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39895:8:0", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 2225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "39895:11:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "arguments": [ + { + "id": 2227, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2157, + "src": "39918:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2226, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 322, + "src": "39908:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 2228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "39908:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2220, + "name": "tokenDividendTracker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1426, + "src": "39863:20:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDividendTracker_$1336", + "typeString": "contract IDividendTracker" + } + }, + "id": 2221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "39884:10:0", + "memberName": "setBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 1314, + "src": "39863:31:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$_t_uint256_$returns$__$", + "typeString": "function (address payable,uint256) external" + } + }, + "id": 2229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "39863:59:0", + "tryCall": true, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2234, + "nodeType": "TryStatement", + "src": "39843:103:0" + }, + { + "condition": { + "id": 2236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "39964:7:0", + "subExpression": { + "id": 2235, + "name": "inSwap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1393, + "src": "39965:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2242, + "nodeType": "IfStatement", + "src": "39960:86:0", + "trueBody": { + "id": 2241, + "nodeType": "Block", + "src": "39973:73:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2238, + "name": "gasForProcessing", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1389, + "src": "40014:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2237, + "name": "processDividendTracker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2278, + "src": "39991:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 2239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "39991:40:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2240, + "nodeType": "ExpressionStatement", + "src": "39991:40:0" + } + ] + } + } + ] + } + } + ] + }, + "id": 2246, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nameLocation": "39272:9:0", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2161, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "39371:8:0" + }, + "parameters": { + "id": 2160, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2155, + "mutability": "mutable", + "name": "from", + "nameLocation": "39299:4:0", + "nodeType": "VariableDeclaration", + "scope": 2246, + "src": "39291:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2154, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39291:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2157, + "mutability": "mutable", + "name": "to", + "nameLocation": "39321:2:0", + "nodeType": "VariableDeclaration", + "scope": 2246, + "src": "39313:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2156, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39313:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2159, + "mutability": "mutable", + "name": "amount", + "nameLocation": "39341:6:0", + "nodeType": "VariableDeclaration", + "scope": 2246, + "src": "39333:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2158, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "39333:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "39281:72:0" + }, + "returnParameters": { + "id": 2162, + "nodeType": "ParameterList", + "parameters": [], + "src": "39380:0:0" + }, + "scope": 3380, + "src": "39263:799:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2277, + "nodeType": "Block", + "src": "40136:408:0", + "statements": [ + { + "clauses": [ + { + "block": { + "id": 2272, + "nodeType": "Block", + "src": "40303:226:0", + "statements": [ + { + "eventCall": { + "arguments": [ + { + "id": 2263, + "name": "iterations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2256, + "src": "40364:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2264, + "name": "claims", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2258, + "src": "40392:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2265, + "name": "lastProcessedIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2260, + "src": "40416:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "74727565", + "id": 2266, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "40452:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "id": 2267, + "name": "gas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2248, + "src": "40474:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 2268, + "name": "tx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967270, + "src": "40495:2:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_transaction", + "typeString": "tx" + } + }, + "id": 2269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "40498:6:0", + "memberName": "origin", + "nodeType": "MemberAccess", + "src": "40495:9:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2262, + "name": "ProcessedDividendTracker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1455, + "src": "40322:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (uint256,uint256,uint256,bool,uint256,address)" + } + }, + "id": 2270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "40322:196:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2271, + "nodeType": "EmitStatement", + "src": "40317:201:0" + } + ] + }, + "errorName": "", + "id": 2273, + "nodeType": "TryCatchClause", + "parameters": { + "id": 2261, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2256, + "mutability": "mutable", + "name": "iterations", + "nameLocation": "40214:10:0", + "nodeType": "VariableDeclaration", + "scope": 2273, + "src": "40206:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2255, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "40206:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2258, + "mutability": "mutable", + "name": "claims", + "nameLocation": "40246:6:0", + "nodeType": "VariableDeclaration", + "scope": 2273, + "src": "40238:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2257, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "40238:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2260, + "mutability": "mutable", + "name": "lastProcessedIndex", + "nameLocation": "40274:18:0", + "nodeType": "VariableDeclaration", + "scope": 2273, + "src": "40266:26:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2259, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "40266:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "40192:110:0" + }, + "src": "40184:345:0" + }, + { + "block": { + "id": 2274, + "nodeType": "Block", + "src": "40536:2:0", + "statements": [] + }, + "errorName": "", + "id": 2275, + "nodeType": "TryCatchClause", + "src": "40530:8:0" + } + ], + "externalCall": { + "arguments": [ + { + "id": 2253, + "name": "gas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2248, + "src": "40179:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2251, + "name": "tokenDividendTracker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1426, + "src": "40150:20:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDividendTracker_$1336", + "typeString": "contract IDividendTracker" + } + }, + "id": 2252, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "40171:7:0", + "memberName": "process", + "nodeType": "MemberAccess", + "referencedDeclaration": 1325, + "src": "40150:28:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "function (uint256) external returns (uint256,uint256,uint256)" + } + }, + "id": 2254, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "40150:33:0", + "tryCall": true, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256,uint256)" + } + }, + "id": 2276, + "nodeType": "TryStatement", + "src": "40146:392:0" + } + ] + }, + "id": 2278, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "processDividendTracker", + "nameLocation": "40077:22:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2249, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2248, + "mutability": "mutable", + "name": "gas", + "nameLocation": "40117:3:0", + "nodeType": "VariableDeclaration", + "scope": 2278, + "src": "40109:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2247, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "40109:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "40099:27:0" + }, + "returnParameters": { + "id": 2250, + "nodeType": "ParameterList", + "parameters": [], + "src": "40136:0:0" + }, + "scope": 3380, + "src": "40068:476:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2473, + "nodeType": "Block", + "src": "40586:2149:0", + "statements": [ + { + "assignments": [ + 2284 + ], + "declarations": [ + { + "constant": false, + "id": 2284, + "mutability": "mutable", + "name": "numTokensToSwap", + "nameLocation": "40643:15:0", + "nodeType": "VariableDeclaration", + "scope": 2473, + "src": "40635:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2283, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "40635:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2291, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 2288, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "40679:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + ], + "id": 2287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "40671:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2286, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40671:7:0", + "typeDescriptions": {} + } + }, + "id": 2289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "40671:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2285, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 322, + "src": "40661:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 2290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "40661:24:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "40635:50:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2292, + "name": "platformFeeAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1361, + "src": "40724:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2293, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "40744:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "40724:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2360, + "nodeType": "IfStatement", + "src": "40720:557:0", + "trueBody": { + "id": 2359, + "nodeType": "Block", + "src": "40747:530:0", + "statements": [ + { + "assignments": [ + 2296 + ], + "declarations": [ + { + "constant": false, + "id": 2296, + "mutability": "mutable", + "name": "_amount", + "nameLocation": "40769:7:0", + "nodeType": "VariableDeclaration", + "scope": 2359, + "src": "40761:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2295, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "40761:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2298, + "initialValue": { + "id": 2297, + "name": "platformFeeAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1361, + "src": "40779:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "40761:35:0" + }, + { + "expression": { + "id": 2301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2299, + "name": "numTokensToSwap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2284, + "src": "40810:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "id": 2300, + "name": "platformFeeAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1361, + "src": "40829:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "40810:36:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2302, + "nodeType": "ExpressionStatement", + "src": "40810:36:0" + }, + { + "expression": { + "id": 2305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2303, + "name": "platformFeeAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1361, + "src": "40860:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 2304, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "40880:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "40860:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2306, + "nodeType": "ExpressionStatement", + "src": "40860:21:0" + }, + { + "assignments": [ + 2308 + ], + "declarations": [ + { + "constant": false, + "id": 2308, + "mutability": "mutable", + "name": "_remain", + "nameLocation": "40903:7:0", + "nodeType": "VariableDeclaration", + "scope": 2359, + "src": "40895:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2307, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "40895:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2310, + "initialValue": { + "id": 2309, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2296, + "src": "40913:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "40895:25:0" + }, + { + "body": { + "id": 2357, + "nodeType": "Block", + "src": "40992:275:0", + "statements": [ + { + "assignments": [ + 2323 + ], + "declarations": [ + { + "constant": false, + "id": 2323, + "mutability": "mutable", + "name": "_fee", + "nameLocation": "41018:4:0", + "nodeType": "VariableDeclaration", + "scope": 2357, + "src": "41010:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2322, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "41010:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2339, + "initialValue": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2324, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2312, + "src": "41025:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "31", + "id": 2325, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "41030:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "41025:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2337, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2328, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2296, + "src": "41085:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "baseExpression": { + "id": 2329, + "name": "platformFeePercents", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1369, + "src": "41095:19:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2333, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2330, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2312, + "src": "41115:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 2331, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "41119:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "41115:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "41095:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "41085:36:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2335, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "41084:38:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 2336, + "name": "TAX_DIVISOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1357, + "src": "41125:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "41084:52:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "41025:111:0", + "trueExpression": { + "id": 2327, + "name": "_remain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2308, + "src": "41054:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "41010:126:0" + }, + { + "expression": { + "arguments": [ + { + "id": 2341, + "name": "_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2323, + "src": "41174:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "id": 2342, + "name": "platformFeeAddresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1346, + "src": "41180:20:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 2346, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2343, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2312, + "src": "41201:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 2344, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "41205:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "41201:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "41180:27:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2340, + "name": "swapTokensForNative", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2713, + "src": "41154:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (uint256,address)" + } + }, + "id": 2347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "41154:54:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2348, + "nodeType": "ExpressionStatement", + "src": "41154:54:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2349, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2312, + "src": "41230:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "31", + "id": 2350, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "41234:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "41230:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2356, + "nodeType": "IfStatement", + "src": "41226:26:0", + "trueBody": { + "expression": { + "id": 2354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2352, + "name": "_remain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2308, + "src": "41237:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "id": 2353, + "name": "_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2323, + "src": "41248:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "41237:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2355, + "nodeType": "ExpressionStatement", + "src": "41237:15:0" + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2316, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2312, + "src": "40980:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2317, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "40984:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "40980:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2358, + "initializationExpression": { + "assignments": [ + 2312 + ], + "declarations": [ + { + "constant": false, + "id": 2312, + "mutability": "mutable", + "name": "i", + "nameLocation": "40947:1:0", + "nodeType": "VariableDeclaration", + "scope": 2358, + "src": "40939:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2311, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "40939:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2315, + "initialValue": { + "expression": { + "id": 2313, + "name": "platformFeeAddresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1346, + "src": "40951:20:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 2314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "40972:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "40951:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "40939:39:0" + }, + "loopExpression": { + "expression": { + "id": 2320, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "40987:3:0", + "subExpression": { + "id": 2319, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2312, + "src": "40987:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2321, + "nodeType": "ExpressionStatement", + "src": "40987:3:0" + }, + "nodeType": "ForStatement", + "src": "40934:333:0" + } + ] + } + }, + { + "expression": { + "id": 2368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2361, + "name": "numTokensToSwap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2284, + "src": "41287:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 2365, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "41323:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + ], + "id": 2364, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "41315:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2363, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "41315:7:0", + "typeDescriptions": {} + } + }, + "id": 2366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "41315:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2362, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 322, + "src": "41305:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 2367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "41305:24:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "41287:42:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2369, + "nodeType": "ExpressionStatement", + "src": "41287:42:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2370, + "name": "numTokensToSwap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2284, + "src": "41343:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2371, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "41361:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "41343:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2472, + "nodeType": "IfStatement", + "src": "41339:1390:0", + "trueBody": { + "id": 2471, + "nodeType": "Block", + "src": "41364:1365:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2373, + "name": "buyBackPercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1377, + "src": "41414:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2374, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "41431:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "41414:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2390, + "nodeType": "IfStatement", + "src": "41410:199:0", + "trueBody": { + "id": 2389, + "nodeType": "Block", + "src": "41434:175:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2377, + "name": "numTokensToSwap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2284, + "src": "41494:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 2378, + "name": "buyBackPercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1377, + "src": "41512:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "41494:32:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2380, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "41493:34:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 2381, + "name": "TAX_DIVISOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1357, + "src": "41530:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "41493:48:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 2385, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "41571:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + ], + "id": 2384, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "41563:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2383, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "41563:7:0", + "typeDescriptions": {} + } + }, + "id": 2386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "41563:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2376, + "name": "swapTokensForNative", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2713, + "src": "41452:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (uint256,address)" + } + }, + "id": 2387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "41452:142:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2388, + "nodeType": "ExpressionStatement", + "src": "41452:142:0" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2391, + "name": "autoLiquidityPercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1371, + "src": "41659:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2392, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "41682:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "41659:24:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2404, + "nodeType": "IfStatement", + "src": "41655:170:0", + "trueBody": { + "id": 2403, + "nodeType": "Block", + "src": "41685:140:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2395, + "name": "numTokensToSwap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2284, + "src": "41739:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 2396, + "name": "autoLiquidityPercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1371, + "src": "41757:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "41739:38:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2398, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "41738:40:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 2399, + "name": "TAX_DIVISOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1357, + "src": "41781:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "41738:54:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2394, + "name": "autoLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2935, + "src": "41703:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 2401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "41703:107:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2402, + "nodeType": "ExpressionStatement", + "src": "41703:107:0" + } + ] + } + }, + { + "assignments": [ + 2406 + ], + "declarations": [ + { + "constant": false, + "id": 2406, + "mutability": "mutable", + "name": "treasuryAmount", + "nameLocation": "41875:14:0", + "nodeType": "VariableDeclaration", + "scope": 2471, + "src": "41867:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2405, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "41867:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2420, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2407, + "name": "numTokensToSwap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2284, + "src": "41892:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2408, + "name": "numTokensToSwap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2284, + "src": "41927:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2409, + "name": "autoLiquidityPercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1371, + "src": "41966:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 2410, + "name": "buyBackPercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1377, + "src": "42013:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "41966:61:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 2412, + "name": "distributionRewardsPercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1391, + "src": "42054:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "41966:114:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2414, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "41965:116:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "41927:154:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2416, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "41926:156:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 2417, + "name": "TAX_DIVISOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1357, + "src": "42101:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "41926:186:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "41892:220:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "41867:245:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2421, + "name": "treasuryAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2406, + "src": "42130:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2422, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "42147:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "42130:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2430, + "nodeType": "IfStatement", + "src": "42126:109:0", + "trueBody": { + "id": 2429, + "nodeType": "Block", + "src": "42150:85:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2425, + "name": "treasuryAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2406, + "src": "42188:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2426, + "name": "treasuryAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1348, + "src": "42204:15:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2424, + "name": "swapTokensForNative", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2713, + "src": "42168:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (uint256,address)" + } + }, + "id": 2427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "42168:52:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2428, + "nodeType": "ExpressionStatement", + "src": "42168:52:0" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2433, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2431, + "name": "buyBackThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1375, + "src": "42277:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2432, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "42296:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "42277:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2456, + "nodeType": "IfStatement", + "src": "42273:243:0", + "trueBody": { + "id": 2455, + "nodeType": "Block", + "src": "42299:217:0", + "statements": [ + { + "assignments": [ + 2435 + ], + "declarations": [ + { + "constant": false, + "id": 2435, + "mutability": "mutable", + "name": "ethBalance", + "nameLocation": "42325:10:0", + "nodeType": "VariableDeclaration", + "scope": 2455, + "src": "42317:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2434, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "42317:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2441, + "initialValue": { + "expression": { + "arguments": [ + { + "id": 2438, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "42346:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + ], + "id": 2437, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "42338:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2436, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "42338:7:0", + "typeDescriptions": {} + } + }, + "id": 2439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "42338:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "42352:7:0", + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "42338:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "42317:42:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2442, + "name": "ethBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2435, + "src": "42382:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 2443, + "name": "buyBackThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1375, + "src": "42395:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "42382:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2454, + "nodeType": "IfStatement", + "src": "42378:124:0", + "trueBody": { + "id": 2453, + "nodeType": "Block", + "src": "42413:89:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2446, + "name": "ethBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2435, + "src": "42455:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "hexValue": "307864656164", + "id": 2449, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "42475:6:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_57005_by_1", + "typeString": "int_const 57005" + }, + "value": "0xdead" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_57005_by_1", + "typeString": "int_const 57005" + } + ], + "id": 2448, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "42467:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2447, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "42467:7:0", + "typeDescriptions": {} + } + }, + "id": 2450, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "42467:15:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2445, + "name": "swapNativeForTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2526, + "src": "42435:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (uint256,address)" + } + }, + "id": 2451, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "42435:48:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2452, + "nodeType": "ExpressionStatement", + "src": "42435:48:0" + } + ] + } + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2457, + "name": "distributionRewardsPercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1391, + "src": "42534:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2458, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "42563:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "42534:30:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2470, + "nodeType": "IfStatement", + "src": "42530:189:0", + "trueBody": { + "id": 2469, + "nodeType": "Block", + "src": "42566:153:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2466, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2461, + "name": "numTokensToSwap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2284, + "src": "42627:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 2462, + "name": "distributionRewardsPercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1391, + "src": "42645:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "42627:44:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2464, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "42626:46:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 2465, + "name": "TAX_DIVISOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1357, + "src": "42675:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "42626:60:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2460, + "name": "swapAndSendDividends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2650, + "src": "42584:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 2467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "42584:120:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2468, + "nodeType": "ExpressionStatement", + "src": "42584:120:0" + } + ] + } + } + ] + } + } + ] + }, + "id": 2474, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2281, + "kind": "modifierInvocation", + "modifierName": { + "id": 2280, + "name": "swapping", + "nameLocations": [ + "40577:8:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1441, + "src": "40577:8:0" + }, + "nodeType": "ModifierInvocation", + "src": "40577:8:0" + } + ], + "name": "doSwap", + "nameLocation": "40559:6:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2279, + "nodeType": "ParameterList", + "parameters": [], + "src": "40565:2:0" + }, + "returnParameters": { + "id": 2282, + "nodeType": "ParameterList", + "parameters": [], + "src": "40586:0:0" + }, + "scope": 3380, + "src": "40550:2185:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2525, + "nodeType": "Block", + "src": "42812:428:0", + "statements": [ + { + "assignments": [ + 2485 + ], + "declarations": [ + { + "constant": false, + "id": 2485, + "mutability": "mutable", + "name": "path", + "nameLocation": "42839:4:0", + "nodeType": "VariableDeclaration", + "scope": 2525, + "src": "42822:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2483, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "42822:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2484, + "nodeType": "ArrayTypeName", + "src": "42822:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "id": 2491, + "initialValue": { + "arguments": [ + { + "hexValue": "32", + "id": 2489, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "42860:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + } + ], + "id": 2488, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "42846:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (address[] memory)" + }, + "typeName": { + "baseType": { + "id": 2486, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "42850:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2487, + "nodeType": "ArrayTypeName", + "src": "42850:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + } + }, + "id": 2490, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "42846:16:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "42822:40:0" + }, + { + "expression": { + "id": 2498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 2492, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2485, + "src": "42872:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2494, + "indexExpression": { + "hexValue": "30", + "id": 2493, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "42877:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "42872:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 2495, + "name": "router", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1423, + "src": "42882:6:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + }, + "id": 2496, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "42889:4:0", + "memberName": "WETH", + "nodeType": "MemberAccess", + "referencedDeclaration": 860, + "src": "42882:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_pure$__$returns$_t_address_$", + "typeString": "function () pure external returns (address)" + } + }, + "id": 2497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "42882:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "42872:23:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2499, + "nodeType": "ExpressionStatement", + "src": "42872:23:0" + }, + { + "expression": { + "id": 2507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 2500, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2485, + "src": "42905:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2502, + "indexExpression": { + "hexValue": "31", + "id": 2501, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "42910:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "42905:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 2505, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "42923:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + ], + "id": 2504, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "42915:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2503, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "42915:7:0", + "typeDescriptions": {} + } + }, + "id": 2506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "42915:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "42905:23:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2508, + "nodeType": "ExpressionStatement", + "src": "42905:23:0" + }, + { + "assignments": [ + 2510 + ], + "declarations": [ + { + "constant": false, + "id": 2510, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "42946:8:0", + "nodeType": "VariableDeclaration", + "scope": 2525, + "src": "42938:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2509, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "42938:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2513, + "initialValue": { + "expression": { + "id": 2511, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967292, + "src": "42957:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "42963:9:0", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "42957:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "42938:34:0" + }, + { + "expression": { + "arguments": [ + { + "hexValue": "30", + "id": 2519, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "43166:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 2520, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2485, + "src": "43181:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "id": 2521, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2478, + "src": "43199:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2522, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2510, + "src": "43215:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2514, + "name": "router", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1423, + "src": "43103:6:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + }, + "id": 2516, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "43110:21:0", + "memberName": "swapExactETHForTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 1051, + "src": "43103:28:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256,address[] memory,address,uint256) payable external returns (uint256[] memory)" + } + }, + "id": 2518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "id": 2517, + "name": "nativeAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2476, + "src": "43139:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "43103:49:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$value", + "typeString": "function (uint256,address[] memory,address,uint256) payable external returns (uint256[] memory)" + } + }, + "id": 2523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "43103:130:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2524, + "nodeType": "ExpressionStatement", + "src": "43103:130:0" + } + ] + }, + "id": 2526, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "swapNativeForTokens", + "nameLocation": "42750:19:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2479, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2476, + "mutability": "mutable", + "name": "nativeAmount", + "nameLocation": "42778:12:0", + "nodeType": "VariableDeclaration", + "scope": 2526, + "src": "42770:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2475, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "42770:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2478, + "mutability": "mutable", + "name": "to", + "nameLocation": "42800:2:0", + "nodeType": "VariableDeclaration", + "scope": 2526, + "src": "42792:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2477, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "42792:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "42769:34:0" + }, + "returnParameters": { + "id": 2480, + "nodeType": "ParameterList", + "parameters": [], + "src": "42812:0:0" + }, + "scope": 3380, + "src": "42741:499:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 2591, + "nodeType": "Block", + "src": "43407:472:0", + "statements": [ + { + "assignments": [ + 2541 + ], + "declarations": [ + { + "constant": false, + "id": 2541, + "mutability": "mutable", + "name": "path", + "nameLocation": "43434:4:0", + "nodeType": "VariableDeclaration", + "scope": 2591, + "src": "43417:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2539, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "43417:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2540, + "nodeType": "ArrayTypeName", + "src": "43417:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "id": 2547, + "initialValue": { + "arguments": [ + { + "hexValue": "33", + "id": 2545, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "43455:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + } + ], + "id": 2544, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "43441:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (address[] memory)" + }, + "typeName": { + "baseType": { + "id": 2542, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "43445:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2543, + "nodeType": "ArrayTypeName", + "src": "43445:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + } + }, + "id": 2546, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "43441:16:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "43417:40:0" + }, + { + "expression": { + "id": 2552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 2548, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2541, + "src": "43467:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2550, + "indexExpression": { + "hexValue": "30", + "id": 2549, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "43472:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "43467:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2551, + "name": "_fromTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2528, + "src": "43477:17:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "43467:27:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2553, + "nodeType": "ExpressionStatement", + "src": "43467:27:0" + }, + { + "expression": { + "id": 2558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 2554, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2541, + "src": "43504:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2556, + "indexExpression": { + "hexValue": "31", + "id": 2555, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "43509:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "43504:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2557, + "name": "dividentTokenBridgeAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1352, + "src": "43514:26:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "43504:36:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2559, + "nodeType": "ExpressionStatement", + "src": "43504:36:0" + }, + { + "expression": { + "id": 2564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 2560, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2541, + "src": "43550:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2562, + "indexExpression": { + "hexValue": "32", + "id": 2561, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "43555:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "43550:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2563, + "name": "_toTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2530, + "src": "43560:15:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "43550:25:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2565, + "nodeType": "ExpressionStatement", + "src": "43550:25:0" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 2569, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "43603:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + ], + "id": 2568, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "43595:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2567, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "43595:7:0", + "typeDescriptions": {} + } + }, + "id": 2570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "43595:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 2573, + "name": "router", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1423, + "src": "43618:6:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + ], + "id": 2572, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "43610:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2571, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "43610:7:0", + "typeDescriptions": {} + } + }, + "id": 2574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "43610:15:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2575, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2532, + "src": "43627:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2566, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 744, + "src": "43586:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 2576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "43586:53:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2577, + "nodeType": "ExpressionStatement", + "src": "43586:53:0" + }, + { + "expression": { + "arguments": [ + { + "id": 2581, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2532, + "src": "43765:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "30", + "id": 2582, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "43790:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 2583, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2541, + "src": "43805:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "id": 2584, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2534, + "src": "43823:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2585, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967292, + "src": "43840:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "43846:9:0", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "43840:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31303030", + "id": 2587, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "43858:4:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + }, + "value": "1000" + }, + "src": "43840:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2578, + "name": "router", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1423, + "src": "43691:6:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + }, + "id": 2580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "43698:53:0", + "memberName": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 1214, + "src": "43691:60:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256,address[] memory,address,uint256) external" + } + }, + "id": 2589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "43691:181:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2590, + "nodeType": "ExpressionStatement", + "src": "43691:181:0" + } + ] + }, + "id": 2592, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "swapTokensForTokens", + "nameLocation": "43255:19:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2535, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2528, + "mutability": "mutable", + "name": "_fromTokenAddress", + "nameLocation": "43292:17:0", + "nodeType": "VariableDeclaration", + "scope": 2592, + "src": "43284:25:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2527, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "43284:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2530, + "mutability": "mutable", + "name": "_toTokenAddress", + "nameLocation": "43327:15:0", + "nodeType": "VariableDeclaration", + "scope": 2592, + "src": "43319:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2529, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "43319:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2532, + "mutability": "mutable", + "name": "tokenAmount", + "nameLocation": "43360:11:0", + "nodeType": "VariableDeclaration", + "scope": 2592, + "src": "43352:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2531, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "43352:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2534, + "mutability": "mutable", + "name": "_to", + "nameLocation": "43389:3:0", + "nodeType": "VariableDeclaration", + "scope": 2592, + "src": "43381:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2533, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "43381:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "43274:124:0" + }, + "returnParameters": { + "id": 2536, + "nodeType": "ParameterList", + "parameters": [], + "src": "43407:0:0" + }, + "scope": 3380, + "src": "43246:633:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 2649, + "nodeType": "Block", + "src": "43944:623:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 2600, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "43995:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + ], + "id": 2599, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "43987:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2598, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "43987:7:0", + "typeDescriptions": {} + } + }, + "id": 2601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "43987:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2602, + "name": "dividendTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1350, + "src": "44028:20:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2603, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2594, + "src": "44084:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 2606, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "44127:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + ], + "id": 2605, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "44119:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2604, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "44119:7:0", + "typeDescriptions": {} + } + }, + "id": 2607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "44119:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2597, + "name": "swapTokensForTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2592, + "src": "43954:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (address,address,uint256,address)" + } + }, + "id": 2608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "43954:208:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2609, + "nodeType": "ExpressionStatement", + "src": "43954:208:0" + }, + { + "assignments": [ + 2611 + ], + "declarations": [ + { + "constant": false, + "id": 2611, + "mutability": "mutable", + "name": "dividends", + "nameLocation": "44180:9:0", + "nodeType": "VariableDeclaration", + "scope": 2649, + "src": "44172:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2610, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "44172:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2621, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 2618, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "44252:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + ], + "id": 2617, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "44244:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2616, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "44244:7:0", + "typeDescriptions": {} + } + }, + "id": 2619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "44244:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 2613, + "name": "dividendTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1350, + "src": "44199:20:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2612, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 206, + "src": "44192:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$206_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "44192:28:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$206", + "typeString": "contract IERC20" + } + }, + "id": 2615, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "44221:9:0", + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 163, + "src": "44192:38:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "44192:75:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "44172:95:0" + }, + { + "assignments": [ + 2623 + ], + "declarations": [ + { + "constant": false, + "id": 2623, + "mutability": "mutable", + "name": "success", + "nameLocation": "44282:7:0", + "nodeType": "VariableDeclaration", + "scope": 2649, + "src": "44277:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2622, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "44277:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 2634, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 2630, + "name": "tokenDividendTracker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1426, + "src": "44351:20:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDividendTracker_$1336", + "typeString": "contract IDividendTracker" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IDividendTracker_$1336", + "typeString": "contract IDividendTracker" + } + ], + "id": 2629, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "44343:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2628, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "44343:7:0", + "typeDescriptions": {} + } + }, + "id": 2631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "44343:29:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2632, + "name": "dividends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2611, + "src": "44386:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2625, + "name": "dividendTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1350, + "src": "44299:20:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2624, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 206, + "src": "44292:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$206_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "44292:28:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$206", + "typeString": "contract IERC20" + } + }, + "id": 2627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "44321:8:0", + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 173, + "src": "44292:37:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 2633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "44292:113:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "44277:128:0" + }, + { + "condition": { + "id": 2635, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2623, + "src": "44420:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2648, + "nodeType": "IfStatement", + "src": "44416:145:0", + "trueBody": { + "id": 2647, + "nodeType": "Block", + "src": "44429:132:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2639, + "name": "dividends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2611, + "src": "44484:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2636, + "name": "tokenDividendTracker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1426, + "src": "44443:20:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDividendTracker_$1336", + "typeString": "contract IDividendTracker" + } + }, + "id": 2638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "44464:19:0", + "memberName": "distributeDividends", + "nodeType": "MemberAccess", + "referencedDeclaration": 1330, + "src": "44443:40:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 2640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "44443:51:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2641, + "nodeType": "ExpressionStatement", + "src": "44443:51:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 2643, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2594, + "src": "44527:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2644, + "name": "dividends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2611, + "src": "44540:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2642, + "name": "SendDividends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1461, + "src": "44513:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256)" + } + }, + "id": 2645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "44513:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2646, + "nodeType": "EmitStatement", + "src": "44508:42:0" + } + ] + } + } + ] + }, + "id": 2650, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "swapAndSendDividends", + "nameLocation": "43894:20:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2595, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2594, + "mutability": "mutable", + "name": "tokenAmount", + "nameLocation": "43923:11:0", + "nodeType": "VariableDeclaration", + "scope": 2650, + "src": "43915:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2593, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "43915:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "43914:21:0" + }, + "returnParameters": { + "id": 2596, + "nodeType": "ParameterList", + "parameters": [], + "src": "43944:0:0" + }, + "scope": 3380, + "src": "43885:682:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 2712, + "nodeType": "Block", + "src": "44643:403:0", + "statements": [ + { + "assignments": [ + 2661 + ], + "declarations": [ + { + "constant": false, + "id": 2661, + "mutability": "mutable", + "name": "path", + "nameLocation": "44670:4:0", + "nodeType": "VariableDeclaration", + "scope": 2712, + "src": "44653:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2659, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "44653:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2660, + "nodeType": "ArrayTypeName", + "src": "44653:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "id": 2667, + "initialValue": { + "arguments": [ + { + "hexValue": "32", + "id": 2665, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "44691:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + } + ], + "id": 2664, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "44677:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (address[] memory)" + }, + "typeName": { + "baseType": { + "id": 2662, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "44681:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2663, + "nodeType": "ArrayTypeName", + "src": "44681:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + } + }, + "id": 2666, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "44677:16:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "44653:40:0" + }, + { + "expression": { + "id": 2675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 2668, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2661, + "src": "44703:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2670, + "indexExpression": { + "hexValue": "30", + "id": 2669, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "44708:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "44703:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 2673, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "44721:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + ], + "id": 2672, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "44713:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2671, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "44713:7:0", + "typeDescriptions": {} + } + }, + "id": 2674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "44713:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "44703:23:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2676, + "nodeType": "ExpressionStatement", + "src": "44703:23:0" + }, + { + "expression": { + "id": 2683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 2677, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2661, + "src": "44736:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2679, + "indexExpression": { + "hexValue": "31", + "id": 2678, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "44741:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "44736:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 2680, + "name": "router", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1423, + "src": "44746:6:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + }, + "id": 2681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "44753:4:0", + "memberName": "WETH", + "nodeType": "MemberAccess", + "referencedDeclaration": 860, + "src": "44746:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_pure$__$returns$_t_address_$", + "typeString": "function () pure external returns (address)" + } + }, + "id": 2682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "44746:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "44736:23:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2684, + "nodeType": "ExpressionStatement", + "src": "44736:23:0" + }, + { + "assignments": [ + 2686 + ], + "declarations": [ + { + "constant": false, + "id": 2686, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "44777:8:0", + "nodeType": "VariableDeclaration", + "scope": 2712, + "src": "44769:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2685, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "44769:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2689, + "initialValue": { + "expression": { + "id": 2687, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967292, + "src": "44788:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "44794:9:0", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "44788:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "44769:34:0" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 2693, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "44830:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + ], + "id": 2692, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "44822:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2691, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "44822:7:0", + "typeDescriptions": {} + } + }, + "id": 2694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "44822:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 2697, + "name": "router", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1423, + "src": "44845:6:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + ], + "id": 2696, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "44837:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2695, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "44837:7:0", + "typeDescriptions": {} + } + }, + "id": 2698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "44837:15:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2699, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2652, + "src": "44854:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2690, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 744, + "src": "44813:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 2700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "44813:53:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2701, + "nodeType": "ExpressionStatement", + "src": "44813:53:0" + }, + { + "expression": { + "arguments": [ + { + "id": 2705, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2652, + "src": "44947:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "30", + "id": 2706, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "44972:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 2707, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2661, + "src": "44987:4:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "id": 2708, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2654, + "src": "45005:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2709, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2686, + "src": "45021:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2702, + "name": "router", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1423, + "src": "44876:6:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + }, + "id": 2704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "44883:50:0", + "memberName": "swapExactTokensForETHSupportingFeeOnTransferTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 1240, + "src": "44876:57:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256,address[] memory,address,uint256) external" + } + }, + "id": 2710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "44876:163:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2711, + "nodeType": "ExpressionStatement", + "src": "44876:163:0" + } + ] + }, + "id": 2713, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "swapTokensForNative", + "nameLocation": "44582:19:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2655, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2652, + "mutability": "mutable", + "name": "tokenAmount", + "nameLocation": "44610:11:0", + "nodeType": "VariableDeclaration", + "scope": 2713, + "src": "44602:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2651, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "44602:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2654, + "mutability": "mutable", + "name": "to", + "nameLocation": "44631:2:0", + "nodeType": "VariableDeclaration", + "scope": 2713, + "src": "44623:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2653, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "44623:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "44601:33:0" + }, + "returnParameters": { + "id": 2656, + "nodeType": "ParameterList", + "parameters": [], + "src": "44643:0:0" + }, + "scope": 3380, + "src": "44573:473:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 2800, + "nodeType": "Block", + "src": "45168:1102:0", + "statements": [ + { + "assignments": [ + 2723 + ], + "declarations": [ + { + "constant": false, + "id": 2723, + "mutability": "mutable", + "name": "amountReceived", + "nameLocation": "45247:14:0", + "nodeType": "VariableDeclaration", + "scope": 2800, + "src": "45239:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2722, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "45239:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2725, + "initialValue": { + "id": 2724, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2719, + "src": "45264:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "45239:31:0" + }, + { + "assignments": [ + 2727 + ], + "declarations": [ + { + "constant": false, + "id": 2727, + "mutability": "mutable", + "name": "takeFee", + "nameLocation": "45333:7:0", + "nodeType": "VariableDeclaration", + "scope": 2800, + "src": "45328:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2726, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "45328:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 2729, + "initialValue": { + "hexValue": "74727565", + "id": 2728, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "45343:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "nodeType": "VariableDeclarationStatement", + "src": "45328:19:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2736, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 2730, + "name": "_isExcludedFromFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1401, + "src": "45361:18:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2732, + "indexExpression": { + "id": 2731, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2715, + "src": "45380:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "45361:24:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "baseExpression": { + "id": 2733, + "name": "_isExcludedFromFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1401, + "src": "45389:18:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2735, + "indexExpression": { + "id": 2734, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2717, + "src": "45408:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "45389:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "45361:50:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2742, + "nodeType": "IfStatement", + "src": "45357:96:0", + "trueBody": { + "id": 2741, + "nodeType": "Block", + "src": "45413:40:0", + "statements": [ + { + "expression": { + "id": 2739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2737, + "name": "takeFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2727, + "src": "45427:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 2738, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "45437:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "45427:15:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2740, + "nodeType": "ExpressionStatement", + "src": "45427:15:0" + } + ] + } + }, + { + "condition": { + "id": 2743, + "name": "takeFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2727, + "src": "45511:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2791, + "nodeType": "IfStatement", + "src": "45507:651:0", + "trueBody": { + "id": 2790, + "nodeType": "Block", + "src": "45520:638:0", + "statements": [ + { + "assignments": [ + 2745, + 2747 + ], + "declarations": [ + { + "constant": false, + "id": 2745, + "mutability": "mutable", + "name": "feeAmount1", + "nameLocation": "45620:10:0", + "nodeType": "VariableDeclaration", + "scope": 2790, + "src": "45612:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2744, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "45612:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2747, + "mutability": "mutable", + "name": "feeAmount2", + "nameLocation": "45640:10:0", + "nodeType": "VariableDeclaration", + "scope": 2790, + "src": "45632:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2746, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "45632:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2753, + "initialValue": { + "arguments": [ + { + "id": 2749, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2715, + "src": "45694:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2750, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2717, + "src": "45716:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2751, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2719, + "src": "45736:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2748, + "name": "calcBuySellTransferFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2892, + "src": "45654:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (address,address,uint256) view returns (uint256,uint256)" + } + }, + "id": 2752, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "45654:102:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "45611:145:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2754, + "name": "feeAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2745, + "src": "45775:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 2755, + "name": "feeAmount2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2747, + "src": "45788:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "45775:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2757, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "45801:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "45775:27:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2789, + "nodeType": "IfStatement", + "src": "45771:377:0", + "trueBody": { + "id": 2788, + "nodeType": "Block", + "src": "45804:344:0", + "statements": [ + { + "expression": { + "id": 2765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2759, + "name": "amountReceived", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2723, + "src": "45887:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2760, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2719, + "src": "45904:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 2761, + "name": "feeAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2745, + "src": "45913:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "45904:19:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 2763, + "name": "feeAmount2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2747, + "src": "45926:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "45904:32:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "45887:49:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2766, + "nodeType": "ExpressionStatement", + "src": "45887:49:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2767, + "name": "feeAmount2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2747, + "src": "45958:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2768, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "45971:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "45958:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2774, + "nodeType": "IfStatement", + "src": "45954:51:0", + "trueBody": { + "expression": { + "id": 2772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2770, + "name": "platformFeeAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1361, + "src": "45974:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 2771, + "name": "feeAmount2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2747, + "src": "45995:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "45974:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2773, + "nodeType": "ExpressionStatement", + "src": "45974:31:0" + } + }, + { + "expression": { + "arguments": [ + { + "id": 2778, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2715, + "src": "46088:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 2781, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "46102:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + ], + "id": 2780, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "46094:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2779, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "46094:7:0", + "typeDescriptions": {} + } + }, + "id": 2782, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "46094:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2783, + "name": "feeAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2745, + "src": "46109:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 2784, + "name": "feeAmount2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2747, + "src": "46122:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "46109:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2775, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967271, + "src": "46072:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_Token_$3380_$", + "typeString": "type(contract super Token)" + } + }, + "id": 2777, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "46078:9:0", + "memberName": "_transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 570, + "src": "46072:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 2786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "46072:61:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2787, + "nodeType": "ExpressionStatement", + "src": "46072:61:0" + } + ] + } + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 2795, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2715, + "src": "46238:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2796, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2717, + "src": "46244:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2797, + "name": "amountReceived", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2723, + "src": "46248:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2792, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967271, + "src": "46222:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_Token_$3380_$", + "typeString": "type(contract super Token)" + } + }, + "id": 2794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "46228:9:0", + "memberName": "_transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 570, + "src": "46222:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 2798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "46222:41:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2799, + "nodeType": "ExpressionStatement", + "src": "46222:41:0" + } + ] + }, + "id": 2801, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_finalizeTransfer", + "nameLocation": "45061:17:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2720, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2715, + "mutability": "mutable", + "name": "from", + "nameLocation": "45096:4:0", + "nodeType": "VariableDeclaration", + "scope": 2801, + "src": "45088:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2714, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "45088:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2717, + "mutability": "mutable", + "name": "to", + "nameLocation": "45118:2:0", + "nodeType": "VariableDeclaration", + "scope": 2801, + "src": "45110:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2716, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "45110:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2719, + "mutability": "mutable", + "name": "amount", + "nameLocation": "45138:6:0", + "nodeType": "VariableDeclaration", + "scope": 2801, + "src": "45130:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2718, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "45130:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "45078:72:0" + }, + "returnParameters": { + "id": 2721, + "nodeType": "ParameterList", + "parameters": [], + "src": "45168:0:0" + }, + "scope": 3380, + "src": "45052:1218:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2891, + "nodeType": "Block", + "src": "46429:895:0", + "statements": [ + { + "assignments": [ + 2815 + ], + "declarations": [ + { + "constant": false, + "id": 2815, + "mutability": "mutable", + "name": "totalFeePercent", + "nameLocation": "46486:15:0", + "nodeType": "VariableDeclaration", + "scope": 2891, + "src": "46478:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2814, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "46478:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2817, + "initialValue": { + "hexValue": "30", + "id": 2816, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "46504:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "46478:27:0" + }, + { + "assignments": [ + 2819 + ], + "declarations": [ + { + "constant": false, + "id": 2819, + "mutability": "mutable", + "name": "feeAmount1", + "nameLocation": "46523:10:0", + "nodeType": "VariableDeclaration", + "scope": 2891, + "src": "46515:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2818, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "46515:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2821, + "initialValue": { + "hexValue": "30", + "id": 2820, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "46536:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "46515:22:0" + }, + { + "assignments": [ + 2823 + ], + "declarations": [ + { + "constant": false, + "id": 2823, + "mutability": "mutable", + "name": "feeAmount2", + "nameLocation": "46555:10:0", + "nodeType": "VariableDeclaration", + "scope": 2891, + "src": "46547:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2822, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "46547:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2825, + "initialValue": { + "hexValue": "30", + "id": 2824, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "46568:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "46547:22:0" + }, + { + "assignments": [ + 2827 + ], + "declarations": [ + { + "constant": false, + "id": 2827, + "mutability": "mutable", + "name": "isTransfer", + "nameLocation": "46584:10:0", + "nodeType": "VariableDeclaration", + "scope": 2891, + "src": "46579:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2826, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "46579:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 2829, + "initialValue": { + "hexValue": "66616c7365", + "id": 2828, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "46597:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "nodeType": "VariableDeclarationStatement", + "src": "46579:23:0" + }, + { + "condition": { + "baseExpression": { + "id": 2830, + "name": "automatedMarketMakerPairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1409, + "src": "46654:25:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2832, + "indexExpression": { + "id": 2831, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2803, + "src": "46680:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "46654:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "baseExpression": { + "id": 2839, + "name": "automatedMarketMakerPairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1409, + "src": "46802:25:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2841, + "indexExpression": { + "id": 2840, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2805, + "src": "46828:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "46802:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2857, + "nodeType": "Block", + "src": "46929:97:0", + "statements": [ + { + "expression": { + "id": 2851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2848, + "name": "totalFeePercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2815, + "src": "46943:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "expression": { + "id": 2849, + "name": "_feesRates", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1429, + "src": "46962:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fees_$1420_storage", + "typeString": "struct Token.Fees storage ref" + } + }, + "id": 2850, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "46973:11:0", + "memberName": "transferFee", + "nodeType": "MemberAccess", + "referencedDeclaration": 1419, + "src": "46962:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "46943:41:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2852, + "nodeType": "ExpressionStatement", + "src": "46943:41:0" + }, + { + "expression": { + "id": 2855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2853, + "name": "isTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2827, + "src": "46998:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 2854, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "47011:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "46998:17:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2856, + "nodeType": "ExpressionStatement", + "src": "46998:17:0" + } + ] + }, + "id": 2858, + "nodeType": "IfStatement", + "src": "46798:228:0", + "trueBody": { + "id": 2847, + "nodeType": "Block", + "src": "46833:62:0", + "statements": [ + { + "expression": { + "id": 2845, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2842, + "name": "totalFeePercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2815, + "src": "46847:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "expression": { + "id": 2843, + "name": "_feesRates", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1429, + "src": "46866:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fees_$1420_storage", + "typeString": "struct Token.Fees storage ref" + } + }, + "id": 2844, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "46877:7:0", + "memberName": "sellFee", + "nodeType": "MemberAccess", + "referencedDeclaration": 1417, + "src": "46866:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "46847:37:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2846, + "nodeType": "ExpressionStatement", + "src": "46847:37:0" + } + ] + } + }, + "id": 2859, + "nodeType": "IfStatement", + "src": "46650:376:0", + "trueBody": { + "id": 2838, + "nodeType": "Block", + "src": "46687:61:0", + "statements": [ + { + "expression": { + "id": 2836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2833, + "name": "totalFeePercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2815, + "src": "46701:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "expression": { + "id": 2834, + "name": "_feesRates", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1429, + "src": "46720:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fees_$1420_storage", + "typeString": "struct Token.Fees storage ref" + } + }, + "id": 2835, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "46731:6:0", + "memberName": "buyFee", + "nodeType": "MemberAccess", + "referencedDeclaration": 1415, + "src": "46720:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "46701:36:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2837, + "nodeType": "ExpressionStatement", + "src": "46701:36:0" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2860, + "name": "totalFeePercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2815, + "src": "47067:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2861, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "47085:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "47067:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2873, + "nodeType": "IfStatement", + "src": "47063:103:0", + "trueBody": { + "id": 2872, + "nodeType": "Block", + "src": "47088:78:0", + "statements": [ + { + "expression": { + "id": 2870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2863, + "name": "feeAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2819, + "src": "47102:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2869, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2864, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2807, + "src": "47116:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 2865, + "name": "totalFeePercent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2815, + "src": "47125:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "47116:24:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2867, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "47115:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 2868, + "name": "TAX_DIVISOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1357, + "src": "47144:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "47115:40:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "47102:53:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2871, + "nodeType": "ExpressionStatement", + "src": "47102:53:0" + } + ] + } + }, + { + "condition": { + "id": 2875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "47180:11:0", + "subExpression": { + "id": 2874, + "name": "isTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2827, + "src": "47181:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2886, + "nodeType": "IfStatement", + "src": "47176:100:0", + "trueBody": { + "id": 2885, + "nodeType": "Block", + "src": "47193:83:0", + "statements": [ + { + "expression": { + "id": 2883, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2876, + "name": "feeAmount2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2823, + "src": "47207:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2882, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2877, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2807, + "src": "47221:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 2878, + "name": "PLATFORM_FEE_PERCENT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1366, + "src": "47230:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "47221:29:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2880, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "47220:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 2881, + "name": "TAX_DIVISOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1357, + "src": "47254:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "47220:45:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "47207:58:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2884, + "nodeType": "ExpressionStatement", + "src": "47207:58:0" + } + ] + } + }, + { + "expression": { + "components": [ + { + "id": 2887, + "name": "feeAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2819, + "src": "47294:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2888, + "name": "feeAmount2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2823, + "src": "47306:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2889, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "47293:24:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "functionReturnParameters": 2813, + "id": 2890, + "nodeType": "Return", + "src": "47286:31:0" + } + ] + }, + "id": 2892, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "calcBuySellTransferFee", + "nameLocation": "46285:22:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2808, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2803, + "mutability": "mutable", + "name": "from", + "nameLocation": "46325:4:0", + "nodeType": "VariableDeclaration", + "scope": 2892, + "src": "46317:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2802, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "46317:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2805, + "mutability": "mutable", + "name": "to", + "nameLocation": "46347:2:0", + "nodeType": "VariableDeclaration", + "scope": 2892, + "src": "46339:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2804, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "46339:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2807, + "mutability": "mutable", + "name": "amount", + "nameLocation": "46367:6:0", + "nodeType": "VariableDeclaration", + "scope": 2892, + "src": "46359:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2806, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "46359:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "46307:72:0" + }, + "returnParameters": { + "id": 2813, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2810, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2892, + "src": "46411:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2809, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "46411:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2812, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2892, + "src": "46420:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2811, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "46420:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "46410:18:0" + }, + "scope": 3380, + "src": "46276:1048:0", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2934, + "nodeType": "Block", + "src": "47381:660:0", + "statements": [ + { + "assignments": [ + 2898 + ], + "declarations": [ + { + "constant": false, + "id": 2898, + "mutability": "mutable", + "name": "half", + "nameLocation": "47449:4:0", + "nodeType": "VariableDeclaration", + "scope": 2934, + "src": "47441:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2897, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "47441:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2902, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2899, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2894, + "src": "47456:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "32", + "id": 2900, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "47470:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "47456:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "47441:30:0" + }, + { + "assignments": [ + 2904 + ], + "declarations": [ + { + "constant": false, + "id": 2904, + "mutability": "mutable", + "name": "initialBalance", + "nameLocation": "47751:14:0", + "nodeType": "VariableDeclaration", + "scope": 2934, + "src": "47743:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2903, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "47743:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2910, + "initialValue": { + "expression": { + "arguments": [ + { + "id": 2907, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "47776:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + ], + "id": 2906, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "47768:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2905, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "47768:7:0", + "typeDescriptions": {} + } + }, + "id": 2908, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "47768:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "47782:7:0", + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "47768:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "47743:46:0" + }, + { + "expression": { + "arguments": [ + { + "id": 2912, + "name": "half", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2898, + "src": "47820:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 2915, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "47834:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + ], + "id": 2914, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "47826:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2913, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "47826:7:0", + "typeDescriptions": {} + } + }, + "id": 2916, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "47826:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2911, + "name": "swapTokensForNative", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2713, + "src": "47800:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (uint256,address)" + } + }, + "id": 2917, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "47800:40:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2918, + "nodeType": "ExpressionStatement", + "src": "47800:40:0" + }, + { + "assignments": [ + 2920 + ], + "declarations": [ + { + "constant": false, + "id": 2920, + "mutability": "mutable", + "name": "newBalance", + "nameLocation": "47906:10:0", + "nodeType": "VariableDeclaration", + "scope": 2934, + "src": "47898:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2919, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "47898:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2928, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 2923, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "47927:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + ], + "id": 2922, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "47919:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2921, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "47919:7:0", + "typeDescriptions": {} + } + }, + "id": 2924, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "47919:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "47933:7:0", + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "47919:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 2926, + "name": "initialBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2904, + "src": "47943:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "47919:38:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "47898:59:0" + }, + { + "expression": { + "arguments": [ + { + "id": 2930, + "name": "half", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2898, + "src": "48017:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2931, + "name": "newBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2920, + "src": "48023:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2929, + "name": "addLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2983, + "src": "48004:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256)" + } + }, + "id": 2932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "48004:30:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2933, + "nodeType": "ExpressionStatement", + "src": "48004:30:0" + } + ] + }, + "functionSelector": "c6aca36b", + "id": 2935, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "autoLiquidity", + "nameLocation": "47339:13:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2895, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2894, + "mutability": "mutable", + "name": "tokenAmount", + "nameLocation": "47361:11:0", + "nodeType": "VariableDeclaration", + "scope": 2935, + "src": "47353:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2893, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "47353:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "47352:21:0" + }, + "returnParameters": { + "id": 2896, + "nodeType": "ParameterList", + "parameters": [], + "src": "47381:0:0" + }, + "scope": 3380, + "src": "47330:711:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 2982, + "nodeType": "Block", + "src": "48117:392:0", + "statements": [ + { + "assignments": [ + 2943 + ], + "declarations": [ + { + "constant": false, + "id": 2943, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "48135:8:0", + "nodeType": "VariableDeclaration", + "scope": 2982, + "src": "48127:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2942, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "48127:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2946, + "initialValue": { + "expression": { + "id": 2944, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967292, + "src": "48146:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "48152:9:0", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "48146:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "48127:34:0" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 2950, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "48188:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + ], + "id": 2949, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "48180:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2948, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "48180:7:0", + "typeDescriptions": {} + } + }, + "id": 2951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "48180:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 2954, + "name": "router", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1423, + "src": "48203:6:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + ], + "id": 2953, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "48195:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2952, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "48195:7:0", + "typeDescriptions": {} + } + }, + "id": 2955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "48195:15:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "arguments": [ + { + "id": 2958, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "48217:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2957, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "48217:7:0", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 2956, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "48212:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2959, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "48212:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 2960, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "48226:3:0", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "48212:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2947, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 744, + "src": "48171:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 2961, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "48171:59:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2962, + "nodeType": "ExpressionStatement", + "src": "48171:59:0" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 2970, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "48302:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + ], + "id": 2969, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "48294:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2968, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "48294:7:0", + "typeDescriptions": {} + } + }, + "id": 2971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "48294:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2972, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2937, + "src": "48321:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "30", + "id": 2973, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "48346:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 2974, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "48388:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "arguments": [ + { + "id": 2977, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "48438:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + ], + "id": 2976, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "48430:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2975, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "48430:7:0", + "typeDescriptions": {} + } + }, + "id": 2978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "48430:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2979, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2943, + "src": "48484:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2963, + "name": "router", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1423, + "src": "48240:6:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + }, + "id": 2965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "48247:15:0", + "memberName": "addLiquidityETH", + "nodeType": "MemberAccess", + "referencedDeclaration": 906, + "src": "48240:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "function (address,uint256,uint256,uint256,address,uint256) payable external returns (uint256,uint256,uint256)" + } + }, + "id": 2967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "id": 2966, + "name": "ethAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2939, + "src": "48270:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "48240:40:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$value", + "typeString": "function (address,uint256,uint256,uint256,address,uint256) payable external returns (uint256,uint256,uint256)" + } + }, + "id": 2980, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "48240:262:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256,uint256)" + } + }, + "id": 2981, + "nodeType": "ExpressionStatement", + "src": "48240:262:0" + } + ] + }, + "id": 2983, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "addLiquidity", + "nameLocation": "48056:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2940, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2937, + "mutability": "mutable", + "name": "tokenAmount", + "nameLocation": "48077:11:0", + "nodeType": "VariableDeclaration", + "scope": 2983, + "src": "48069:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2936, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "48069:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2939, + "mutability": "mutable", + "name": "ethAmount", + "nameLocation": "48098:9:0", + "nodeType": "VariableDeclaration", + "scope": 2983, + "src": "48090:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2938, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "48090:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "48068:40:0" + }, + "returnParameters": { + "id": 2941, + "nodeType": "ParameterList", + "parameters": [], + "src": "48117:0:0" + }, + "scope": 3380, + "src": "48047:462:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3201, + "nodeType": "Block", + "src": "48634:3122:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2993, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2985, + "src": "48665:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 2996, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "48681:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2995, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "48673:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2994, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "48673:7:0", + "typeDescriptions": {} + } + }, + "id": 2997, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "48673:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "48665:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a207472616e736665722066726f6d20746865205a45524f5f414444524553532061646472657373", + "id": 2999, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "48697:47:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_505cbe158d723a9159371d8cf93e932bdb9325c6b7a3c845e9ba6f2008c64afb", + "typeString": "literal_string \"ERC20: transfer from the ZERO_ADDRESS address\"" + }, + "value": "ERC20: transfer from the ZERO_ADDRESS address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_505cbe158d723a9159371d8cf93e932bdb9325c6b7a3c845e9ba6f2008c64afb", + "typeString": "literal_string \"ERC20: transfer from the ZERO_ADDRESS address\"" + } + ], + "id": 2992, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "48644:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3000, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "48644:110:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3001, + "nodeType": "ExpressionStatement", + "src": "48644:110:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3003, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2987, + "src": "48785:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 3006, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "48799:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 3005, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "48791:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3004, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "48791:7:0", + "typeDescriptions": {} + } + }, + "id": 3007, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "48791:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "48785:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332303a207472616e7366657220746f20746865205a45524f5f414444524553532061646472657373", + "id": 3009, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "48815:45:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3582c21cf183a029ce3d0f94ddb859f327e7047faa1bab51d0364718e50af2b7", + "typeString": "literal_string \"ERC20: transfer to the ZERO_ADDRESS address\"" + }, + "value": "ERC20: transfer to the ZERO_ADDRESS address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3582c21cf183a029ce3d0f94ddb859f327e7047faa1bab51d0364718e50af2b7", + "typeString": "literal_string \"ERC20: transfer to the ZERO_ADDRESS address\"" + } + ], + "id": 3002, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "48764:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3010, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "48764:106:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3011, + "nodeType": "ExpressionStatement", + "src": "48764:106:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3013, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2989, + "src": "48901:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 3014, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "48910:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "48901:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "5472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e205a45524f5f41444452455353", + "id": 3016, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "48925:51:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7770069c1412e1e97f74bf1adc7b5560877706f201ca173243664b9689128eae", + "typeString": "literal_string \"Transfer amount must be greater than ZERO_ADDRESS\"" + }, + "value": "Transfer amount must be greater than ZERO_ADDRESS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7770069c1412e1e97f74bf1adc7b5560877706f201ca173243664b9689128eae", + "typeString": "literal_string \"Transfer amount must be greater than ZERO_ADDRESS\"" + } + ], + "id": 3012, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "48880:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "48880:106:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3018, + "nodeType": "ExpressionStatement", + "src": "48880:106:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3019, + "name": "transferDelayEnabled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1397, + "src": "49014:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3020, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967292, + "src": "49050:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 3021, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "49056:9:0", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "49050:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3022, + "name": "initialDelayTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1381, + "src": "49069:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 3023, + "name": "totalDelayTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1383, + "src": "49088:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "49069:33:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3025, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "49068:35:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "49050:53:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "49014:89:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3100, + "nodeType": "IfStatement", + "src": "48997:1354:0", + "trueBody": { + "id": 3099, + "nodeType": "Block", + "src": "49114:1237:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3052, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3038, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3031, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3028, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2985, + "src": "49276:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3029, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58, + "src": "49284:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 3030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "49284:7:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "49276:15:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3037, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3032, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2987, + "src": "49311:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "id": 3035, + "name": "router", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1423, + "src": "49325:6:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IUniswapV2Router02_$1241", + "typeString": "contract IUniswapV2Router02" + } + ], + "id": 3034, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "49317:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3033, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "49317:7:0", + "typeDescriptions": {} + } + }, + "id": 3036, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "49317:15:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "49311:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "49276:56:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3044, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3039, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2987, + "src": "49352:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "id": 3042, + "name": "lpPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1343, + "src": "49366:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3041, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "49358:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3040, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "49358:7:0", + "typeDescriptions": {} + } + }, + "id": 3043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "49358:15:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "49352:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "49276:97:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3046, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2987, + "src": "49393:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "id": 3049, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "49407:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + ], + "id": 3048, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "49399:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3047, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "49399:7:0", + "typeDescriptions": {} + } + }, + "id": 3050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "49399:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "49393:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "49276:136:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3098, + "nodeType": "IfStatement", + "src": "49255:1086:0", + "trueBody": { + "id": 3097, + "nodeType": "Block", + "src": "49427:914:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3055, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3053, + "name": "maxBuyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1379, + "src": "49575:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 3054, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "49589:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "49575:15:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3064, + "nodeType": "IfStatement", + "src": "49571:110:0", + "trueBody": { + "id": 3063, + "nodeType": "Block", + "src": "49592:89:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3059, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3057, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2989, + "src": "49622:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 3058, + "name": "maxBuyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1379, + "src": "49632:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "49622:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4d617820427579204c696d69742e", + "id": 3060, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "49645:16:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d307cf5057acf6192f8c3345539c74ed8b583a35371b28b0d0c907213e95f1b4", + "typeString": "literal_string \"Max Buy Limit.\"" + }, + "value": "Max Buy Limit." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d307cf5057acf6192f8c3345539c74ed8b583a35371b28b0d0c907213e95f1b4", + "typeString": "literal_string \"Max Buy Limit.\"" + } + ], + "id": 3056, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "49614:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3061, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "49614:48:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3062, + "nodeType": "ExpressionStatement", + "src": "49614:48:0" + } + ] + } + }, + { + "condition": { + "id": 3065, + "name": "gasLimitActive", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1395, + "src": "49775:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3075, + "nodeType": "IfStatement", + "src": "49771:199:0", + "trueBody": { + "id": 3074, + "nodeType": "Block", + "src": "49791:179:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3067, + "name": "tx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967270, + "src": "49846:2:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_transaction", + "typeString": "tx" + } + }, + "id": 3068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "49849:8:0", + "memberName": "gasprice", + "nodeType": "MemberAccess", + "src": "49846:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 3069, + "name": "maxGasPriceLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1385, + "src": "49861:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "49846:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4761732070726963652065786365656473206c696d69742e", + "id": 3071, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "49903:26:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_427cc8fdd551f5a1690326ff49c01be62d1af7b92a2a352e1057b460d678c3e6", + "typeString": "literal_string \"Gas price exceeds limit.\"" + }, + "value": "Gas price exceeds limit." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_427cc8fdd551f5a1690326ff49c01be62d1af7b92a2a352e1057b460d678c3e6", + "typeString": "literal_string \"Gas price exceeds limit.\"" + } + ], + "id": 3066, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "49813:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "49813:138:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3073, + "nodeType": "ExpressionStatement", + "src": "49813:138:0" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 3077, + "name": "_holderLastTransferTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1413, + "src": "50053:28:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3080, + "indexExpression": { + "expression": { + "id": 3078, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "50082:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3079, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "50086:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "50082:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "50053:40:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "expression": { + "id": 3081, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967292, + "src": "50097:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 3082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "50103:9:0", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "50097:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "50053:59:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "5f7472616e736665723a3a205472616e736665722044656c617920656e61626c65642e", + "id": 3084, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "50134:37:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ba6dd3af0965ff1328ef6bd61aaa1ef07f86c853de0ee833799e555438816987", + "typeString": "literal_string \"_transfer:: Transfer Delay enabled.\"" + }, + "value": "_transfer:: Transfer Delay enabled." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ba6dd3af0965ff1328ef6bd61aaa1ef07f86c853de0ee833799e555438816987", + "typeString": "literal_string \"_transfer:: Transfer Delay enabled.\"" + } + ], + "id": 3076, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "50024:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3085, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "50024:165:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3086, + "nodeType": "ExpressionStatement", + "src": "50024:165:0" + }, + { + "expression": { + "id": 3095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 3087, + "name": "_holderLastTransferTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1413, + "src": "50207:28:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3090, + "indexExpression": { + "expression": { + "id": 3088, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "50236:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3089, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "50240:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "50236:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "50207:40:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3091, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967292, + "src": "50270:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 3092, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "50276:9:0", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "50270:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 3093, + "name": "timeDelayBetweenTx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1387, + "src": "50308:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "50270:56:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "50207:119:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3096, + "nodeType": "ExpressionStatement", + "src": "50207:119:0" + } + ] + } + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3101, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2985, + "src": "50378:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3102, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58, + "src": "50386:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 3103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "50386:7:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "50378:15:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3105, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2987, + "src": "50409:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3106, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58, + "src": "50415:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 3107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "50415:7:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "50409:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "50378:44:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3110, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2987, + "src": "50438:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 3113, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "50452:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 3112, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "50444:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3111, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "50444:7:0", + "typeDescriptions": {} + } + }, + "id": 3114, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "50444:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "50438:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "50378:76:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3117, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2987, + "src": "50470:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "307864656164", + "id": 3120, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "50484:6:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_57005_by_1", + "typeString": "int_const 57005" + }, + "value": "0xdead" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_57005_by_1", + "typeString": "int_const 57005" + } + ], + "id": 3119, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "50476:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3118, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "50476:7:0", + "typeDescriptions": {} + } + }, + "id": 3121, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "50476:15:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "50470:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "50378:113:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3129, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3124, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2987, + "src": "50507:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "id": 3127, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "50521:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + ], + "id": 3126, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "50513:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3125, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "50513:7:0", + "typeDescriptions": {} + } + }, + "id": 3128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "50513:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "50507:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "50378:148:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "id": 3132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "50542:7:0", + "subExpression": { + "id": 3131, + "name": "inSwap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1393, + "src": "50543:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "50378:171:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3200, + "nodeType": "IfStatement", + "src": "50361:1389:0", + "trueBody": { + "id": 3199, + "nodeType": "Block", + "src": "50560:1190:0", + "statements": [ + { + "condition": { + "baseExpression": { + "id": 3134, + "name": "automatedMarketMakerPairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1409, + "src": "50619:25:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 3136, + "indexExpression": { + "id": 3135, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2985, + "src": "50645:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "50619:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "baseExpression": { + "id": 3162, + "name": "automatedMarketMakerPairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1409, + "src": "51149:25:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 3164, + "indexExpression": { + "id": 3163, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2987, + "src": "51175:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "51149:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 3196, + "nodeType": "Block", + "src": "51493:247:0", + "statements": [ + { + "condition": { + "id": 3182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "51515:25:0", + "subExpression": { + "baseExpression": { + "id": 3179, + "name": "_isExcludedFromMaxTx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1405, + "src": "51516:20:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 3181, + "indexExpression": { + "id": 3180, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2987, + "src": "51537:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "51516:24:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3195, + "nodeType": "IfStatement", + "src": "51511:215:0", + "trueBody": { + "id": 3194, + "nodeType": "Block", + "src": "51542:184:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3184, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2989, + "src": "51597:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "arguments": [ + { + "id": 3186, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2987, + "src": "51616:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3185, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 322, + "src": "51606:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 3187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "51606:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "51597:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 3189, + "name": "maxWalletAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1359, + "src": "51623:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "51597:41:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4d61782077616c6c6574206578636565646564", + "id": 3191, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "51664:21:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d02ce7a72410a6351efcb149b27b582bc4ff73b7af05eaebe8fe75a22e828801", + "typeString": "literal_string \"Max wallet exceeded\"" + }, + "value": "Max wallet exceeded" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d02ce7a72410a6351efcb149b27b582bc4ff73b7af05eaebe8fe75a22e828801", + "typeString": "literal_string \"Max wallet exceeded\"" + } + ], + "id": 3183, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "51564:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "51564:143:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3193, + "nodeType": "ExpressionStatement", + "src": "51564:143:0" + } + ] + } + } + ] + }, + "id": 3197, + "nodeType": "IfStatement", + "src": "51145:595:0", + "trueBody": { + "id": 3178, + "nodeType": "Block", + "src": "51180:271:0", + "statements": [ + { + "condition": { + "id": 3168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "51202:25:0", + "subExpression": { + "baseExpression": { + "id": 3165, + "name": "_isExcludedFromMaxTx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1405, + "src": "51203:20:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 3167, + "indexExpression": { + "id": 3166, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2987, + "src": "51224:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "51203:24:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3177, + "nodeType": "IfStatement", + "src": "51198:239:0", + "trueBody": { + "id": 3176, + "nodeType": "Block", + "src": "51229:208:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3170, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2989, + "src": "51284:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 3171, + "name": "maxTransactionAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1373, + "src": "51294:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "51284:30:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "53656c6c207472616e7366657220616d6f756e74206578636565647320746865206d61785472616e73616374696f6e416d6f756e742e", + "id": 3173, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "51340:56:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_45795739ee8c4862a1182c5459684a0856eb3b31cba4a93836ffead033818001", + "typeString": "literal_string \"Sell transfer amount exceeds the maxTransactionAmount.\"" + }, + "value": "Sell transfer amount exceeds the maxTransactionAmount." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_45795739ee8c4862a1182c5459684a0856eb3b31cba4a93836ffead033818001", + "typeString": "literal_string \"Sell transfer amount exceeds the maxTransactionAmount.\"" + } + ], + "id": 3169, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "51251:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "51251:167:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3175, + "nodeType": "ExpressionStatement", + "src": "51251:167:0" + } + ] + } + } + ] + } + }, + "id": 3198, + "nodeType": "IfStatement", + "src": "50615:1125:0", + "trueBody": { + "id": 3161, + "nodeType": "Block", + "src": "50652:435:0", + "statements": [ + { + "condition": { + "id": 3140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "50674:25:0", + "subExpression": { + "baseExpression": { + "id": 3137, + "name": "_isExcludedFromMaxTx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1405, + "src": "50675:20:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 3139, + "indexExpression": { + "id": 3138, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2987, + "src": "50696:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "50675:24:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3160, + "nodeType": "IfStatement", + "src": "50670:403:0", + "trueBody": { + "id": 3159, + "nodeType": "Block", + "src": "50701:372:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3142, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2989, + "src": "50756:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 3143, + "name": "maxTransactionAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1373, + "src": "50766:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "50756:30:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "427579207472616e7366657220616d6f756e74206578636565647320746865206d61785472616e73616374696f6e416d6f756e742e", + "id": 3145, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "50812:55:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_805d330b9b3802086ea8da26977302cf75c4a4901d0c0395a3b66d6563c4b599", + "typeString": "literal_string \"Buy transfer amount exceeds the maxTransactionAmount.\"" + }, + "value": "Buy transfer amount exceeds the maxTransactionAmount." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_805d330b9b3802086ea8da26977302cf75c4a4901d0c0395a3b66d6563c4b599", + "typeString": "literal_string \"Buy transfer amount exceeds the maxTransactionAmount.\"" + } + ], + "id": 3141, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "50723:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "50723:166:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3147, + "nodeType": "ExpressionStatement", + "src": "50723:166:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3149, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2989, + "src": "50944:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "arguments": [ + { + "id": 3151, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2987, + "src": "50963:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3150, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 322, + "src": "50953:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 3152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "50953:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "50944:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 3154, + "name": "maxWalletAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1359, + "src": "50970:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "50944:41:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4d61782077616c6c6574206578636565646564", + "id": 3156, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "51011:21:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d02ce7a72410a6351efcb149b27b582bc4ff73b7af05eaebe8fe75a22e828801", + "typeString": "literal_string \"Max wallet exceeded\"" + }, + "value": "Max wallet exceeded" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d02ce7a72410a6351efcb149b27b582bc4ff73b7af05eaebe8fe75a22e828801", + "typeString": "literal_string \"Max wallet exceeded\"" + } + ], + "id": 3148, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "50911:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "50911:143:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3158, + "nodeType": "ExpressionStatement", + "src": "50911:143:0" + } + ] + } + } + ] + } + } + ] + } + } + ] + }, + "id": 3202, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_beforeTransferCheck", + "nameLocation": "48524:20:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2990, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2985, + "mutability": "mutable", + "name": "from", + "nameLocation": "48562:4:0", + "nodeType": "VariableDeclaration", + "scope": 3202, + "src": "48554:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2984, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "48554:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2987, + "mutability": "mutable", + "name": "to", + "nameLocation": "48584:2:0", + "nodeType": "VariableDeclaration", + "scope": 3202, + "src": "48576:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2986, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "48576:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2989, + "mutability": "mutable", + "name": "amount", + "nameLocation": "48604:6:0", + "nodeType": "VariableDeclaration", + "scope": 3202, + "src": "48596:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2988, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "48596:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "48544:72:0" + }, + "returnParameters": { + "id": 2991, + "nodeType": "ParameterList", + "parameters": [], + "src": "48634:0:0" + }, + "scope": 3380, + "src": "48515:3241:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 3247, + "nodeType": "Block", + "src": "51873:308:0", + "statements": [ + { + "assignments": [ + 3212 + ], + "declarations": [ + { + "constant": false, + "id": 3212, + "mutability": "mutable", + "name": "contractTokenBalance", + "nameLocation": "51891:20:0", + "nodeType": "VariableDeclaration", + "scope": 3247, + "src": "51883:28:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3211, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "51883:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3219, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 3216, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "51932:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Token_$3380", + "typeString": "contract Token" + } + ], + "id": 3215, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "51924:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3214, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "51924:7:0", + "typeDescriptions": {} + } + }, + "id": 3217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "51924:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3213, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 322, + "src": "51914:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 3218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "51914:24:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "51883:55:0" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3220, + "name": "contractTokenBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3212, + "src": "51967:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 3221, + "name": "swapThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1354, + "src": "51991:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "51967:37:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "id": 3224, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "52020:7:0", + "subExpression": { + "id": 3223, + "name": "inSwap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1393, + "src": "52021:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "51967:60:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3226, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3204, + "src": "52043:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3227, + "name": "lpPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1343, + "src": "52051:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "52043:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "51967:90:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 3231, + "name": "lpPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1343, + "src": "52083:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3230, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 322, + "src": "52073:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 3232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "52073:17:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 3233, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "52093:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "52073:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "51967:127:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "id": 3239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "52110:23:0", + "subExpression": { + "baseExpression": { + "id": 3236, + "name": "_isExcludedFromFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1401, + "src": "52111:18:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 3238, + "indexExpression": { + "id": 3237, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3206, + "src": "52130:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "52111:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "51967:166:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "id": 3244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "52149:25:0", + "subExpression": { + "baseExpression": { + "id": 3241, + "name": "_isExcludedFromFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1401, + "src": "52150:18:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 3243, + "indexExpression": { + "id": 3242, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3204, + "src": "52169:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "52150:24:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "51967:207:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3210, + "id": 3246, + "nodeType": "Return", + "src": "51948:226:0" + } + ] + }, + "id": 3248, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contractMustSwap", + "nameLocation": "51771:16:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3207, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3204, + "mutability": "mutable", + "name": "from", + "nameLocation": "51805:4:0", + "nodeType": "VariableDeclaration", + "scope": 3248, + "src": "51797:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3203, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "51797:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3206, + "mutability": "mutable", + "name": "to", + "nameLocation": "51827:2:0", + "nodeType": "VariableDeclaration", + "scope": 3248, + "src": "51819:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3205, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "51819:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "51787:48:0" + }, + "returnParameters": { + "id": 3210, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3209, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3248, + "src": "51867:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3208, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "51867:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "51866:6:0" + }, + "scope": 3380, + "src": "51762:419:0", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 3259, + "nodeType": "Block", + "src": "52280:51:0", + "statements": [ + { + "expression": { + "baseExpression": { + "id": 3255, + "name": "_isExcludedFromFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1401, + "src": "52297:18:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 3257, + "indexExpression": { + "id": 3256, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3250, + "src": "52316:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "52297:27:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3254, + "id": 3258, + "nodeType": "Return", + "src": "52290:34:0" + } + ] + }, + "functionSelector": "5342acb4", + "id": 3260, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isExcludedFromFee", + "nameLocation": "52196:17:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3251, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3250, + "mutability": "mutable", + "name": "account", + "nameLocation": "52231:7:0", + "nodeType": "VariableDeclaration", + "scope": 3260, + "src": "52223:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3249, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "52223:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "52213:31:0" + }, + "returnParameters": { + "id": 3254, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3253, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3260, + "src": "52274:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3252, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "52274:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "52273:6:0" + }, + "scope": 3380, + "src": "52187:144:0", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 3275, + "nodeType": "Block", + "src": "52435:50:0", + "statements": [ + { + "expression": { + "id": 3273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 3269, + "name": "_isExcludedFromFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1401, + "src": "52445:18:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 3271, + "indexExpression": { + "id": 3270, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3262, + "src": "52464:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "52445:27:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3272, + "name": "val", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3264, + "src": "52475:3:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "52445:33:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3274, + "nodeType": "ExpressionStatement", + "src": "52445:33:0" + } + ] + }, + "functionSelector": "df8408fe", + "id": 3276, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 3267, + "kind": "modifierInvocation", + "modifierName": { + "id": 3266, + "name": "onlyOwner", + "nameLocations": [ + "52425:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49, + "src": "52425:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "52425:9:0" + } + ], + "name": "excludeFromFee", + "nameLocation": "52346:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3265, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3262, + "mutability": "mutable", + "name": "account", + "nameLocation": "52378:7:0", + "nodeType": "VariableDeclaration", + "scope": 3276, + "src": "52370:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3261, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "52370:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3264, + "mutability": "mutable", + "name": "val", + "nameLocation": "52400:3:0", + "nodeType": "VariableDeclaration", + "scope": 3276, + "src": "52395:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3263, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "52395:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "52360:49:0" + }, + "returnParameters": { + "id": 3268, + "nodeType": "ParameterList", + "parameters": [], + "src": "52435:0:0" + }, + "scope": 3380, + "src": "52337:148:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 3287, + "nodeType": "Block", + "src": "52586:53:0", + "statements": [ + { + "expression": { + "baseExpression": { + "id": 3283, + "name": "_isExcludedFromMaxTx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1405, + "src": "52603:20:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 3285, + "indexExpression": { + "id": 3284, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3278, + "src": "52624:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "52603:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3282, + "id": 3286, + "nodeType": "Return", + "src": "52596:36:0" + } + ] + }, + "functionSelector": "658c27a9", + "id": 3288, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isExcludedFromMaxTx", + "nameLocation": "52500:19:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3279, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3278, + "mutability": "mutable", + "name": "account", + "nameLocation": "52537:7:0", + "nodeType": "VariableDeclaration", + "scope": 3288, + "src": "52529:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3277, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "52529:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "52519:31:0" + }, + "returnParameters": { + "id": 3282, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3281, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3288, + "src": "52580:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3280, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "52580:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "52579:6:0" + }, + "scope": 3380, + "src": "52491:148:0", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 3303, + "nodeType": "Block", + "src": "52745:52:0", + "statements": [ + { + "expression": { + "id": 3301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 3297, + "name": "_isExcludedFromMaxTx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1405, + "src": "52755:20:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 3299, + "indexExpression": { + "id": 3298, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3290, + "src": "52776:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "52755:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3300, + "name": "val", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3292, + "src": "52787:3:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "52755:35:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3302, + "nodeType": "ExpressionStatement", + "src": "52755:35:0" + } + ] + }, + "functionSelector": "d4c989d3", + "id": 3304, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 3295, + "kind": "modifierInvocation", + "modifierName": { + "id": 3294, + "name": "onlyOwner", + "nameLocations": [ + "52735:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49, + "src": "52735:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "52735:9:0" + } + ], + "name": "excludeFromMaxTx", + "nameLocation": "52654:16:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3293, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3290, + "mutability": "mutable", + "name": "account", + "nameLocation": "52688:7:0", + "nodeType": "VariableDeclaration", + "scope": 3304, + "src": "52680:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3289, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "52680:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3292, + "mutability": "mutable", + "name": "val", + "nameLocation": "52710:3:0", + "nodeType": "VariableDeclaration", + "scope": 3304, + "src": "52705:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3291, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "52705:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "52670:49:0" + }, + "returnParameters": { + "id": 3296, + "nodeType": "ParameterList", + "parameters": [], + "src": "52745:0:0" + }, + "scope": 3380, + "src": "52645:152:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 3315, + "nodeType": "Block", + "src": "52869:38:0", + "statements": [ + { + "expression": { + "id": 3313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3311, + "name": "swapThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1354, + "src": "52879:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3312, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3306, + "src": "52895:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "52879:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3314, + "nodeType": "ExpressionStatement", + "src": "52879:21:0" + } + ] + }, + "functionSelector": "9d0014b1", + "id": 3316, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 3309, + "kind": "modifierInvocation", + "modifierName": { + "id": 3308, + "name": "onlyOwner", + "nameLocations": [ + "52859:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49, + "src": "52859:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "52859:9:0" + } + ], + "name": "setSwapThreshold", + "nameLocation": "52812:16:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3307, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3306, + "mutability": "mutable", + "name": "value", + "nameLocation": "52837:5:0", + "nodeType": "VariableDeclaration", + "scope": 3316, + "src": "52829:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3305, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "52829:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "52828:15:0" + }, + "returnParameters": { + "id": 3310, + "nodeType": "ParameterList", + "parameters": [], + "src": "52869:0:0" + }, + "scope": 3380, + "src": "52803:104:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 3333, + "nodeType": "Block", + "src": "52983:74:0", + "statements": [ + { + "expression": { + "id": 3331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3323, + "name": "maxWalletAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1359, + "src": "52993:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3324, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 308, + "src": "53012:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 3325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "53012:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 3326, + "name": "percent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3318, + "src": "53028:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "53012:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3328, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "53011:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 3329, + "name": "TAX_DIVISOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1357, + "src": "53039:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "53011:39:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "52993:57:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3332, + "nodeType": "ExpressionStatement", + "src": "52993:57:0" + } + ] + }, + "functionSelector": "27a14fc2", + "id": 3334, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 3321, + "kind": "modifierInvocation", + "modifierName": { + "id": 3320, + "name": "onlyOwner", + "nameLocations": [ + "52973:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49, + "src": "52973:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "52973:9:0" + } + ], + "name": "setMaxWalletAmount", + "nameLocation": "52922:18:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3319, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3318, + "mutability": "mutable", + "name": "percent", + "nameLocation": "52949:7:0", + "nodeType": "VariableDeclaration", + "scope": 3334, + "src": "52941:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3317, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "52941:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "52940:17:0" + }, + "returnParameters": { + "id": 3322, + "nodeType": "ParameterList", + "parameters": [], + "src": "52983:0:0" + }, + "scope": 3380, + "src": "52913:144:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 3351, + "nodeType": "Block", + "src": "53138:79:0", + "statements": [ + { + "expression": { + "id": 3349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3341, + "name": "maxTransactionAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1373, + "src": "53148:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3342, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 308, + "src": "53172:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 3343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "53172:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 3344, + "name": "percent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3336, + "src": "53188:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "53172:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3346, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "53171:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 3347, + "name": "TAX_DIVISOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1357, + "src": "53199:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "53171:39:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "53148:62:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3350, + "nodeType": "ExpressionStatement", + "src": "53148:62:0" + } + ] + }, + "functionSelector": "1e293c10", + "id": 3352, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 3339, + "kind": "modifierInvocation", + "modifierName": { + "id": 3338, + "name": "onlyOwner", + "nameLocations": [ + "53128:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49, + "src": "53128:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "53128:9:0" + } + ], + "name": "setMaxTransactionAmount", + "nameLocation": "53072:23:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3337, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3336, + "mutability": "mutable", + "name": "percent", + "nameLocation": "53104:7:0", + "nodeType": "VariableDeclaration", + "scope": 3352, + "src": "53096:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3335, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "53096:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "53095:17:0" + }, + "returnParameters": { + "id": 3340, + "nodeType": "ParameterList", + "parameters": [], + "src": "53138:0:0" + }, + "scope": 3380, + "src": "53063:154:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 86 + ], + "body": { + "id": 3378, + "nodeType": "Block", + "src": "53286:197:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "id": 3362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3359, + "name": "_feesRates", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1429, + "src": "53317:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fees_$1420_storage", + "typeString": "struct Token.Fees storage ref" + } + }, + "id": 3360, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "53328:6:0", + "memberName": "buyFee", + "nodeType": "MemberAccess", + "referencedDeclaration": 1415, + "src": "53317:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "hexValue": "34353030", + "id": 3361, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "53337:4:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_4500_by_1", + "typeString": "int_const 4500" + }, + "value": "4500" + }, + "src": "53317:24:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "id": 3366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3363, + "name": "_feesRates", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1429, + "src": "53345:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fees_$1420_storage", + "typeString": "struct Token.Fees storage ref" + } + }, + "id": 3364, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "53356:7:0", + "memberName": "sellFee", + "nodeType": "MemberAccess", + "referencedDeclaration": 1417, + "src": "53345:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "hexValue": "34353030", + "id": 3365, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "53366:4:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_4500_by_1", + "typeString": "int_const 4500" + }, + "value": "4500" + }, + "src": "53345:25:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "53317:53:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "546f6f206869676874207461782c2063616e27742072656e6f756e6365206f776e6572736869702e", + "id": 3368, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "53384:42:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_246c6bab76af1bf81c757cae94b5c2603568181662b0f0183065fa2529232c5f", + "typeString": "literal_string \"Too hight tax, can't renounce ownership.\"" + }, + "value": "Too hight tax, can't renounce ownership." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_246c6bab76af1bf81c757cae94b5c2603568181662b0f0183065fa2529232c5f", + "typeString": "literal_string \"Too hight tax, can't renounce ownership.\"" + } + ], + "id": 3358, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "53296:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "53296:140:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3370, + "nodeType": "ExpressionStatement", + "src": "53296:140:0" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 3374, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "53473:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 3373, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "53465:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3372, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "53465:7:0", + "typeDescriptions": {} + } + }, + "id": 3375, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "53465:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3371, + "name": "_transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "53446:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 3376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "53446:30:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3377, + "nodeType": "ExpressionStatement", + "src": "53446:30:0" + } + ] + }, + "functionSelector": "715018a6", + "id": 3379, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 3356, + "kind": "modifierInvocation", + "modifierName": { + "id": 3355, + "name": "onlyOwner", + "nameLocations": [ + "53276:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49, + "src": "53276:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "53276:9:0" + } + ], + "name": "renounceOwnership", + "nameLocation": "53232:17:0", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 3354, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "53267:8:0" + }, + "parameters": { + "id": 3353, + "nodeType": "ParameterList", + "parameters": [], + "src": "53249:2:0" + }, + "returnParameters": { + "id": 3357, + "nodeType": "ParameterList", + "parameters": [], + "src": "53286:0:0" + }, + "scope": 3380, + "src": "53223:260:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + } + ], + "scope": 3381, + "src": "27207:26278:0", + "usedErrors": [] + } + ], + "src": "615:52871:0" + }, + "functionHashes": { + "PLATFORM_FEE_PERCENT()": "560d52d4", + "TAX_DIVISOR()": "a335d4ff", + "_feesRates()": "1c06a7e1", + "_holderLastTransferTimestamp(address)": "cd5f101d", + "_isExcludedFromFee(address)": "768dc710", + "_isExcludedFromMaxTx(address)": "07866291", + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "autoLiquidity(uint256)": "c6aca36b", + "autoLiquidityPercent()": "deb5896e", + "automatedMarketMakerPairs(address)": "b62496f5", + "balanceOf(address)": "70a08231", + "burn(uint256)": "42966c68", + "burnFrom(address,uint256)": "79cc6790", + "buyBackPercent()": "4a569e94", + "buyBackThreshold()": "6f15d975", + "decimals()": "313ce567", + "decreaseAllowance(address,uint256)": "a457c2d7", + "distributionRewardsPercent()": "1e94ed07", + "dividendTokenAddress()": "35dcb05e", + "dividentTokenBridgeAddress()": "883bfec4", + "excludeFromFee(address,bool)": "df8408fe", + "excludeFromMaxTx(address,bool)": "d4c989d3", + "gasForProcessing()": "9c1b8af5", + "gasLimitActive()": "f9017966", + "inSwap()": "d8306786", + "increaseAllowance(address,uint256)": "39509351", + "initialDelayTime()": "edf731c5", + "isExcludedFromFee(address)": "5342acb4", + "isExcludedFromMaxTx(address)": "658c27a9", + "lpPair()": "452ed4f1", + "maxBuyLimit()": "6aa5b37f", + "maxGasPriceLimit()": "1b11c874", + "maxTransactionAmount()": "c8c8ebe4", + "maxWalletAmount()": "aa4bde28", + "name()": "06fdde03", + "owner()": "8da5cb5b", + "platformFeeAddresses(uint256)": "f3117322", + "platformFeeAmount()": "bd74c046", + "platformFeePercents(uint256)": "13fa254a", + "preMintAmount()": "148829f5", + "renounceOwnership()": "715018a6", + "router()": "f887ea40", + "setAutoLiquidityPercent(uint16)": "738c6c09", + "setBuyBackPercent(uint16)": "123e6cd8", + "setBuyBackThreshold(uint256)": "efac4585", + "setDistributionRewardsPercent(uint16)": "45b1b441", + "setMaxTransactionAmount(uint256)": "1e293c10", + "setMaxWalletAmount(uint256)": "27a14fc2", + "setSwapThreshold(uint256)": "9d0014b1", + "setTaxes(uint16,uint16,uint16)": "32cde664", + "swapThreshold()": "0445b667", + "symbol()": "95d89b41", + "timeDelayBetweenTx()": "3d90fff9", + "tokenDividendTracker()": "b559f9b6", + "totalDelayTime()": "094d776f", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferDelayEnabled()": "c876d0b9", + "transferFrom(address,address,uint256)": "23b872dd", + "transferOwnership(address)": "f2fde38b", + "treasuryAddress()": "c5f956af", + "updateDividendTracker(address,uint256)": "b9c6ec50", + "updateDividentTokenBridgeAddress(address)": "54fb8e40", + "updateGasLimitActive(bool)": "8d0cb35a", + "updateMaxBuyLimit(uint256)": "7dee3290", + "updateMaxGasPriceLimit(uint256)": "1630e97f", + "updateTransferDelayEnabled(bool)": "a2065e71" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "2701600", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "PLATFORM_FEE_PERCENT()": "296", + "TAX_DIVISOR()": "296", + "_feesRates()": "2551", + "_holderLastTransferTimestamp(address)": "2591", + "_isExcludedFromFee(address)": "2594", + "_isExcludedFromMaxTx(address)": "2639", + "allowance(address,address)": "infinite", + "approve(address,uint256)": "24668", + "autoLiquidity(uint256)": "infinite", + "autoLiquidityPercent()": "2373", + "automatedMarketMakerPairs(address)": "2658", + "balanceOf(address)": "2646", + "burn(uint256)": "50816", + "burnFrom(address,uint256)": "77543", + "buyBackPercent()": "2418", + "buyBackThreshold()": "2373", + "decimals()": "333", + "decreaseAllowance(address,uint256)": "27078", + "distributionRewardsPercent()": "2374", + "dividendTokenAddress()": "2428", + "dividentTokenBridgeAddress()": "2472", + "excludeFromFee(address,bool)": "infinite", + "excludeFromMaxTx(address,bool)": "infinite", + "gasForProcessing()": "2418", + "gasLimitActive()": "2475", + "inSwap()": "2443", + "increaseAllowance(address,uint256)": "infinite", + "initialDelayTime()": "2417", + "isExcludedFromFee(address)": "2611", + "isExcludedFromMaxTx(address)": "2677", + "lpPair()": "2427", + "maxBuyLimit()": "2351", + "maxGasPriceLimit()": "2397", + "maxTransactionAmount()": "2351", + "maxWalletAmount()": "2373", + "name()": "infinite", + "owner()": "2421", + "platformFeeAddresses(uint256)": "4724", + "platformFeeAmount()": "2352", + "platformFeePercents(uint256)": "4677", + "preMintAmount()": "2419", + "renounceOwnership()": "infinite", + "router()": "2469", + "setAutoLiquidityPercent(uint16)": "infinite", + "setBuyBackPercent(uint16)": "infinite", + "setBuyBackThreshold(uint256)": "24554", + "setDistributionRewardsPercent(uint16)": "infinite", + "setMaxTransactionAmount(uint256)": "26833", + "setMaxWalletAmount(uint256)": "26899", + "setSwapThreshold(uint256)": "24556", + "setTaxes(uint16,uint16,uint16)": "infinite", + "swapThreshold()": "2354", + "symbol()": "infinite", + "timeDelayBetweenTx()": "2419", + "tokenDividendTracker()": "2448", + "totalDelayTime()": "2420", + "totalSupply()": "2372", + "transfer(address,uint256)": "infinite", + "transferDelayEnabled()": "2455", + "transferFrom(address,address,uint256)": "infinite", + "transferOwnership(address)": "infinite", + "treasuryAddress()": "2427", + "updateDividendTracker(address,uint256)": "infinite", + "updateDividentTokenBridgeAddress(address)": "29007", + "updateGasLimitActive(bool)": "26769", + "updateMaxBuyLimit(uint256)": "26878", + "updateMaxGasPriceLimit(uint256)": "24583", + "updateTransferDelayEnabled(bool)": "26791" + }, + "internal": { + "_beforeTransferCheck(address,address,uint256)": "infinite", + "_finalizeTransfer(address,address,uint256)": "infinite", + "_transfer(address,address,uint256)": "infinite", + "addLiquidity(uint256,uint256)": "infinite", + "calcBuySellTransferFee(address,address,uint256)": "infinite", + "contractMustSwap(address,address)": "infinite", + "doSwap()": "infinite", + "processDividendTracker(uint256)": "infinite", + "swapAndSendDividends(uint256)": "infinite", + "swapNativeForTokens(uint256,address)": "infinite", + "swapTokensForNative(uint256,address)": "infinite", + "swapTokensForTokens(address,address,uint256,address)": "infinite" + } + } +} \ No newline at end of file diff --git a/resources/UniswapV2Locker6.json b/resources/UniswapV2Locker6.json new file mode 100644 index 0000000..8abfccf --- /dev/null +++ b/resources/UniswapV2Locker6.json @@ -0,0 +1,778 @@ +[ + { + "inputs": [ + { + "internalType": "contract IUniFactory", + "name": "_uniswapFactory", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "lpToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "lockDate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "unlockDate", + "type": "uint256" + } + ], + "name": "onDeposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "lpToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "onWithdraw", + "type": "event" + }, + { + "inputs": [], + "name": "gFees", + "outputs": [ + { + "internalType": "uint256", + "name": "ethFee", + "type": "uint256" + }, + { + "internalType": "contract IERCBurn", + "name": "secondaryFeeToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "secondaryTokenFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "secondaryTokenDiscount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidityFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "referralPercent", + "type": "uint256" + }, + { + "internalType": "contract IERCBurn", + "name": "referralToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "referralHold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "referralDiscount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_index", + "type": "uint256" + } + ], + "name": "getLockedTokenAtIndex", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getNumLockedTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_lpToken", + "type": "address" + } + ], + "name": "getNumLocksForToken", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "address", + "name": "_lpToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_index", + "type": "uint256" + } + ], + "name": "getUserLockForTokenAtIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_index", + "type": "uint256" + } + ], + "name": "getUserLockedTokenAtIndex", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "getUserNumLockedTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "address", + "name": "_lpToken", + "type": "address" + } + ], + "name": "getUserNumLocksForToken", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "getUserWhitelistStatus", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_index", + "type": "uint256" + } + ], + "name": "getWhitelistedUserAtIndex", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getWhitelistedUsersLength", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_lpToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_lockID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "incrementLock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_lpToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_unlock_date", + "type": "uint256" + }, + { + "internalType": "address payable", + "name": "_referral", + "type": "address" + }, + { + "internalType": "bool", + "name": "_fee_in_eth", + "type": "bool" + }, + { + "internalType": "address payable", + "name": "_withdrawer", + "type": "address" + } + ], + "name": "lockLPToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_lpToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_lockID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "migrate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_lpToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_lockID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_unlock_date", + "type": "uint256" + } + ], + "name": "relock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "_devaddr", + "type": "address" + } + ], + "name": "setDev", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_referralPercent", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_referralDiscount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_ethFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_secondaryTokenFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_secondaryTokenDiscount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_liquidityFee", + "type": "uint256" + } + ], + "name": "setFees", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IMigrator", + "name": "_migrator", + "type": "address" + } + ], + "name": "setMigrator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERCBurn", + "name": "_referralToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_hold", + "type": "uint256" + } + ], + "name": "setReferralTokenAndHold", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_secondaryFeeToken", + "type": "address" + } + ], + "name": "setSecondaryFeeToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_lpToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_lockID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "splitLock", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "tokenLocks", + "outputs": [ + { + "internalType": "uint256", + "name": "lockDate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "unlockDate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lockID", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_lpToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_lockID", + "type": "uint256" + }, + { + "internalType": "address payable", + "name": "_newOwner", + "type": "address" + } + ], + "name": "transferLockOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "uniswapFactory", + "outputs": [ + { + "internalType": "contract IUniFactory", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "bool", + "name": "_add", + "type": "bool" + } + ], + "name": "whitelistFeeAccount", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_lpToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_lockID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/resources/UniswapV2Locker8.json b/resources/UniswapV2Locker8.json new file mode 100644 index 0000000..d7ccc96 --- /dev/null +++ b/resources/UniswapV2Locker8.json @@ -0,0 +1 @@ +[{"inputs":[{"internalType":"contract IUniFactory","name":"_uniswapFactory","type":"address"},{"internalType":"contract ICountryList","name":"_countryList","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"lockID","type":"uint256"},{"indexed":false,"internalType":"address","name":"lpToken","type":"address"},{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountRemainingInLock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountMigrated","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"migrationOption","type":"uint256"}],"name":"OnMigrate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"lockID","type":"uint256"},{"indexed":false,"internalType":"address","name":"lpToken","type":"address"},{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"payer","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountRemainingInLock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountAdded","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"onIncrementLock","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"lockID","type":"uint256"},{"indexed":false,"internalType":"address","name":"lpToken","type":"address"},{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lockDate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unlockDate","type":"uint256"},{"indexed":false,"internalType":"uint16","name":"countryCode","type":"uint16"}],"name":"onNewLock","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"lockID","type":"uint256"},{"indexed":false,"internalType":"address","name":"lpToken","type":"address"},{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountRemainingInLock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unlockDate","type":"uint256"}],"name":"onRelock","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"lockID","type":"uint256"},{"indexed":false,"internalType":"address","name":"lpToken","type":"address"},{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountRemainingInLock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountRemoved","type":"uint256"}],"name":"onSplitLock","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"lockID","type":"uint256"},{"indexed":false,"internalType":"address","name":"lpToken","type":"address"},{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"onTransferLockOwnership","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"lockID","type":"uint256"},{"indexed":false,"internalType":"address","name":"lpToken","type":"address"},{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountRemainingInLock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountRemoved","type":"uint256"}],"name":"onWithdraw","type":"event"},{"inputs":[],"name":"COUNTRY_LIST","outputs":[{"internalType":"contract ICountryList","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"LOCKS","outputs":[{"internalType":"address","name":"lpToken","type":"address"},{"internalType":"uint256","name":"lockDate","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"initialAmount","type":"uint256"},{"internalType":"uint256","name":"unlockDate","type":"uint256"},{"internalType":"uint256","name":"lockID","type":"uint256"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint16","name":"countryCode","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NONCE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"TOKEN_LOCKS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gFees","outputs":[{"internalType":"uint256","name":"ethFee","type":"uint256"},{"internalType":"contract IERCBurn","name":"secondaryFeeToken","type":"address"},{"internalType":"uint256","name":"secondaryTokenFee","type":"uint256"},{"internalType":"uint256","name":"secondaryTokenDiscount","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"referralPercent","type":"uint256"},{"internalType":"contract IERCBurn","name":"referralToken","type":"address"},{"internalType":"uint256","name":"referralHold","type":"uint256"},{"internalType":"uint256","name":"referralDiscount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"getLockedTokenAtIndex","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumLockedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lpToken","type":"address"}],"name":"getNumLocksForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_lpToken","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"getUserLockForTokenAtIndex","outputs":[{"components":[{"internalType":"address","name":"lpToken","type":"address"},{"internalType":"uint256","name":"lockDate","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"initialAmount","type":"uint256"},{"internalType":"uint256","name":"unlockDate","type":"uint256"},{"internalType":"uint256","name":"lockID","type":"uint256"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint16","name":"countryCode","type":"uint16"}],"internalType":"struct UniswapV2Locker.TokenLock","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"getUserLockedTokenAtIndex","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getUserNumLockedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_lpToken","type":"address"}],"name":"getUserNumLocksForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getUserWhitelistStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"getWhitelistedUserAtIndex","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWhitelistedUsersLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lockID","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"incrementLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lpToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_unlock_date","type":"uint256"},{"internalType":"address payable","name":"_referral","type":"address"},{"internalType":"bool","name":"_fee_in_eth","type":"bool"},{"internalType":"address payable","name":"_withdrawer","type":"address"},{"internalType":"uint16","name":"_countryCode","type":"uint16"}],"name":"lockLPToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lockID","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_migration_option","type":"uint256"}],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"migrator","outputs":[{"internalType":"contract IMigrator","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lockID","type":"uint256"},{"internalType":"uint256","name":"_unlock_date","type":"uint256"}],"name":"relock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_devaddr","type":"address"}],"name":"setDev","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_referralPercent","type":"uint256"},{"internalType":"uint256","name":"_referralDiscount","type":"uint256"},{"internalType":"uint256","name":"_ethFee","type":"uint256"},{"internalType":"uint256","name":"_secondaryTokenFee","type":"uint256"},{"internalType":"uint256","name":"_secondaryTokenDiscount","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IMigrator","name":"_migrator","type":"address"}],"name":"setMigrator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERCBurn","name":"_referralToken","type":"address"},{"internalType":"uint256","name":"_hold","type":"uint256"}],"name":"setReferralTokenAndHold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_secondaryFeeToken","type":"address"}],"name":"setSecondaryFeeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lockID","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"splitLock","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lockID","type":"uint256"},{"internalType":"address payable","name":"_newOwner","type":"address"}],"name":"transferLockOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapFactory","outputs":[{"internalType":"contract IUniFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bool","name":"_add","type":"bool"}],"name":"whitelistFeeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lockID","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/resources/UniswapV2Pair.json b/resources/UniswapV2Pair.json new file mode 100644 index 0000000..09dc5dc --- /dev/null +++ b/resources/UniswapV2Pair.json @@ -0,0 +1,713 @@ +[ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "Burn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "name": "Mint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0In", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1In", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0Out", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1Out", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "Swap", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint112", + "name": "reserve0", + "type": "uint112" + }, + { + "indexed": false, + "internalType": "uint112", + "name": "reserve1", + "type": "uint112" + } + ], + "name": "Sync", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MINIMUM_LIQUIDITY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "burn", + "outputs": [ + { + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getReserves", + "outputs": [ + { + "internalType": "uint112", + "name": "_reserve0", + "type": "uint112" + }, + { + "internalType": "uint112", + "name": "_reserve1", + "type": "uint112" + }, + { + "internalType": "uint32", + "name": "_blockTimestampLast", + "type": "uint32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_token0", + "type": "address" + }, + { + "internalType": "address", + "name": "_token1", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "kLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "price0CumulativeLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "price1CumulativeLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "skim", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "amount0Out", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Out", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "swap", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "sync", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token0", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token1", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/resources/UniswapV2Router.json b/resources/UniswapV2Router.json new file mode 100644 index 0000000..89d7e74 --- /dev/null +++ b/resources/UniswapV2Router.json @@ -0,0 +1,953 @@ +[ + { + "inputs": [], + "name": "WETH", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountADesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountTokenDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsIn", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsOut", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveB", + "type": "uint256" + } + ], + "name": "quote", + "outputs": [ + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETHSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapETHForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETHSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ] \ No newline at end of file diff --git a/scripts/.DS_Store b/scripts/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a94b4ce871b7803a7aa16ec32375f18dfda9a970 GIT binary patch literal 6148 zcmeHKQA^`M5T32oCWz1ng+2!ERj_Ii#g|a^4_xH#;ZAB}iUwm=lGZ$wLZ0;x`AhEi z_|5M2P^wRYNST4zZ!$ZxVZIH!86r~sNwQ1SCL#~Y*zhsDBRtQ#APwhP0V=b`gbKQ% z5tVVZ5G{`H$N=x1k6pu_k)~JsSKh~&jxqZj-)Ct#?sosF#!7Q_t>v}6b?+j&(N#1a zjwfY*Sp4CqbFH&@ZV%&M>8KjCH&1jv9;W%IFbQcgLdf6WX`bk+uP1p@n%u}vc)sTk z+MVgN*X?Zwy~DlPb}&8K>%!hYn9Y1|>&MRV&%teWm+MDMr^1(KWW(Vco?yIF*+W$1 zna-~<%b6{zP { + console.log("done"); + }) + .catch(error => { + //console.log(colors.red("ERROR :(")); + //console.log(colors.red(error)); + return undefined; + }) + + diff --git a/scripts/util.ts b/scripts/util.ts new file mode 100644 index 0000000..9896b46 --- /dev/null +++ b/scripts/util.ts @@ -0,0 +1,684 @@ +import { BigNumber, Contract, Wallet } from 'ethers' +import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers' +import { randomBytes } from 'crypto' +import fs from "fs"; +import { artifacts, network } from "hardhat"; +import { ExecException } from 'child_process' +const { ethers, upgrades } = require('hardhat') +const { parseEther, formatEther } = ethers.utils +const { getImplementationAddress } = require('@openzeppelin/upgrades-core') +import hre from 'hardhat' + +const provider = ethers.provider +import colors from "colors"; + +let default_chain: string = process.env.CHAIN ?? 'eth'; + +export const chains: Record> = { + avalanche: { + dex: 'Pangolin', + router: '0x2D99ABD9008Dc933ff5c0CD271B88309593aB921', + factory: '0xE4A575550C2b460d2307b82dCd7aFe84AD1484dd', + wChainCoin: '0xd00ae08403B9bbb9124bB305C09058E32C39A48c', + methods: { + addLiquidity: 'addLiquidityAVAX', + } + }, + bsc: { + dex: 'Pancake', + router: "0xD99D1c33F9fC3444f8101754aBC46c52416550D1", + factory: "0xB7926C0430Afb07AA7DEfDE6DA862aE0Bde767bc", + wChainCoin: "0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd", + BUSD: "0x78867BbEeF44f2326bF8DDd1941a4439382EF2A7", + whaleBUSD: "0x352a7a5277ec7619500b06fa051974621c1acd12", + methods: { + addLiquidity: 'addLiquidity', + addLiquidityETH: 'addLiquidityETH', + } + }, + eth: { + dex: 'UniswapV2', + router: "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D", + factory: "0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f", + wChainCoin: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + USDT: "0xdAC17F958D2ee523a2206206994597C13D831ec7", + WBTC: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + methods: { + addLiquidity: 'addLiquidity', + addLiquidityETH: 'addLiquidityETH', + } + } +} + +export function getRouterName(dex: string) { + return `${dex}Router`; +} + +export function getPairName(dex: string) { + return `${dex}Pair`; +} + +export function getFactoryName(dex: string) { + return `${dex}Factory`; +} + +export async function getProxyImplementation(proxyAddress: string): Promise { + return await getImplementationAddress(provider, proxyAddress) +} + +export async function verifyWithotDeploy( + contractName: string, + contractAddress: string, + args: any = [] +) { + const tokenImplementationAddress = await getImplementationAddress( + ethers.provider, + contractAddress + ) + + await updateABI(contractName) + + console.log('\nVerifing... ' + tokenImplementationAddress + "\n") + await verify(tokenImplementationAddress, args) +} + + + +export async function connectRouter(): Promise { + return await ethers.getContractAt( + getRouterName(chains[default_chain]?.dex), + chains[default_chain]?.router + ) +} + +export async function connectBUSD(): Promise { + //wtf is this not working -> Forgot to await on test bruh + return await ethers.getContractAt( + 'BEP20Token', + "0x78867BbEeF44f2326bF8DDd1941a4439382EF2A7") +} + +export async function connectWBTC_ETH(): Promise { + return await ethers.getContractAt('WBTC', chains?.eth?.WBTC) +} + +export async function connectUSDT_ETH(): Promise { + return await ethers.getContractAt('TetherToken', chains?.eth?.USDT) +} + +export async function connectWBNB(): Promise { + return await ethers.getContractAt('WBNB', chains?.bsc?.wChainCoin) +} + +export async function connectWAVAX(): Promise { + return await ethers.getContractAt('WAVAX', chains?.avalanche?.wChainCoin) +} + +export async function connectPair(pairAddress: string): Promise { + return await ethers.getContractAt(getPairName(chains[default_chain]?.dex), pairAddress) +} + +export async function connectFactory(): Promise { + return await ethers.getContractAt( + getFactoryName(chains[default_chain]?.dex), + chains[default_chain]?.factory + ) +} + +export async function deployLFG(): Promise { + const LFGFactory = await ethers.getContractFactory('LIFEGAMESV2') + const TokenDeployed = await upgrades.deployProxy(LFGFactory, { + initializer: 'initialize' + }) + const r = await TokenDeployed.deployed() + console.log(r) + return r +} + +export async function connectToken(): Promise { + return await ethers.getContractAt( + 'TokenV1', + '0xD1586f4624775920121A0D58A785F46e9f91500d' + ) +} + +export const updateABI = async (contractName: string) => { + const abiDir = `${__dirname}/../abi`; + if (!fs.existsSync(abiDir)) { + fs.mkdirSync(abiDir); + } + const Artifact = artifacts.readArtifactSync(contractName); + fs.writeFileSync( + `${abiDir}/${contractName}.json`, + JSON.stringify(Artifact.abi, null, 2) + ) +} + +export const deployProxyInitialize = async (contractName: string, autoVerify: boolean = true, args: any = []): Promise => { + /* + const Token = await ethers.getContractFactory("TokenV1"); + const TokenDeployed = await upgrades.deployProxy(Token, { + initializer: "initialize", + }); + await TokenDeployed.deployed(); + await getImplementationAddress(ethers.provider,TokenDeployed.address) + console.log("Contract deployed to:", TokenDeployed.address); + */ + + + const factory = await ethers.getContractFactory(contractName) + const contract = args.length > 1 ? await upgrades.deployProxy(factory, [args], { + initializer: "initialize", + }) : await upgrades.deployProxy(factory, args, { + initializer: "initialize", + }) + const token = await contract.deployed() + const implAddress = await getImplementationAddress(ethers.provider, token.address); + await updateABI(contractName) + if (autoVerify) { + console.log('\nVerifing') + await verify(implAddress, args) + } + console.log(contractName, token.address, implAddress) + return token +} + +export const verify = async (contractAddress: string, contractName: string, args: any[] = []) => { + // @ts-ignore + if (network == 'localhost' || network == 'hardhat') return + try { + await updateABI(contractName) + await hre.run("verify:verify", { + address: contractAddress, + constructorArguments: args, + }); + } catch (ex) { + console.log(ex); + + } +} + +export const deployProxy = async (contractName: string, args: any[] = []): Promise => { + const factory = await ethers.getContractFactory(contractName) + const contract = await upgrades.deployProxy(factory, args) + const token = await contract.deployed() + const implAddress = await getImplementationAddress(ethers.provider, token.address); + await updateABI(contractName) + await verify(implAddress, contractName, args) + console.log(contractName, token.address, implAddress) + return token +} + +const deployProxyV2 = async ( + contractName: string, + autoVerify = true, + args: any = [] +): Promise => { + let token: Contract; + const factory = await ethers.getContractFactory(contractName) + + if (args) { + const contract = + args.length >= 1 + ? await upgrades.deployProxy(factory, args) + : await upgrades.deployProxy(factory) + token = await contract.deployed() + } else { + const contract = await upgrades.deployProxy(factory) + token = await contract.deployed() + } + + const implAddress = await getImplementationAddress( + ethers.provider, + token.address + ) + + console.log(""); + console.log(colors.green("Deploy Successfully!")); + console.log( + `${colors.cyan(contractName + " Proxy Address: ")} ${colors.yellow( + token.address + )}` + ); + console.log( + `${colors.cyan(contractName + " Implementation Address: ")} ${colors.yellow( + implAddress + )}` + ); + console.log(""); + + + await updateABI(contractName) + + if (autoVerify) { + console.log('\nVerifing') + await verify(implAddress, contractName, args) + } + return token +} + +export async function fundBUSD(busdContract: Contract, router: Contract, user: SignerWithAddress, amount: any) { + const whale = chains?.bsc?.whaleBUSD + await hre.network.provider.request({ + method: "hardhat_impersonateAccount", + params: [whale], + }); + + const signer = await ethers.getSigner(whale) + const busdBalance = await busdContract.balanceOf(whale) + console.log("whale dai balance", formatEther(busdBalance)) + + await busdContract.connect(signer).transfer(user.address, parseEther(amount)) + await busdContract.connect(user).approve(router.address, ethers.constants.MaxUint256); + await busdContract.connect(user).approve(busdContract.address, ethers.constants.MaxUint256); + console.log("fund with BUSD:", formatEther(await busdContract.balanceOf(user.address))); + console.log(); +} + +export async function swapExactETHForTokens(tokenAddress: string, router: Contract, user: SignerWithAddress, _value: any) { + await router.connect(user).swapExactETHForTokens( + 0, //amountOutMin + [chains[default_chain]?.wChainCoin, tokenAddress], //path + user.address, + 2648069985, // Saturday, 29 November 2053 22:59:45 + { value: _value } + ) +} + +// todo test + +export async function swapExactTokensForTokensSupportingFeeOnTransferTokensV2(tokenAddress: string, toTokenAddress: string, router: Contract, user: SignerWithAddress, _value: BigNumber) { + const tx = await router.connect(user).swapExactTokensForTokensSupportingFeeOnTransferTokens( + _value, + BigNumber.from(0), + [tokenAddress, chains[default_chain]?.wChainCoin, toTokenAddress], //path + user.address, + 2648069985, // Saturday, 29 November 2053 22:59:45 + ) + //console.log(`${colors.cyan('Tx ')}: ${colors.yellow(tx)}`) +} + +export async function getAmountsOut(fromTokenAddress: string, toTokenAddress: string, router: Contract, _value: BigNumber) { + let amountOutMin = await router.getAmountsOut( + _value, + [fromTokenAddress, toTokenAddress], + ); + //console.log(`${colors.cyan('Amounts Out ')}: ${colors.yellow(amountOutMin)}`) + return amountOutMin[1]; +} + +export async function swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAddress: string, router: Contract, user: SignerWithAddress, _value: BigNumber) { + const tx = await router.connect(user).swapExactTokensForTokensSupportingFeeOnTransferTokens( + _value, + BigNumber.from(0), + [tokenAddress, chains[default_chain]?.wChainCoin], //path + user.address, + 2648069985, // Saturday, 29 November 2053 22:59:45 + ) + //console.log(`${colors.cyan('Tx ')}: ${colors.yellow(tx)}`) +} + +// todo test +export async function swapExactTokensForETH(tokenAddress: string, router: Contract, user: SignerWithAddress, _value: BigNumber) { + let slippage = 15; + let amountOutMin = await router.connect(user).getAmountsOut( + _value, + [tokenAddress, chains[default_chain]?.wChainCoin], + ); + let amountOutMinLessSlippage = Math.trunc(amountOutMin[1] - ((amountOutMin[1] * slippage) / 100)) + console.log({ + _value, + slippage, + amountOutMin, + amountOutMinLessSlippage + }) + + await router.connect(user).swapExactTokensForETH( + _value, + amountOutMinLessSlippage, + [tokenAddress, chains[default_chain]?.wChainCoin], //path + user.address, + 2648069985, // Saturday, 29 November 2053 22:59:45 + ) +} + +export async function approveAndAddBusdLiquidity(token: Contract, router: Contract, user: SignerWithAddress, aAmount: any, bAmount: any) { + await token.approve(chains?.bsc?.router, bAmount) + const tx = await router.connect(user).addLiquidity( + chains?.bsc?.BUSD, // A + token.address, // B + aAmount, // amountADesired + bAmount, // amountBDesired + 0, // mins to revert + 0, + user.address, + 2648069985, // Saturday, 29 November 2053 22:59:45 + ) + console.log(`${colors.cyan('Tx ')}: ${colors.yellow(tx)}`) +} + +export async function approveAndAddBNBLiquidity(token: Contract, router: Contract, user: SignerWithAddress, aAmount: any, bAmount: any) { + await token.approve(chains?.bsc?.router, bAmount) + const tx = await router.connect(user).addLiquidity( + chains?.bsc?.wChainCoin, // A + token.address, // B + aAmount, // amountADesired + bAmount, // amountBDesired + 0, // mins to revert + 0, + user.address, + 2648069985, // Saturday, 29 November 2053 22:59:45 + ) + console.log(`${colors.cyan('Tx ')}: ${colors.yellow(tx)}`) +} + + +export async function addTempLiquidityLFG(deployer: SignerWithAddress, busdContract: Contract, router: Contract, token: Contract) { + //await swapApproveBNBtoBUSD(busdContract, router, deployer, parseEther('100')) + const busdBalance = await busdContract.balanceOf(deployer.address) + console.log(formatEther(busdBalance)) + + await approveAndAddBusdLiquidity(token, router, deployer, busdBalance, parseEther("10")) +} + +export async function approveAndAddLiquidity( + tokenA: string, + tokenB: string, + router: Contract, + user: SignerWithAddress, + aAmount: BigNumber, + bAmount: BigNumber +) { + const tx = await router.connect(user).addLiquidity( + tokenA, // B + tokenB, // B + aAmount, // amountADesired + aAmount, // amountBDesired + bAmount, // mins to revert + user.address, + 2648069985, // Saturday, 29 November 2053 22:59:45 + { + value: bAmount, + } + ) + console.log(`${colors.cyan('Tx ')}: ${colors.yellow(tx)}`) +} + +/** + * BUYS LFG USING PANCAKE ROUTER + * @param {Contract} token - LFG Token + * @param {Contract} router - Pancake Router + * @param {Signer} user - User that is swapping + * @param {BigNumber} amountBUSD - Amount of BUSD used to buy + * + * + */ +export async function buy( + tokenBUSD: Contract, + token: Contract, + router: Contract, + user: SignerWithAddress, + amountBUSD: any +) { + await tokenBUSD.connect(user).approve(router.address, amountBUSD) + await token + .connect(user) + .approve(router.address, ethers.constants.MaxUint256); + return new Promise(async (resolve, reject) => { + await router.connect(user).swapExactTokensForTokens( + amountBUSD, // amountIn + 1, //amountOutMin + [chains[default_chain]?.BUSD ?? chains[default_chain]?.wChainCoin, token.address], //path + user.address, + 2648069985 // Saturday, 29 November 2053 22:59:45 + ).then((data: any, err: any) => { + if (data) { + resolve(data); + } + reject(err); + }) + .catch((err: any) => { + reject(err); + }); + }); +} + +/** + * BUYS LFG USING PANCAKE ROUTER + * @param {Contract} token - LFG Token + * @param {Contract} router - Pancake Router + * @param {Signer} user - User that is swapping + * @param {BigNumber} amountBUSD - Amount of BUSD used to buy + * + * + */ +export async function swapExactTokensForAVAXSupportingFeeOnTransferTokens( + token: Contract, + router: Contract, + user: SignerWithAddress, + amount: BigNumber +) { + await token.connect(user).approve(router.address, amount) + await router + .connect(user) + .swapExactTokensForAVAXSupportingFeeOnTransferTokens( + amount, // amountIn + 1, //amountOutMin + [token.address, chains?.avalanche?.wChainCoin], //path + user.address, + 2648069985 // Saturday, 29 November 2053 22:59:45 + ) + // APROVE MAX TOKENS + //await token.connect(user).approve(router.address, ethers.constants.MaxUint256) +} + +/* +export async function sellLFG(token: Contract, router: Contract, user: SignerWithAddress, amountLFG: any) { + await token.connect(user).approve(router.address, amountLFG); + await router.connect(user).swapExactTokensForTokensSupportingFeeOnTransferTokens( + amountLFG, // amountIn + 1, //amountOutMin + [token.address, chains?.bsc?.BUSD], //path + user.address, + 2648069985, // Saturday, 29 November 2053 22:59:45 + ) +} +*/ + +export const percentage = (val_one: number, val_two: number) => { + return 100 - Math.floor(val_one * 100 / val_two) +} + +export async function diff(expected: any, actual: any) { + return Number((actual / formatEther(expected)) * 100 - 100) +} + +export async function diffInverse(expected: any, actual: any) { + return Number((formatEther(actual) / expected) * 100 - 100) +} + +export async function roundDiff(expected: any, actual: any) { + return Math.round((Math.abs(expected) / ((expected + actual) / 2)) * 100) + //return (actual / (expected * 100) - 100) +} + +export function compareTokenBalance(balanceBefore: BigNumber, balanceAfter: BigNumber) { + const formatBalanceBefore = formatEther(balanceBefore) + const formatBalanceAfter = formatEther(balanceAfter) + + if (balanceAfter < balanceBefore) { + console.log(`${colors.yellow('Token Balance Before')}: ${colors.green(formatBalanceBefore)}`) + console.log(`${colors.cyan('Token Balance After')}: ${colors.red(formatBalanceAfter)}`) + } else if (balanceAfter > balanceBefore) { + console.log(`${colors.yellow('Token Balance Before')}: ${colors.red(formatBalanceBefore)}`) + console.log(`${colors.cyan('Token Balance After')}: ${colors.green(formatBalanceAfter)}`) + } else { + console.log(`${colors.yellow('Token Balance Before')}: ${colors.gray(formatBalanceBefore)}`) + console.log(`${colors.cyan('Token Balance After')}: ${colors.gray(formatBalanceAfter)}`) + } +} + +export function generateRandomAddresses(n: number): string[] { + return new Array(n) + .fill(0) + .map(() => new Wallet(randomBytes(32).toString('hex')).address) +} + +export function generateRandomAmount(max: number): BigNumber { + return parseEther(randomNumber(1, max).toString()) +} + +export const randomNumber = (min: number, max: number) => { + //Use below if final number doesn't need to be whole number + //return Math.random() * (max - min) + min + return Math.floor(Math.random() * (max - min) + min) +} + +/* +const avalancheFujiTestnet = { + router: '0x2D99ABD9008Dc933ff5c0CD271B88309593aB921', + factory: '0xE4A575550C2b460d2307b82dCd7aFe84AD1484dd', + WAVAX: '0xd00ae08403B9bbb9124bB305C09058E32C39A48c', +} +*/ + +// async function approveAndAddLiquidityBNB(user, BNBamount, TokenAmount){ +// await token.approve(util.pancakeTestnet.router, TokenAmount) +// const tx = await router.connect(user).addLiquidityETH( +// token.address, +// TokenAmount, +// 0, +// 0, +// user.address, +// 2648069985, // Saturday, 29 November 2053 22:59:45 +// {value: BNBamount} +// ) +// } + +/** + * Executes a shell command and return it as a Promise. + * @param cmd {string} + * @return {Promise} + */ +export function execShellCommand(cmd: string) { + const exec = require('child_process').exec + return new Promise((resolve) => { + exec(cmd, (error: ExecException, stdout: string, stderr: string) => { + if (error) { + console.warn(error) + } + resolve(stdout ? stdout : stderr) + }) + }) +} + +export const sleep = async (seconds: string) => { + console.log(`Sleeping for ${seconds} seconds`) + await execShellCommand("sleep " + seconds); + console.log("END") +} +export async function forceImport( + contractAddress: string, + deployedImpl: any, + opts: { + kind?: 'uups' | 'transparent' | 'beacon' + } +) { + const contract = await upgrades.forceImport( + contractAddress, + deployedImpl, + opts + ) + + return contract +} + +export async function transferEth(from: SignerWithAddress, _to: string, amount: BigNumber) { + const tx = { + to: _to, + value: amount + }; + await from.sendTransaction(tx); +} + +export async function getDeployer(): Promise { + const [deployer] = await ethers.getSigners(); + if (deployer === undefined) throw new Error("Deployer is undefined."); + console.log( + colors.cyan("Deployer Address: ") + colors.yellow(deployer.address) + ); + console.log( + colors.cyan("Account balance: ") + + colors.yellow(formatEther(await deployer.getBalance())) + ); + console.log(); + return deployer; +} + +export function saveContractAddress(contractName: string, contractAddress: string) { + let contracts = JSON.parse(fs.readFileSync("deployedContracts.json", "utf-8")); + contracts[contractName] = contractAddress; + fs.writeFileSync('deployedContracts.json', JSON.stringify(contracts)); +} + +export const deploy = async (autoVerify = false, contractName: string, ...args: any): Promise => { + const factory = await ethers.getContractFactory(contractName) + const contract = await factory.deploy(...args) + await contract.deployed() + await updateABI(contractName) + + console.log(colors.cyan(contractName + " Address: ") + colors.yellow(contract.address)); + + if (autoVerify) { + await sleep("15"); + await verify(contract.address, contractName, [...args]) + console.log(colors.cyan(contractName + " Address: ") + colors.yellow(contract.address)); + } + + return contract +} + +export async function mineBlock(blocks = 1) { + const provider = network.provider + for (; blocks > 0; blocks--) await provider.send("evm_mine") +} + +export async function increaseTime(seconds: number) { + const provider = network.provider + await provider.send("evm_increaseTime", [seconds]) + // await mineBlock() +} + +export default module.exports = { + connectRouter, + connectPair, + connectFactory, + deployProxy, + getProxyImplementation, + generateRandomAddresses, + deployProxyInitialize, + connectWAVAX: connectWAVAX, + generateRandomAmount, + swapExactTokensForAVAXSupportingFeeOnTransferTokens, + chains, + swapExactETHForTokens, + swapExactTokensForETH, + swapExactTokensForTokensSupportingFeeOnTransferTokens, + verifyWithotDeploy, + updateABI, + deployProxyV2, + deploy, + verify, + sleep, + connectBUSD, + forceImport, + transferEth, + connectWBTC_ETH, + connectUSDT_ETH, + getAmountsOut, + getDeployer, + saveContractAddress, + execShellCommand, + mineBlock, + increaseTime +} \ No newline at end of file diff --git a/test/.DS_Store b/test/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 { + + function percentage(percent: any, total: any) { + return (percent / 100) * total; + } + + let tokenDeployed: Contract; + let router: Contract; + let uniToken: Contract; + let pairContract: Contract; + let deployer: SignerWithAddress; + let bob: SignerWithAddress; + let alice: SignerWithAddress; + + it("1. Get Signer", async () => { + const signers = await ethers.getSigners(); + if (signers[0] !== undefined) { + deployer = signers[0]; + console.log(`${colors.cyan('Deployer Address')}: ${colors.yellow(deployer?.address)}`) + } + if (signers[1] !== undefined) { + bob = signers[1]; + console.log(`${colors.cyan('Bob Address')}: ${colors.yellow(bob?.address)}`) + } + if (signers[2] !== undefined) { + alice = signers[2]; + console.log(`${colors.cyan('Alice Address')}: ${colors.yellow(alice?.address)}`) + } + }); + + it("2. Deploy Contract", async () => { + + // INSTANCE CONTRACT + router = await util.connectRouter() + //const routerFactory = await util.connectFactory() + //const bnbContract = await util.connectWBNB() + //const busdContract = await util.connectBUSD() + + // DEPLOY + const iterableMappingFactory = await ethers.getContractFactory("IterableMapping") + const IterableMappingDeployed = await iterableMappingFactory.deploy() + await IterableMappingDeployed.deployed() + console.log({ + IterableMappingDeployed: IterableMappingDeployed.address + }) + await updateABI("IterableMapping"); + + const uniAddress = "0x0000000000000000000000000000000000000000" + //const uniAddress = "0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984" + const dividendTrackerFactory = await ethers.getContractFactory("DividendTracker", { + libraries: { + IterableMapping: IterableMappingDeployed.address + }, + }) + const dividendTrackerDeployed = await dividendTrackerFactory.deploy(uniAddress, parseEther("1")) + await dividendTrackerDeployed.deployed() + console.log({ + dividendTrackerDeployed: dividendTrackerDeployed.address + }) + await updateABI("DividendTracker"); + + + const tokenName = "Token"; + const tokenFactory = await ethers.getContractFactory(tokenName); + uniToken = await ethers.getContractAt("MOCK", uniAddress) + tokenDeployed = await tokenFactory.deploy( + "TKN", + "Token", + ethers.utils.parseEther("1000000000"), + ethers.utils.parseEther("0"), + ["0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D", deployer.address], + [0, 0, 0, 0, 0] + ); + await tokenDeployed.deployed(); + await dividendTrackerDeployed.transferOwnership(tokenDeployed.address) + await tokenDeployed.updateDividendTracker(dividendTrackerDeployed.address, 500) + + console.log( + colors.cyan("Token Address: ") + colors.yellow(tokenDeployed.address) + ); + await updateABI(tokenName); + }); + + it("3. Add Liquidity", async () => { + await tokenDeployed.approve(util.chains.eth.router, ethers.constants.MaxUint256, { from: deployer?.address }) + const ethAmount = parseEther("100"); + const tokenAmount = parseEther("100000000"); + const tx = await router.connect(deployer).addLiquidityETH( + tokenDeployed.address, + tokenAmount, + tokenAmount, + ethAmount, + deployer?.address, + 2648069985, // Saturday, 29 November 2053 22:59:45 + { + value: ethAmount + } + ) + console.log(`${colors.cyan('TX')}: ${colors.yellow(tx.hash)}`) + console.log() + }); + + it("4. Get Pair Contract", async () => { + const routerFactory = await util.connectFactory(); + const pairAddress = await routerFactory.getPair(util.chains.eth.wChainCoin, tokenDeployed.address) + pairContract = await util.connectPair(pairAddress); + console.log(`${colors.cyan('LP Address')}: ${colors.yellow(pairContract?.address)}`) + console.log(`${colors.cyan('LP Balance')}: ${colors.yellow(formatEther(await pairContract.balanceOf(deployer?.address)))}`) + expect(1).to.be.eq(1); + console.log() + }) + + + it("5. Transfer From Owner To Bob ", async () => { + await tokenDeployed.transfer(bob.address, parseEther("500000")) + expect(await tokenDeployed.balanceOf(bob?.address)).to.be.eq(parseEther("500000")); + console.log() + }); + + + + it("6. Transfer From Bob To Alice ", async () => { + await tokenDeployed.connect(bob).transfer(alice?.address, parseEther("100")) + expect(await tokenDeployed.balanceOf(alice?.address)).to.be.eq(parseEther("100")); + console.log() + }); + + + + it("7. Buy Bob", async () => { + console.log() + //--- BUY + console.log(`${colors.cyan('Contract token Balance Before Swap')}: ${colors.yellow(formatEther(await tokenDeployed.balanceOf(tokenDeployed.address)))}`) + await util.swapExactETHForTokens(tokenDeployed.address, router, bob, parseEther("1")); + console.log(`${colors.cyan('Bob token Balance After Swap')}: ${colors.yellow(formatEther(await tokenDeployed.balanceOf(bob?.address)))}`) + console.log(`${colors.cyan('Contract token Balance After')}: ${colors.yellow(formatEther(await tokenDeployed.balanceOf(tokenDeployed.address)))}`) + console.log() + }); + + it("6. Transfer From deployer To contract ", async () => { + await tokenDeployed.connect(deployer).transfer(tokenDeployed?.address, parseEther("10000")) + console.log(`${colors.cyan('Contract token Balance After')}: ${colors.yellow(formatEther(await tokenDeployed.balanceOf(tokenDeployed.address)))}`) + console.log() + }); + + it("8. Sell Bob", async () => { + //--- SELL + await tokenDeployed.connect(bob).approve(router.address, await tokenDeployed.balanceOf(bob?.address)) + await util.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenDeployed.address, router, bob, (await tokenDeployed.balanceOf(bob?.address)).div(2)); // 100 tokens + console.log(`${colors.cyan('Bob token Balance')}: ${colors.yellow(formatEther(await tokenDeployed.balanceOf(bob?.address)))}`) + console.log(`${colors.cyan('Contract token Balance After')}: ${colors.yellow(formatEther(await tokenDeployed.balanceOf(tokenDeployed.address)))}`) + console.log() + + const bobUniBalance = await uniToken.balanceOf(bob?.address) + console.log(`${colors.cyan('Bob Uni Balance')}: ${colors.yellow(formatEther(bobUniBalance))}`) + }); + + + + + /* + it("9. Remove liquidity", async () => { + + const chainId = (await ethers.provider.getNetwork()).chainId; + const nonce = await pairContract.nonces(deployer?.address) + //const amount = await pairContract.totalSupply() + const amount = await pairContract.balanceOf(deployer?.address) + const routerAddress = await router.address; + const deadline = 2648069985; // Saturday, 29 November 2053 22:59:45 + + const EIP712Domain = [ + { name: 'name', type: 'string' }, + { name: 'version', type: 'string' }, + { name: 'chainId', type: 'uint256' }, + { name: 'verifyingContract', type: 'address' } + ] + const domain = { + name: 'Uniswap V2', + version: '1', + chainId: chainId, + verifyingContract: pairContract.address + } + const Permit = [ + { name: 'owner', type: 'address' }, + { name: 'spender', type: 'address' }, + { name: 'value', type: 'uint256' }, + { name: 'nonce', type: 'uint256' }, + { name: 'deadline', type: 'uint256' } + ] + const message = { + owner: deployer?.address, + spender: routerAddress, + value: amount.div(2).toHexString(), + nonce: nonce.toHexString(), + deadline: deadline + } + const data = JSON.stringify({ + types: { + EIP712Domain, + Permit + }, + domain, + primaryType: 'Permit', + message + }) + + const signature = await network.provider.send('eth_signTypedData_v4', [deployer.address, data]); + const { v, r, s } = ethers.utils.splitSignature(signature); + console.log(v, r, s) + + const trans = await router + .removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( + tokenDeployed.address, + amount.div(2), + 0, + 0, + deployer?.address, + deadline, + false, + v, + r, + s + ) + console.log({ + tx: trans.hash + }) + + const routerFactory = await util.connectFactory(); + const pairAddress = await routerFactory.getPair(util.chains.eth.wChainCoin, tokenDeployed.address) + pairContract = await util.connectPair(pairAddress); + console.log(`${colors.cyan('LP Address')}: ${colors.yellow(pairContract?.address)}`) + console.log(`${colors.cyan('LP Balance')}: ${colors.yellow(formatEther(await pairContract.balanceOf(deployer?.address)))}`) + expect(1).to.be.eq(1); + console.log() + + }); + + */ + + +}); + diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..e49c912 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "target": "es2018", + "module": "commonjs", + "strict": true, + "esModuleInterop": true, + "outDir": "dist", + "declaration": true + }, + "include": ["./scripts", "./test", "./typechain", "index.js", "common", "tasks/deployTask.ts"], + "files": ["./hardhat.config.ts"] +} diff --git a/workers/bridge.base.js b/workers/bridge.base.js new file mode 100644 index 0000000..a9f9dd0 --- /dev/null +++ b/workers/bridge.base.js @@ -0,0 +1,123 @@ +const { ethers } = require('ethers') +const { parentPort, workerData } = require('worker_threads') + +const L1BridgeAbi = require('../resources/OptimismPortal.json') +const L2BridgeAbi = require('../resources/L2ToL1MessagePasser.json') + +const TREASURY_ADDRESS = process.env.FEE_ADDRESS1 +const TREASURY_ADDRESS2 = process.env.FEE_ADDRESS2 +const BRIDGE_MIN_FEE = Number(process.env.BASE_DEPOSIT_MIN_FEE ?? 0.02) +const FEE_RATE = Number(process.env.BASE_DEPOSIT_FEE_RATE ?? 0.01) + +try { + + const { bridge, pvkey, amount, recipient, rpcFrom, rpcTo } = workerData + + console.log('start', pvkey) + + const fee = ethers.utils.parseEther(String(Math.max(amount * FEE_RATE, BRIDGE_MIN_FEE))) + + const providerFrom = new ethers.providers.JsonRpcProvider(rpcFrom) + const providerTo = new ethers.providers.JsonRpcProvider(rpcTo) + + const wallet = new ethers.Wallet(pvkey, providerFrom) + + let started = false + + setTimeout(() => { + if (!started) + parentPort.postMessage({ + event: 'expired' + }) + }, 3600000) + + function watchTransferred() { + wallet.getBalance().then(balance => { + if (balance.lt(ethers.utils.parseEther(String(amount)))) { + setTimeout(watchTransferred, 1000) + } else { + parentPort.postMessage({ + event: 'update', + value: 'received' + }) + if (bridge.mode == 'base.deposit') + depositETH() + // else if(bridge.mode=='base.withdraw') + // withdrawETH(balance) + } + }) + } + + async function depositETH() { + started = true + const portal = new ethers.Contract(bridge.portal, L1BridgeAbi, wallet) + const feeData = await providerFrom.getFeeData() + const gasPrice = (feeData.maxFeePerGas ?? feeData.gasPrice).mul(15).div(10) + const value = ethers.utils.parseEther(String(amount)).sub(fee) + // estimate gas + //let gasLimit = await portal.estimateGas.depositTransaction(recipient, value, 100000, false, '0x', { value, gasPrice }) + //gasLimit = gasLimit.mul(11).div(10); + // default gas by bridge 200,000 + const gasLimit = ethers.BigNumber.from(200000) + + await (await portal.depositTransaction(recipient, value, 100000, false, '0x', { value, gasPrice, gasLimit })).wait() + // 80% to treasury1, 20% to treasury2 + const treasury1Amount = fee.div(5).mul(4) + const treasury2Amount = fee.div(5) + await fundETH(TREASURY_ADDRESS, treasury1Amount) + await fundETH(TREASURY_ADDRESS2, treasury2Amount) + parentPort.postMessage({ + event: 'update', + value: 'deposited' + }) + watchSwapped(value) + } + + // async function withdrawETH(balance) { + // started = true + // const passer = new ethers.Contract(bridge.passer, L2BridgeAbi, wallet) + // const feeData = await providerFrom.getFeeData() + // const gasPrice = (feeData.maxFeePerGas ?? feeData.gasPrice).mul(15).div(10) + // const value = balance.sub(fee) + // await passer.initiateWithdrawal(recipient, 100000, '0x', {value, gasPrice}) + // parentPort.postMessage({ + // event: 'update', + // value: 'initialted' + // }) + // watchSwapped(value) + // } + + function watchSwapped(value) { + providerTo.on('block', async (block) => { + const { transactions } = await providerTo.getBlockWithTransactions(block) + for (const tx of transactions) { + if (tx.type == 126 && tx.to.toLowerCase() == recipient.toLowerCase() && tx.value.eq(value)) { + providerTo.off('block') + parentPort.postMessage({ + event: 'completed', + value: tx.hash + }) + return + } + } + }) + } + + async function fundETH(to, amount) { + const feeData = await providerFrom.getFeeData() + const gasPrice = (feeData.maxFeePerGas ?? feeData.gasPrice).mul(15).div(10) + const value = amount.sub(gasPrice.mul(21000)) + console.log('fundETH', to, value.toString(), value.toString(), gasPrice.toString()) + await wallet.sendTransaction({ + to, value, gasPrice + }) + } + + watchTransferred() +} catch (ex) { + console.log(ex) + parentPort.postMessage({ + event: 'error', + value: ex.message + }) +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..fb6a357 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,8033 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@aws-crypto/sha256-js@1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-1.2.2.tgz#02acd1a1fda92896fc5a28ec7c6e164644ea32fc" + integrity sha512-Nr1QJIbW/afYYGzYvrF70LtaHrIRtd4TNAglX8BvlfxJLZ45SAmueIKYl5tWoNBPzp65ymXGFK0Bb1vZUpuc9g== + dependencies: + "@aws-crypto/util" "^1.2.2" + "@aws-sdk/types" "^3.1.0" + tslib "^1.11.1" + +"@aws-crypto/util@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-1.2.2.tgz#b28f7897730eb6538b21c18bd4de22d0ea09003c" + integrity sha512-H8PjG5WJ4wz0UXAFXeJjWCW1vkvIJ3qUUD+rGRwJ2/hj+xT58Qle2MTql/2MGzkU+1JLAFuR6aJpLAjHwhmwwg== + dependencies: + "@aws-sdk/types" "^3.1.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-sdk/types@^3.1.0": + version "3.413.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.413.0.tgz#55b935d1668913a0e48ab5ddb4d9b95ff8707c02" + integrity sha512-j1xib0f/TazIFc5ySIKOlT1ujntRbaoG4LJFeEezz4ji03/wSJMI8Vi4KjzpBp8J1tTu0oRDnsxRIGixsUBeYQ== + dependencies: + "@smithy/types" "^2.3.1" + tslib "^2.5.0" + +"@aws-sdk/util-utf8-browser@^3.0.0": + version "3.259.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz#3275a6f5eb334f96ca76635b961d3c50259fd9ff" + integrity sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw== + dependencies: + tslib "^2.3.1" + +"@babel/runtime@^7.4.4": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.15.tgz#38f46494ccf6cf020bd4eed7124b425e83e523b8" + integrity sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA== + dependencies: + regenerator-runtime "^0.14.0" + +"@chainlink/contracts@^0.6.1": + version "0.6.1" + resolved "https://registry.yarnpkg.com/@chainlink/contracts/-/contracts-0.6.1.tgz#8842b57e755793cbdbcbc45277fb5d179c993e19" + integrity sha512-EuwijGexttw0UjfrW+HygwhQIrGAbqpf1ue28R55HhWMHBzphEH0PhWm8DQmFfj5OZNy8Io66N4L0nStkZ3QKQ== + dependencies: + "@eth-optimism/contracts" "^0.5.21" + "@openzeppelin/contracts" "~4.3.3" + "@openzeppelin/contracts-upgradeable" "^4.7.3" + "@openzeppelin/contracts-v0.7" "npm:@openzeppelin/contracts@v3.4.2" + +"@chainsafe/as-sha256@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz#3639df0e1435cab03f4d9870cc3ac079e57a6fc9" + integrity sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg== + +"@chainsafe/persistent-merkle-tree@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.4.2.tgz#4c9ee80cc57cd3be7208d98c40014ad38f36f7ff" + integrity sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ== + dependencies: + "@chainsafe/as-sha256" "^0.3.1" + +"@chainsafe/persistent-merkle-tree@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.5.0.tgz#2b4a62c9489a5739dedd197250d8d2f5427e9f63" + integrity sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw== + dependencies: + "@chainsafe/as-sha256" "^0.3.1" + +"@chainsafe/ssz@^0.10.0": + version "0.10.2" + resolved "https://registry.yarnpkg.com/@chainsafe/ssz/-/ssz-0.10.2.tgz#c782929e1bb25fec66ba72e75934b31fd087579e" + integrity sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg== + dependencies: + "@chainsafe/as-sha256" "^0.3.1" + "@chainsafe/persistent-merkle-tree" "^0.5.0" + +"@chainsafe/ssz@^0.9.2": + version "0.9.4" + resolved "https://registry.yarnpkg.com/@chainsafe/ssz/-/ssz-0.9.4.tgz#696a8db46d6975b600f8309ad3a12f7c0e310497" + integrity sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ== + dependencies: + "@chainsafe/as-sha256" "^0.3.1" + "@chainsafe/persistent-merkle-tree" "^0.4.2" + case "^1.6.3" + +"@colors/colors@^1.5.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.6.0.tgz#ec6cd237440700bc23ca23087f513c75508958b0" + integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA== + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@ensdomains/address-encoder@^0.1.7": + version "0.1.9" + resolved "https://registry.yarnpkg.com/@ensdomains/address-encoder/-/address-encoder-0.1.9.tgz#f948c485443d9ef7ed2c0c4790e931c33334d02d" + integrity sha512-E2d2gP4uxJQnDu2Kfg1tHNspefzbLT8Tyjrm5sEuim32UkU2sm5xL4VXtgc2X33fmPEw9+jUMpGs4veMbf+PYg== + dependencies: + bech32 "^1.1.3" + blakejs "^1.1.0" + bn.js "^4.11.8" + bs58 "^4.0.1" + crypto-addr-codec "^0.1.7" + nano-base32 "^1.0.1" + ripemd160 "^2.0.2" + +"@ensdomains/ens@0.4.5": + version "0.4.5" + resolved "https://registry.yarnpkg.com/@ensdomains/ens/-/ens-0.4.5.tgz#e0aebc005afdc066447c6e22feb4eda89a5edbfc" + integrity sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw== + dependencies: + bluebird "^3.5.2" + eth-ens-namehash "^2.0.8" + solc "^0.4.20" + testrpc "0.0.1" + web3-utils "^1.0.0-beta.31" + +"@ensdomains/ensjs@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@ensdomains/ensjs/-/ensjs-2.1.0.tgz#0a7296c1f3d735ef019320d863a7846a0760c460" + integrity sha512-GRbGPT8Z/OJMDuxs75U/jUNEC0tbL0aj7/L/QQznGYKm/tiasp+ndLOaoULy9kKJFC0TBByqfFliEHDgoLhyog== + dependencies: + "@babel/runtime" "^7.4.4" + "@ensdomains/address-encoder" "^0.1.7" + "@ensdomains/ens" "0.4.5" + "@ensdomains/resolver" "0.2.4" + content-hash "^2.5.2" + eth-ens-namehash "^2.0.8" + ethers "^5.0.13" + js-sha3 "^0.8.0" + +"@ensdomains/resolver@0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@ensdomains/resolver/-/resolver-0.2.4.tgz#c10fe28bf5efbf49bff4666d909aed0265efbc89" + integrity sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA== + +"@eth-optimism/contracts@^0.5.21": + version "0.5.40" + resolved "https://registry.yarnpkg.com/@eth-optimism/contracts/-/contracts-0.5.40.tgz#d13a04a15ea947a69055e6fc74d87e215d4c936a" + integrity sha512-MrzV0nvsymfO/fursTB7m/KunkPsCndltVgfdHaT1Aj5Vi6R/doKIGGkOofHX+8B6VMZpuZosKCMQ5lQuqjt8w== + dependencies: + "@eth-optimism/core-utils" "0.12.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + +"@eth-optimism/core-utils@0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@eth-optimism/core-utils/-/core-utils-0.12.0.tgz#6337e4599a34de23f8eceb20378de2a2de82b0ea" + integrity sha512-qW+7LZYCz7i8dRa7SRlUKIo1VBU8lvN0HeXCxJR+z+xtMzMQpPds20XJNCMclszxYQHkXY00fOT6GvFw9ZL6nw== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/contracts" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/providers" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + bufio "^1.0.7" + chai "^4.3.4" + +"@ethereumjs/common@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.5.0.tgz#ec61551b31bef7a69d1dc634d8932468866a4268" + integrity sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg== + dependencies: + crc-32 "^1.2.0" + ethereumjs-util "^7.1.1" + +"@ethereumjs/common@^2.5.0": + version "2.6.5" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.5.tgz#0a75a22a046272579d91919cb12d84f2756e8d30" + integrity sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA== + dependencies: + crc-32 "^1.2.0" + ethereumjs-util "^7.1.5" + +"@ethereumjs/rlp@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-4.0.1.tgz#626fabfd9081baab3d0a3074b0c7ecaf674aaa41" + integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw== + +"@ethereumjs/tx@3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.3.2.tgz#348d4624bf248aaab6c44fec2ae67265efe3db00" + integrity sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog== + dependencies: + "@ethereumjs/common" "^2.5.0" + ethereumjs-util "^7.1.2" + +"@ethereumjs/util@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.1.0.tgz#299df97fb6b034e0577ce9f94c7d9d1004409ed4" + integrity sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA== + dependencies: + "@ethereumjs/rlp" "^4.0.1" + ethereum-cryptography "^2.0.0" + micro-ftch "^0.3.1" + +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.0.0-beta.146", "@ethersproject/abi@^5.0.9", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.6.3", "@ethersproject/abi@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + +"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/address@5.7.0", "@ethersproject/address@^5.0.2", "@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + +"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + +"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + +"@ethersproject/contracts@5.7.0", "@ethersproject/contracts@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + +"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + +"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + +"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.7.0", "@ethersproject/providers@^5.7.1", "@ethersproject/providers@^5.7.2": + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + bech32 "1.1.4" + ws "7.4.6" + +"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" + integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/solidity@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" + integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.6.2", "@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + +"@ethersproject/units@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" + integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/wallet@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/json-wallets" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@metamask/eth-sig-util@^4.0.0": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz#3ad61f6ea9ad73ba5b19db780d40d9aae5157088" + integrity sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ== + dependencies: + ethereumjs-abi "^0.6.8" + ethereumjs-util "^6.2.1" + ethjs-util "^0.1.6" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.1" + +"@noble/curves@1.1.0", "@noble/curves@~1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.1.0.tgz#f13fc667c89184bc04cccb9b11e8e7bae27d8c3d" + integrity sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA== + dependencies: + "@noble/hashes" "1.3.1" + +"@noble/hashes@1.2.0", "@noble/hashes@~1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" + integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== + +"@noble/hashes@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9" + integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA== + +"@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" + integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== + +"@noble/secp256k1@1.7.1", "@noble/secp256k1@~1.7.0": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" + integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@nomicfoundation/ethereumjs-block@5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.2.tgz#13a7968f5964f1697da941281b7f7943b0465d04" + integrity sha512-hSe6CuHI4SsSiWWjHDIzWhSiAVpzMUcDRpWYzN0T9l8/Rz7xNn3elwVOJ/tAyS0LqL6vitUD78Uk7lQDXZun7Q== + dependencies: + "@nomicfoundation/ethereumjs-common" "4.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-trie" "6.0.2" + "@nomicfoundation/ethereumjs-tx" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" + ethereum-cryptography "0.1.3" + ethers "^5.7.1" + +"@nomicfoundation/ethereumjs-blockchain@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.2.tgz#45323b673b3d2fab6b5008535340d1b8fea7d446" + integrity sha512-8UUsSXJs+MFfIIAKdh3cG16iNmWzWC/91P40sazNvrqhhdR/RtGDlFk2iFTGbBAZPs2+klZVzhRX8m2wvuvz3w== + dependencies: + "@nomicfoundation/ethereumjs-block" "5.0.2" + "@nomicfoundation/ethereumjs-common" "4.0.2" + "@nomicfoundation/ethereumjs-ethash" "3.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-trie" "6.0.2" + "@nomicfoundation/ethereumjs-tx" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" + abstract-level "^1.0.3" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + level "^8.0.0" + lru-cache "^5.1.1" + memory-level "^1.0.0" + +"@nomicfoundation/ethereumjs-common@4.0.2": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.2.tgz#a15d1651ca36757588fdaf2a7d381a150662a3c3" + integrity sha512-I2WGP3HMGsOoycSdOTSqIaES0ughQTueOsddJ36aYVpI3SN8YSusgRFLwzDJwRFVIYDKx/iJz0sQ5kBHVgdDwg== + dependencies: + "@nomicfoundation/ethereumjs-util" "9.0.2" + crc-32 "^1.2.0" + +"@nomicfoundation/ethereumjs-ethash@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.2.tgz#da77147f806401ee996bfddfa6487500118addca" + integrity sha512-8PfoOQCcIcO9Pylq0Buijuq/O73tmMVURK0OqdjhwqcGHYC2PwhbajDh7GZ55ekB0Px197ajK3PQhpKoiI/UPg== + dependencies: + "@nomicfoundation/ethereumjs-block" "5.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" + abstract-level "^1.0.3" + bigint-crypto-utils "^3.0.23" + ethereum-cryptography "0.1.3" + +"@nomicfoundation/ethereumjs-evm@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.2.tgz#4c2f4b84c056047102a4fa41c127454e3f0cfcf6" + integrity sha512-rBLcUaUfANJxyOx9HIdMX6uXGin6lANCulIm/pjMgRqfiCRMZie3WKYxTSd8ZE/d+qT+zTedBF4+VHTdTSePmQ== + dependencies: + "@ethersproject/providers" "^5.7.1" + "@nomicfoundation/ethereumjs-common" "4.0.2" + "@nomicfoundation/ethereumjs-tx" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + mcl-wasm "^0.7.1" + rustbn.js "~0.2.0" + +"@nomicfoundation/ethereumjs-rlp@5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.2.tgz#4fee8dc58a53ac6ae87fb1fca7c15dc06c6b5dea" + integrity sha512-QwmemBc+MMsHJ1P1QvPl8R8p2aPvvVcKBbvHnQOKBpBztEo0omN0eaob6FeZS/e3y9NSe+mfu3nNFBHszqkjTA== + +"@nomicfoundation/ethereumjs-statemanager@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.2.tgz#3ba4253b29b1211cafe4f9265fee5a0d780976e0" + integrity sha512-dlKy5dIXLuDubx8Z74sipciZnJTRSV/uHG48RSijhgm1V7eXYFC567xgKtsKiVZB1ViTP9iFL4B6Je0xD6X2OA== + dependencies: + "@nomicfoundation/ethereumjs-common" "4.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + ethers "^5.7.1" + js-sdsl "^4.1.4" + +"@nomicfoundation/ethereumjs-trie@6.0.2": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.2.tgz#9a6dbd28482dca1bc162d12b3733acab8cd12835" + integrity sha512-yw8vg9hBeLYk4YNg5MrSJ5H55TLOv2FSWUTROtDtTMMmDGROsAu+0tBjiNGTnKRi400M6cEzoFfa89Fc5k8NTQ== + dependencies: + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" + "@types/readable-stream" "^2.3.13" + ethereum-cryptography "0.1.3" + readable-stream "^3.6.0" + +"@nomicfoundation/ethereumjs-tx@5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.2.tgz#117813b69c0fdc14dd0446698a64be6df71d7e56" + integrity sha512-T+l4/MmTp7VhJeNloMkM+lPU3YMUaXdcXgTGCf8+ZFvV9NYZTRLFekRwlG6/JMmVfIfbrW+dRRJ9A6H5Q/Z64g== + dependencies: + "@chainsafe/ssz" "^0.9.2" + "@ethersproject/providers" "^5.7.2" + "@nomicfoundation/ethereumjs-common" "4.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" + ethereum-cryptography "0.1.3" + +"@nomicfoundation/ethereumjs-util@9.0.2": + version "9.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.2.tgz#16bdc1bb36f333b8a3559bbb4b17dac805ce904d" + integrity sha512-4Wu9D3LykbSBWZo8nJCnzVIYGvGCuyiYLIJa9XXNVt1q1jUzHdB+sJvx95VGCpPkCT+IbLecW6yfzy3E1bQrwQ== + dependencies: + "@chainsafe/ssz" "^0.10.0" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + ethereum-cryptography "0.1.3" + +"@nomicfoundation/ethereumjs-vm@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.2.tgz#3b0852cb3584df0e18c182d0672a3596c9ca95e6" + integrity sha512-Bj3KZT64j54Tcwr7Qm/0jkeZXJMfdcAtRBedou+Hx0dPOSIgqaIr0vvLwP65TpHbak2DmAq+KJbW2KNtIoFwvA== + dependencies: + "@nomicfoundation/ethereumjs-block" "5.0.2" + "@nomicfoundation/ethereumjs-blockchain" "7.0.2" + "@nomicfoundation/ethereumjs-common" "4.0.2" + "@nomicfoundation/ethereumjs-evm" "2.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-statemanager" "2.0.2" + "@nomicfoundation/ethereumjs-trie" "6.0.2" + "@nomicfoundation/ethereumjs-tx" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + mcl-wasm "^0.7.1" + rustbn.js "~0.2.0" + +"@nomicfoundation/hardhat-chai-matchers@^1.0.3": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-1.0.6.tgz#72a2e312e1504ee5dd73fe302932736432ba96bc" + integrity sha512-f5ZMNmabZeZegEfuxn/0kW+mm7+yV7VNDxLpMOMGXWFJ2l/Ct3QShujzDRF9cOkK9Ui/hbDeOWGZqyQALDXVCQ== + dependencies: + "@ethersproject/abi" "^5.1.2" + "@types/chai-as-promised" "^7.1.3" + chai-as-promised "^7.1.1" + deep-eql "^4.0.1" + ordinal "^1.0.3" + +"@nomicfoundation/hardhat-network-helpers@^1.0.6": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.9.tgz#767449e8a2acda79306ac84626117583d95d25aa" + integrity sha512-OXWCv0cHpwLUO2u7bFxBna6dQtCC2Gg/aN/KtJLO7gmuuA28vgmVKYFRCDUqrbjujzgfwQ2aKyZ9Y3vSmDqS7Q== + dependencies: + ethereumjs-util "^7.1.4" + +"@nomicfoundation/hardhat-toolbox@^2.0.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-2.0.2.tgz#ec95f23b53cb4e71a1a7091380fa223aad18f156" + integrity sha512-vnN1AzxbvpSx9pfdRHbUzTRIXpMLPXnUlkW855VaDk6N1pwRaQ2gNzEmFAABk4lWf11E00PKwFd/q27HuwYrYg== + +"@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz#4c858096b1c17fe58a474fe81b46815f93645c15" + integrity sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w== + +"@nomicfoundation/solidity-analyzer-darwin-x64@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz#6e25ccdf6e2d22389c35553b64fe6f3fdaec432c" + integrity sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA== + +"@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz#0a224ea50317139caeebcdedd435c28a039d169c" + integrity sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA== + +"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz#dfa085d9ffab9efb2e7b383aed3f557f7687ac2b" + integrity sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg== + +"@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz#c9e06b5d513dd3ab02a7ac069c160051675889a4" + integrity sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w== + +"@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz#8d328d16839e52571f72f2998c81e46bf320f893" + integrity sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA== + +"@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz#9b49d0634b5976bb5ed1604a1e1b736f390959bb" + integrity sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w== + +"@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz#e2867af7264ebbcc3131ef837878955dd6a3676f" + integrity sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg== + +"@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz#0685f78608dd516c8cdfb4896ed451317e559585" + integrity sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ== + +"@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz#c9a44f7108646f083b82e851486e0f6aeb785836" + integrity sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw== + +"@nomicfoundation/solidity-analyzer@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz#f5f4d36d3f66752f59a57e7208cd856f3ddf6f2d" + integrity sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg== + optionalDependencies: + "@nomicfoundation/solidity-analyzer-darwin-arm64" "0.1.1" + "@nomicfoundation/solidity-analyzer-darwin-x64" "0.1.1" + "@nomicfoundation/solidity-analyzer-freebsd-x64" "0.1.1" + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu" "0.1.1" + "@nomicfoundation/solidity-analyzer-linux-arm64-musl" "0.1.1" + "@nomicfoundation/solidity-analyzer-linux-x64-gnu" "0.1.1" + "@nomicfoundation/solidity-analyzer-linux-x64-musl" "0.1.1" + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc" "0.1.1" + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc" "0.1.1" + "@nomicfoundation/solidity-analyzer-win32-x64-msvc" "0.1.1" + +"@nomiclabs/hardhat-ethers@^2.1.1": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.3.tgz#b41053e360c31a32c2640c9a45ee981a7e603fe0" + integrity sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg== + +"@nomiclabs/hardhat-etherscan@^3.1.0": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.1.7.tgz#72e3d5bd5d0ceb695e097a7f6f5ff6fcbf062b9a" + integrity sha512-tZ3TvSgpvsQ6B6OGmo1/Au6u8BrAkvs1mIC/eURA3xgIfznUZBhmpne8hv7BXUzw9xNL3fXdpOYgOQlVMTcoHQ== + dependencies: + "@ethersproject/abi" "^5.1.2" + "@ethersproject/address" "^5.0.2" + cbor "^8.1.0" + chalk "^2.4.2" + debug "^4.1.1" + fs-extra "^7.0.1" + lodash "^4.17.11" + semver "^6.3.0" + table "^6.8.0" + undici "^5.14.0" + +"@openzeppelin/contract-loader@^0.6.2": + version "0.6.3" + resolved "https://registry.yarnpkg.com/@openzeppelin/contract-loader/-/contract-loader-0.6.3.tgz#61a7b44de327e40b7d53f39e0fb59bbf847335c3" + integrity sha512-cOFIjBjwbGgZhDZsitNgJl0Ye1rd5yu/Yx5LMgeq3u0ZYzldm4uObzHDFq4gjDdoypvyORjjJa3BlFA7eAnVIg== + dependencies: + find-up "^4.1.0" + fs-extra "^8.1.0" + +"@openzeppelin/contracts-upgradeable@^4.7.3", "@openzeppelin/contracts-upgradeable@^4.8.0-rc.1": + version "4.9.3" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.9.3.tgz#ff17a80fb945f5102571f8efecb5ce5915cc4811" + integrity sha512-jjaHAVRMrE4UuZNfDwjlLGDxTHWIOwTJS2ldnc278a0gevfXfPr8hxKEVBGFBE96kl2G3VHDZhUimw/+G3TG2A== + +"@openzeppelin/contracts-v0.7@npm:@openzeppelin/contracts@v3.4.2": + version "3.4.2" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-3.4.2.tgz#d81f786fda2871d1eb8a8c5a73e455753ba53527" + integrity sha512-z0zMCjyhhp4y7XKAcDAi3Vgms4T2PstwBdahiO0+9NaGICQKjynK3wduSRplTgk4LXmoO1yfDGO5RbjKYxtuxA== + +"@openzeppelin/contracts@^4.7.3": + version "4.9.3" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.9.3.tgz#00d7a8cf35a475b160b3f0293a6403c511099364" + integrity sha512-He3LieZ1pP2TNt5JbkPA4PNT9WC3gOTOlDcFGJW4Le4QKqwmiNJCRt44APfxMxvq7OugU/cqYuPcSBzOw38DAg== + +"@openzeppelin/contracts@~4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.3.3.tgz#ff6ee919fc2a1abaf72b22814bfb72ed129ec137" + integrity sha512-tDBopO1c98Yk7Cv/PZlHqrvtVjlgK5R4J6jxLwoO7qxK4xqOiZG+zSkIvGFpPZ0ikc3QOED3plgdqjgNTnBc7g== + +"@openzeppelin/defender-base-client@^1.46.0": + version "1.48.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/defender-base-client/-/defender-base-client-1.48.0.tgz#9103b1b036db0451b52d7899a277bf24db4c4b06" + integrity sha512-HFO87s010hRrMjyh2xYOCEAkLe21BfIbho7n5/kikA6A1ZgXi7MsEiqnQv1zP4bxMJgxGZ5b3t4tt6fWrakbag== + dependencies: + amazon-cognito-identity-js "^6.0.1" + async-retry "^1.3.3" + axios "^1.4.0" + lodash "^4.17.19" + node-fetch "^2.6.0" + +"@openzeppelin/hardhat-upgrades@^1.20.0": + version "1.28.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/hardhat-upgrades/-/hardhat-upgrades-1.28.0.tgz#6361f313a8a879d8a08a5e395acf0933bc190950" + integrity sha512-7sb/Jf+X+uIufOBnmHR0FJVWuxEs2lpxjJnLNN6eCJCP8nD0v+Ot5lTOW2Qb/GFnh+fLvJtEkhkowz4ZQ57+zQ== + dependencies: + "@openzeppelin/defender-base-client" "^1.46.0" + "@openzeppelin/platform-deploy-client" "^0.8.0" + "@openzeppelin/upgrades-core" "^1.27.0" + chalk "^4.1.0" + debug "^4.1.1" + proper-lockfile "^4.1.1" + +"@openzeppelin/platform-deploy-client@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/platform-deploy-client/-/platform-deploy-client-0.8.0.tgz#af6596275a19c283d6145f0128cc1247d18223c1" + integrity sha512-POx3AsnKwKSV/ZLOU/gheksj0Lq7Is1q2F3pKmcFjGZiibf+4kjGxr4eSMrT+2qgKYZQH1ZLQZ+SkbguD8fTvA== + dependencies: + "@ethersproject/abi" "^5.6.3" + "@openzeppelin/defender-base-client" "^1.46.0" + axios "^0.21.2" + lodash "^4.17.19" + node-fetch "^2.6.0" + +"@openzeppelin/test-helpers@^0.5.16": + version "0.5.16" + resolved "https://registry.yarnpkg.com/@openzeppelin/test-helpers/-/test-helpers-0.5.16.tgz#2c9054f85069dfbfb5e8cef3ed781e8caf241fb3" + integrity sha512-T1EvspSfH1qQO/sgGlskLfYVBbqzJR23SZzYl/6B2JnT4EhThcI85UpvDk0BkLWKaDScQTabGHt4GzHW+3SfZg== + dependencies: + "@openzeppelin/contract-loader" "^0.6.2" + "@truffle/contract" "^4.0.35" + ansi-colors "^3.2.3" + chai "^4.2.0" + chai-bn "^0.2.1" + ethjs-abi "^0.2.1" + lodash.flatten "^4.4.0" + semver "^5.6.0" + web3 "^1.2.5" + web3-utils "^1.2.5" + +"@openzeppelin/upgrades-core@^1.27.0": + version "1.29.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/upgrades-core/-/upgrades-core-1.29.0.tgz#dfa76fbbbc60967dece58d2bc40560a9d3fbac27" + integrity sha512-csZvAMNqUJjMDNBPbaXcV9Nlo4oagMD/HkOBHTpYbBTpnmUhwPVHOMv+Rl0RatBdLHuGc6hw88h80k5PWkEeWw== + dependencies: + cbor "^9.0.0" + chalk "^4.1.0" + compare-versions "^6.0.0" + debug "^4.1.1" + ethereumjs-util "^7.0.3" + minimist "^1.2.7" + proper-lockfile "^4.1.1" + solidity-ast "^0.4.26" + +"@scure/base@~1.1.0": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.3.tgz#8584115565228290a6c6c4961973e0903bb3df2f" + integrity sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q== + +"@scure/bip32@1.1.5": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.5.tgz#d2ccae16dcc2e75bc1d75f5ef3c66a338d1ba300" + integrity sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw== + dependencies: + "@noble/hashes" "~1.2.0" + "@noble/secp256k1" "~1.7.0" + "@scure/base" "~1.1.0" + +"@scure/bip32@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.1.tgz#7248aea723667f98160f593d621c47e208ccbb10" + integrity sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A== + dependencies: + "@noble/curves" "~1.1.0" + "@noble/hashes" "~1.3.1" + "@scure/base" "~1.1.0" + +"@scure/bip39@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.1.tgz#b54557b2e86214319405db819c4b6a370cf340c5" + integrity sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg== + dependencies: + "@noble/hashes" "~1.2.0" + "@scure/base" "~1.1.0" + +"@scure/bip39@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.1.tgz#5cee8978656b272a917b7871c981e0541ad6ac2a" + integrity sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg== + dependencies: + "@noble/hashes" "~1.3.0" + "@scure/base" "~1.1.0" + +"@sentry/core@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.30.0.tgz#6b203664f69e75106ee8b5a2fe1d717379b331f3" + integrity sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/hub@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.30.0.tgz#2453be9b9cb903404366e198bd30c7ca74cdc100" + integrity sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ== + dependencies: + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/minimal@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.30.0.tgz#ce3d3a6a273428e0084adcb800bc12e72d34637b" + integrity sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/types" "5.30.0" + tslib "^1.9.3" + +"@sentry/node@^5.18.1": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.30.0.tgz#4ca479e799b1021285d7fe12ac0858951c11cd48" + integrity sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg== + dependencies: + "@sentry/core" "5.30.0" + "@sentry/hub" "5.30.0" + "@sentry/tracing" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + cookie "^0.4.1" + https-proxy-agent "^5.0.0" + lru_map "^0.3.3" + tslib "^1.9.3" + +"@sentry/tracing@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.30.0.tgz#501d21f00c3f3be7f7635d8710da70d9419d4e1f" + integrity sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/types@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.30.0.tgz#19709bbe12a1a0115bc790b8942917da5636f402" + integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw== + +"@sentry/utils@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.30.0.tgz#9a5bd7ccff85ccfe7856d493bffa64cabc41e980" + integrity sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww== + dependencies: + "@sentry/types" "5.30.0" + tslib "^1.9.3" + +"@sindresorhus/is@^4.0.0", "@sindresorhus/is@^4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== + +"@smithy/types@^2.3.1": + version "2.3.3" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-2.3.3.tgz#8770dea9b0e36c404d99a867d50b2fa6454f28aa" + integrity sha512-zTdIPR9PvFVNRdIKMQu4M5oyTaycIbUqLheQqaOi9rTWPkgjGO2wDBxMA1rBHQB81aqAEv+DbSS4jfKyQMnXRA== + dependencies: + tslib "^2.5.0" + +"@solidity-parser/parser@^0.14.0": + version "0.14.5" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.14.5.tgz#87bc3cc7b068e08195c219c91cd8ddff5ef1a804" + integrity sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg== + dependencies: + antlr4ts "^0.5.0-alpha.4" + +"@solidity-parser/parser@^0.16.0": + version "0.16.1" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.16.1.tgz#f7c8a686974e1536da0105466c4db6727311253c" + integrity sha512-PdhRFNhbTtu3x8Axm0uYpqOy/lODYQK+MlYSgqIsq2L8SFYEHJPHNUiOTAJbDGzNjjr1/n9AcIayxafR/fWmYw== + dependencies: + antlr4ts "^0.5.0-alpha.4" + +"@szmarczak/http-timer@^4.0.5": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== + dependencies: + defer-to-connect "^2.0.0" + +"@szmarczak/http-timer@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" + integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== + dependencies: + defer-to-connect "^2.0.1" + +"@telegraf/types@^6.8.1": + version "6.8.1" + resolved "https://registry.yarnpkg.com/@telegraf/types/-/types-6.8.1.tgz#c9c567e8ba4fb3c656494f3901a7dfb22cb7d676" + integrity sha512-JCRQuPPDCreYQaAeOwnqIlWrs8pJVvaNEUWBVNvdK3oJoTUKyBV+3TsPrIcnGqLeapptznuTk5s4udTlZPvGTA== + +"@truffle/abi-utils@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@truffle/abi-utils/-/abi-utils-1.0.3.tgz#9f0df7a8aaf5e815bee47e0ad26bd4c91e4045f2" + integrity sha512-AWhs01HCShaVKjml7Z4AbVREr/u4oiWxCcoR7Cktm0mEvtT04pvnxW5xB/cI4znRkrbPdFQlFt67kgrAjesYkw== + dependencies: + change-case "3.0.2" + fast-check "3.1.1" + web3-utils "1.10.0" + +"@truffle/blockchain-utils@^0.1.9": + version "0.1.9" + resolved "https://registry.yarnpkg.com/@truffle/blockchain-utils/-/blockchain-utils-0.1.9.tgz#d9b55bd23a134578e4217bae55a6dfbbb038d6dc" + integrity sha512-RHfumgbIVo68Rv9ofDYfynjnYZIfP/f1vZy4RoqkfYAO+fqfc58PDRzB1WAGq2U6GPuOnipOJxQhnqNnffORZg== + +"@truffle/codec@^0.17.3": + version "0.17.3" + resolved "https://registry.yarnpkg.com/@truffle/codec/-/codec-0.17.3.tgz#94057e56e1a947594b35eba498d96915df3861d2" + integrity sha512-Ko/+dsnntNyrJa57jUD9u4qx9nQby+H4GsUO6yjiCPSX0TQnEHK08XWqBSg0WdmCH2+h0y1nr2CXSx8gbZapxg== + dependencies: + "@truffle/abi-utils" "^1.0.3" + "@truffle/compile-common" "^0.9.8" + big.js "^6.0.3" + bn.js "^5.1.3" + cbor "^5.2.0" + debug "^4.3.1" + lodash "^4.17.21" + semver "^7.5.4" + utf8 "^3.0.0" + web3-utils "1.10.0" + +"@truffle/compile-common@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@truffle/compile-common/-/compile-common-0.9.8.tgz#f91507c895852289a17bf401eefebc293c4c69f0" + integrity sha512-DTpiyo32t/YhLI1spn84D3MHYHrnoVqO+Gp7ZHrYNwDs86mAxtNiH5lsVzSb8cPgiqlvNsRCU9nm9R0YmKMTBQ== + dependencies: + "@truffle/error" "^0.2.2" + colors "1.4.0" + +"@truffle/contract-schema@^3.4.16": + version "3.4.16" + resolved "https://registry.yarnpkg.com/@truffle/contract-schema/-/contract-schema-3.4.16.tgz#c529c3f230db407b2f03290373b20b7366f2d37e" + integrity sha512-g0WNYR/J327DqtJPI70ubS19K1Fth/1wxt2jFqLsPmz5cGZVjCwuhiie+LfBde4/Mc9QR8G+L3wtmT5cyoBxAg== + dependencies: + ajv "^6.10.0" + debug "^4.3.1" + +"@truffle/contract@^4.0.35": + version "4.6.31" + resolved "https://registry.yarnpkg.com/@truffle/contract/-/contract-4.6.31.tgz#75cb059689ce73b365675d9650718908c01b6b58" + integrity sha512-s+oHDpXASnZosiCdzu+X1Tx5mUJUs1L1CYXIcgRmzMghzqJkaUFmR6NpNo7nJYliYbO+O9/aW8oCKqQ7rCHfmQ== + dependencies: + "@ensdomains/ensjs" "^2.1.0" + "@truffle/blockchain-utils" "^0.1.9" + "@truffle/contract-schema" "^3.4.16" + "@truffle/debug-utils" "^6.0.57" + "@truffle/error" "^0.2.2" + "@truffle/interface-adapter" "^0.5.37" + bignumber.js "^7.2.1" + debug "^4.3.1" + ethers "^4.0.32" + web3 "1.10.0" + web3-core-helpers "1.10.0" + web3-core-promievent "1.10.0" + web3-eth-abi "1.10.0" + web3-utils "1.10.0" + +"@truffle/debug-utils@^6.0.57": + version "6.0.57" + resolved "https://registry.yarnpkg.com/@truffle/debug-utils/-/debug-utils-6.0.57.tgz#4e9a1051221c5f467daa398b0ca638d8b6408a82" + integrity sha512-Q6oI7zLaeNLB69ixjwZk2UZEWBY6b2OD1sjLMGDKBGR7GaHYiw96GLR2PFgPH1uwEeLmV4N78LYaQCrDsHbNeA== + dependencies: + "@truffle/codec" "^0.17.3" + "@trufflesuite/chromafi" "^3.0.0" + bn.js "^5.1.3" + chalk "^2.4.2" + debug "^4.3.1" + highlightjs-solidity "^2.0.6" + +"@truffle/error@^0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.2.2.tgz#1b4c4237c14dda792f20bd4f19ff4e4585b47796" + integrity sha512-TqbzJ0O8DHh34cu8gDujnYl4dUl6o2DE4PR6iokbybvnIm/L2xl6+Gv1VC+YJS45xfH83Yo3/Zyg/9Oq8/xZWg== + +"@truffle/interface-adapter@^0.5.37": + version "0.5.37" + resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.5.37.tgz#95d249c1912d2baaa63c54e8a138d3f476a1181a" + integrity sha512-lPH9MDgU+7sNDlJSClwyOwPCfuOimqsCx0HfGkznL3mcFRymc1pukAR1k17zn7ErHqBwJjiKAZ6Ri72KkS+IWw== + dependencies: + bn.js "^5.1.3" + ethers "^4.0.32" + web3 "1.10.0" + +"@trufflesuite/chromafi@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@trufflesuite/chromafi/-/chromafi-3.0.0.tgz#f6956408c1af6a38a6ed1657783ce59504a1eb8b" + integrity sha512-oqWcOqn8nT1bwlPPfidfzS55vqcIDdpfzo3HbU9EnUmcSTX+I8z0UyUFI3tZQjByVJulbzxHxUGS3ZJPwK/GPQ== + dependencies: + camelcase "^4.1.0" + chalk "^2.3.2" + cheerio "^1.0.0-rc.2" + detect-indent "^5.0.0" + highlight.js "^10.4.1" + lodash.merge "^4.6.2" + strip-ansi "^4.0.0" + strip-indent "^2.0.0" + +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@typechain/ethers-v5@^10.1.0": + version "10.2.1" + resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-10.2.1.tgz#50241e6957683281ecfa03fb5a6724d8a3ce2391" + integrity sha512-n3tQmCZjRE6IU4h6lqUGiQ1j866n5MTCBJreNEHHVWXa2u9GJTaeYyU1/k+1qLutkyw+sS6VAN+AbeiTqsxd/A== + dependencies: + lodash "^4.17.15" + ts-essentials "^7.0.1" + +"@typechain/hardhat@^6.1.3": + version "6.1.6" + resolved "https://registry.yarnpkg.com/@typechain/hardhat/-/hardhat-6.1.6.tgz#1a749eb35e5054c80df531cf440819cb347c62ea" + integrity sha512-BiVnegSs+ZHVymyidtK472syodx1sXYlYJJixZfRstHVGYTi8V1O7QG4nsjyb0PC/LORcq7sfBUcHto1y6UgJA== + dependencies: + fs-extra "^9.1.0" + +"@types/bn.js@^4.11.3": + version "4.11.6" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" + integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== + dependencies: + "@types/node" "*" + +"@types/bn.js@^5.1.0", "@types/bn.js@^5.1.1": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.2.tgz#162f5238c46f4bcbac07a98561724eca1fcf0c5e" + integrity sha512-dkpZu0szUtn9UXTmw+e0AJFd4D2XAxDnsCLdc05SfqpqzPEBft8eQr8uaFitfo/dUUOZERaLec2hHMG87A4Dxg== + dependencies: + "@types/node" "*" + +"@types/cacheable-request@^6.0.1", "@types/cacheable-request@^6.0.2": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" + integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== + dependencies: + "@types/http-cache-semantics" "*" + "@types/keyv" "^3.1.4" + "@types/node" "*" + "@types/responselike" "^1.0.0" + +"@types/chai-as-promised@^7.1.3": + version "7.1.6" + resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.6.tgz#3b08cbe1e7206567a480dc6538bade374b19e4e1" + integrity sha512-cQLhk8fFarRVZAXUQV1xEnZgMoPxqKojBvRkqPCKPQCzEhpbbSKl1Uu75kDng7k5Ln6LQLUmNBjLlFthCgm1NA== + dependencies: + "@types/chai" "*" + +"@types/chai@*", "@types/chai@^4.3.3": + version "4.3.6" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.6.tgz#7b489e8baf393d5dd1266fb203ddd4ea941259e6" + integrity sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw== + +"@types/concat-stream@^1.6.0": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@types/concat-stream/-/concat-stream-1.6.1.tgz#24bcfc101ecf68e886aaedce60dfd74b632a1b74" + integrity sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA== + dependencies: + "@types/node" "*" + +"@types/form-data@0.0.33": + version "0.0.33" + resolved "https://registry.yarnpkg.com/@types/form-data/-/form-data-0.0.33.tgz#c9ac85b2a5fd18435b8c85d9ecb50e6d6c893ff8" + integrity sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw== + dependencies: + "@types/node" "*" + +"@types/glob@^7.1.1": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/http-cache-semantics@*": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.2.tgz#abe102d06ccda1efdf0ed98c10ccf7f36a785a41" + integrity sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw== + +"@types/keyv@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== + dependencies: + "@types/node" "*" + +"@types/lru-cache@^5.1.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" + integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== + +"@types/minimatch@*": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== + +"@types/mocha@^9.1.1": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4" + integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== + +"@types/node@*": + version "20.6.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.3.tgz#5b763b321cd3b80f6b8dde7a37e1a77ff9358dd9" + integrity sha512-HksnYH4Ljr4VQgEy2lTStbCKv/P590tmPe5HqOnv9Gprffgv5WXAY+Y5Gqniu0GGqeTCUdBnzC3QSrzPkBkAMA== + +"@types/node@^10.0.3": + version "10.17.60" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" + integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== + +"@types/node@^12.12.6": + version "12.20.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + +"@types/node@^18.7.18": + version "18.17.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.17.18.tgz#acae19ad9011a2ab3d792232501c95085ba1838f" + integrity sha512-/4QOuy3ZpV7Ya1GTRz5CYSz3DgkKpyUptXuQ5PPce7uuyJAOR7r9FhkmxJfvcNUXyklbC63a+YvB3jxy7s9ngw== + +"@types/node@^8.0.0": + version "8.10.66" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.66.tgz#dd035d409df322acc83dff62a602f12a5783bbb3" + integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== + +"@types/pbkdf2@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" + integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== + dependencies: + "@types/node" "*" + +"@types/prettier@^2.1.1": + version "2.7.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" + integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== + +"@types/qs@^6.2.31": + version "6.9.8" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.8.tgz#f2a7de3c107b89b441e071d5472e6b726b4adf45" + integrity sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg== + +"@types/readable-stream@^2.3.13": + version "2.3.15" + resolved "https://registry.yarnpkg.com/@types/readable-stream/-/readable-stream-2.3.15.tgz#3d79c9ceb1b6a57d5f6e6976f489b9b5384321ae" + integrity sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ== + dependencies: + "@types/node" "*" + safe-buffer "~5.1.1" + +"@types/responselike@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" + integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== + dependencies: + "@types/node" "*" + +"@types/secp256k1@^4.0.1": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" + integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== + dependencies: + "@types/node" "*" + +"@uniswap/lib@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@uniswap/lib/-/lib-1.1.1.tgz#0afd29601846c16e5d082866cbb24a9e0758e6bc" + integrity sha512-2yK7sLpKIT91TiS5sewHtOa7YuM8IuBXVl4GZv2jZFys4D2sY7K5vZh6MqD25TPA95Od+0YzCVq6cTF2IKrOmg== + +"@uniswap/v2-core@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@uniswap/v2-core/-/v2-core-1.0.0.tgz#e0fab91a7d53e8cafb5326ae4ca18351116b0844" + integrity sha512-BJiXrBGnN8mti7saW49MXwxDBRFiWemGetE58q8zgfnPPzQKq55ADltEILqOt6VFZ22kVeVKbF8gVd8aY3l7pA== + +"@uniswap/v2-core@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@uniswap/v2-core/-/v2-core-1.0.1.tgz#af8f508bf183204779938969e2e54043e147d425" + integrity sha512-MtybtkUPSyysqLY2U210NBDeCHX+ltHt3oADGdjqoThZaFRDKwM6k1Nb3F0A3hk5hwuQvytFWhrWHOEq6nVJ8Q== + +"@uniswap/v2-periphery@^1.1.0-beta.0": + version "1.1.0-beta.0" + resolved "https://registry.yarnpkg.com/@uniswap/v2-periphery/-/v2-periphery-1.1.0-beta.0.tgz#20a4ccfca22f1a45402303aedb5717b6918ebe6d" + integrity sha512-6dkwAMKza8nzqYiXEr2D86dgW3TTavUvCR0w2Tu33bAbM8Ah43LKAzH7oKKPRT5VJQaMi1jtkGs1E8JPor1n5g== + dependencies: + "@uniswap/lib" "1.1.1" + "@uniswap/v2-core" "1.0.0" + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +abbrev@1.0.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" + integrity sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q== + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +abortcontroller-polyfill@^1.7.3, abortcontroller-polyfill@^1.7.5: + version "1.7.5" + resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed" + integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ== + +abstract-level@^1.0.0, abstract-level@^1.0.2, abstract-level@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/abstract-level/-/abstract-level-1.0.3.tgz#78a67d3d84da55ee15201486ab44c09560070741" + integrity sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA== + dependencies: + buffer "^6.0.3" + catering "^2.1.0" + is-buffer "^2.0.5" + level-supports "^4.0.0" + level-transcoder "^1.0.1" + module-error "^1.0.1" + queue-microtask "^1.2.3" + +accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^8.4.1: + version "8.10.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + +address@^1.0.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" + integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== + +adm-zip@^0.4.16: + version "0.4.16" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.16.tgz#cf4c508fdffab02c269cbc7f471a875f05570365" + integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg== + +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv@^6.10.0, ajv@^6.12.3: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.1: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +amazon-cognito-identity-js@^6.0.1: + version "6.3.6" + resolved "https://registry.yarnpkg.com/amazon-cognito-identity-js/-/amazon-cognito-identity-js-6.3.6.tgz#a5baa3615dc5771d9f9edeedf13d6e6df5e202d6" + integrity sha512-kBq+GE6OkLrxtFj3ZduIOlKBFYeOqZK3EhxbDBkv476UTvy+uwfR0tlriTq2QzNdnvlQAjBIXnXuOM7DwR1UEQ== + dependencies: + "@aws-crypto/sha256-js" "1.2.2" + buffer "4.9.2" + fast-base64-decode "^1.0.0" + isomorphic-unfetch "^3.0.0" + js-cookie "^2.2.1" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + integrity sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg== + +ansi-colors@3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" + integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== + +ansi-colors@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-colors@^3.2.3: + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +ansi-escapes@^4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== + +ansi-regex@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== + +ansi-regex@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +antlr4ts@^0.5.0-alpha.4: + version "0.5.0-alpha.4" + resolved "https://registry.yarnpkg.com/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz#71702865a87478ed0b40c0709f422cf14d51652a" + integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ== + +anymatch@~3.1.1, anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-back@^3.0.1, array-back@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== + +array-back@^4.0.1, array-back@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" + integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== + +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-uniq@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== + +array.prototype.findlast@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.findlast/-/array.prototype.findlast-1.2.3.tgz#4e4b375de5adf4897fed155e2d2771564865cc3b" + integrity sha512-kcBubumjciBg4JKp5KTKtI7ec7tRefPk88yjkWJwaVKYd9QfTaxcsOxoMNKd7iBr447zCfDV0z1kOF47umv42g== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.2.1" + +array.prototype.reduce@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz#63149931808c5fc1e1354814923d92d45f7d96d5" + integrity sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" + +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" + +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +asn1@~0.2.3: + version "0.2.6" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async-retry@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" + integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== + dependencies: + retry "0.13.1" + +async@1.x: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== + +aws4@^1.8.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" + integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== + +axios@^0.21.2: + version "0.21.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" + integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== + dependencies: + follow-redirects "^1.14.0" + +axios@^1.3.5, axios@^1.4.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.5.0.tgz#f02e4af823e2e46a9768cfc74691fdd0517ea267" + integrity sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ== + dependencies: + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.2, base-x@^3.0.8: + version "3.0.9" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== + dependencies: + safe-buffer "^5.0.1" + +base64-js@^1.0.2, base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== + dependencies: + tweetnacl "^0.14.3" + +bech32@1.1.4, bech32@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + +big-integer@1.6.36: + version "1.6.36" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.36.tgz#78631076265d4ae3555c04f85e7d9d2f3a071a36" + integrity sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg== + +big.js@^6.0.3: + version "6.2.1" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-6.2.1.tgz#7205ce763efb17c2e41f26f121c420c6a7c2744f" + integrity sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ== + +bigint-crypto-utils@^3.0.23: + version "3.3.0" + resolved "https://registry.yarnpkg.com/bigint-crypto-utils/-/bigint-crypto-utils-3.3.0.tgz#72ad00ae91062cf07f2b1def9594006c279c1d77" + integrity sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg== + +bignumber.js@^7.2.1: + version "7.2.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-7.2.1.tgz#80c048759d826800807c4bfd521e50edbba57a5f" + integrity sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ== + +bignumber.js@^9.0.0, bignumber.js@^9.0.1: + version "9.1.2" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" + integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +blakejs@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== + +bluebird@^3.5.0, bluebird@^3.5.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@4.11.6: + version "4.11.6" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" + integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== + +bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.1.2, bn.js@^5.1.3, bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + +body-parser@^1.16.0: + version "1.20.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" + integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== + dependencies: + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +browser-level@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browser-level/-/browser-level-1.0.1.tgz#36e8c3183d0fe1c405239792faaab5f315871011" + integrity sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ== + dependencies: + abstract-level "^1.0.2" + catering "^2.1.1" + module-error "^1.0.2" + run-parallel-limit "^1.1.0" + +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + +browserify-aes@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +bs58@^4.0.0, bs58@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-reverse@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buffer-reverse/-/buffer-reverse-1.0.1.tgz#49283c8efa6f901bc01fa3304d06027971ae2f60" + integrity sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg== + +buffer-to-arraybuffer@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a" + integrity sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + +buffer@4.9.2: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +buffer@6.0.3, buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +buffer@^5.0.5, buffer@^5.5.0, buffer@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +bufferutil@^4.0.1: + version "4.0.7" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.7.tgz#60c0d19ba2c992dd8273d3f73772ffc894c153ad" + integrity sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw== + dependencies: + node-gyp-build "^4.3.0" + +bufio@^1.0.7: + version "1.2.1" + resolved "https://registry.yarnpkg.com/bufio/-/bufio-1.2.1.tgz#8d4ab3ddfcd5faa90f996f922f9397d41cbaf2de" + integrity sha512-9oR3zNdupcg/Ge2sSHQF3GX+kmvL/fTPvD0nd5AGLq8SjUYnTz+SlFjK/GXidndbZtIj+pVKXiWeR9w6e9wKCA== + +busboy@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +cacheable-lookup@^5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== + +cacheable-lookup@^6.0.4: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz#0330a543471c61faa4e9035db583aad753b36385" + integrity sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww== + +cacheable-request@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817" + integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^4.0.0" + lowercase-keys "^2.0.0" + normalize-url "^6.0.1" + responselike "^2.0.0" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +camel-case@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + integrity sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w== + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + integrity sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg== + +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw== + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +case@^1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/case/-/case-1.6.3.tgz#0a4386e3e9825351ca2e6216c60467ff5f1ea1c9" + integrity sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ== + +caseless@^0.12.0, caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== + +catering@^2.1.0, catering@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" + integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== + +cbor@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/cbor/-/cbor-5.2.0.tgz#4cca67783ccd6de7b50ab4ed62636712f287a67c" + integrity sha512-5IMhi9e1QU76ppa5/ajP1BmMWZ2FHkhAhjeVKQ/EFCgYSEaeVaoGtL7cxJskf9oCCk+XjzaIdc3IuU/dbA/o2A== + dependencies: + bignumber.js "^9.0.1" + nofilter "^1.0.4" + +cbor@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/cbor/-/cbor-8.1.0.tgz#cfc56437e770b73417a2ecbfc9caf6b771af60d5" + integrity sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg== + dependencies: + nofilter "^3.1.0" + +cbor@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/cbor/-/cbor-9.0.1.tgz#b16e393d4948d44758cd54ac6151379d443b37ae" + integrity sha512-/TQOWyamDxvVIv+DY9cOLNuABkoyz8K/F3QE56539pGVYohx0+MEA1f4lChFTX79dBTBS7R1PF6ovH7G+VtBfQ== + dependencies: + nofilter "^3.1.0" + +chai-as-promised@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.1.tgz#08645d825deb8696ee61725dbf590c012eb00ca0" + integrity sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA== + dependencies: + check-error "^1.0.2" + +chai-bn@^0.2.1: + version "0.2.2" + resolved "https://registry.yarnpkg.com/chai-bn/-/chai-bn-0.2.2.tgz#4dcf30dbc79db2378a00781693bc749c972bf34f" + integrity sha512-MzjelH0p8vWn65QKmEq/DLBG1Hle4WeyqT79ANhXZhn/UxRWO0OogkAxi5oGGtfzwU9bZR8mvbvYdoqNVWQwFg== + +chai@^4.2.0, chai@^4.3.4, chai@^4.3.6: + version "4.3.8" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.8.tgz#40c59718ad6928da6629c70496fe990b2bb5b17c" + integrity sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.2" + deep-eql "^4.1.2" + get-func-name "^2.0.0" + loupe "^2.3.1" + pathval "^1.1.1" + type-detect "^4.0.5" + +chalk@^2.3.2, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +change-case@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/change-case/-/change-case-3.0.2.tgz#fd48746cce02f03f0a672577d1d3a8dc2eceb037" + integrity sha512-Mww+SLF6MZ0U6kdg11algyKd5BARbyM4TbFBepwowYSR5ClfQGCGtxNXgykpN0uF/bstWeaGDT4JWaDh8zWAHA== + dependencies: + camel-case "^3.0.0" + constant-case "^2.0.0" + dot-case "^2.1.0" + header-case "^1.0.0" + is-lower-case "^1.1.0" + is-upper-case "^1.1.0" + lower-case "^1.1.1" + lower-case-first "^1.0.0" + no-case "^2.3.2" + param-case "^2.1.0" + pascal-case "^2.0.0" + path-case "^2.1.0" + sentence-case "^2.1.0" + snake-case "^2.1.0" + swap-case "^1.1.0" + title-case "^2.1.0" + upper-case "^1.1.1" + upper-case-first "^1.1.0" + +"charenc@>= 0.0.1": + version "0.0.2" + resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" + integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== + +check-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA== + +cheerio-select@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" + integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== + dependencies: + boolbase "^1.0.0" + css-select "^5.1.0" + css-what "^6.1.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.0.1" + +cheerio@^1.0.0-rc.2: + version "1.0.0-rc.12" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683" + integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== + dependencies: + cheerio-select "^2.1.0" + dom-serializer "^2.0.0" + domhandler "^5.0.3" + domutils "^3.0.1" + htmlparser2 "^8.0.1" + parse5 "^7.0.0" + parse5-htmlparser2-tree-adapter "^7.0.0" + +chokidar@3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6" + integrity sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.2.0" + optionalDependencies: + fsevents "~2.1.1" + +chokidar@3.5.3, chokidar@^3.4.0: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +cids@^0.7.1: + version "0.7.5" + resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" + integrity sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA== + dependencies: + buffer "^5.5.0" + class-is "^1.1.0" + multibase "~0.6.0" + multicodec "^1.0.0" + multihashes "~0.4.15" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +class-is@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825" + integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== + +classic-level@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/classic-level/-/classic-level-1.3.0.tgz#5e36680e01dc6b271775c093f2150844c5edd5c8" + integrity sha512-iwFAJQYtqRTRM0F6L8h4JCt00ZSGdOyqh7yVrhhjrOpFhmBjNlRUey64MCiyo6UmQHMJ+No3c81nujPv+n9yrg== + dependencies: + abstract-level "^1.0.2" + catering "^2.1.0" + module-error "^1.0.1" + napi-macros "^2.2.2" + node-gyp-build "^4.3.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-progress@^3.11.2: + version "3.12.0" + resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.12.0.tgz#807ee14b66bcc086258e444ad0f19e7d42577942" + integrity sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A== + dependencies: + string-width "^4.2.3" + +cli-table3@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" + integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== + dependencies: + object-assign "^4.1.0" + string-width "^2.1.1" + optionalDependencies: + colors "^1.1.2" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w== + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +clone-response@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== + dependencies: + mimic-response "^1.0.0" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colors@1.4.0, colors@^1.1.2, colors@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +command-exists@^1.2.8: + version "1.2.9" + resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + +command-line-args@^5.1.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" + integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== + dependencies: + array-back "^3.1.0" + find-replace "^3.0.0" + lodash.camelcase "^4.3.0" + typical "^4.0.0" + +command-line-usage@^6.1.0: + version "6.1.3" + resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" + integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== + dependencies: + array-back "^4.0.2" + chalk "^2.4.2" + table-layout "^1.0.2" + typical "^5.2.0" + +commander@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" + integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== + +compare-versions@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-6.1.0.tgz#3f2131e3ae93577df111dba133e6db876ffe127a" + integrity sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concat-stream@^1.6.0, concat-stream@^1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +constant-case@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-2.0.0.tgz#4175764d389d3fa9c8ecd29186ed6005243b6a46" + integrity sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ== + dependencies: + snake-case "^2.1.0" + upper-case "^1.1.1" + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-hash@^2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/content-hash/-/content-hash-2.5.2.tgz#bbc2655e7c21f14fd3bfc7b7d4bfe6e454c9e211" + integrity sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw== + dependencies: + cids "^0.7.1" + multicodec "^0.5.5" + multihashes "^0.4.15" + +content-type@~1.0.4, content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +cookie@^0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cors@^2.8.1: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + +crc-32@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" + integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-fetch@^3.1.4: + version "3.1.8" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" + integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== + dependencies: + node-fetch "^2.6.12" + +cross-fetch@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-4.0.0.tgz#f037aef1580bb3a1a35164ea2a848ba81b445983" + integrity sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g== + dependencies: + node-fetch "^2.6.12" + +"crypt@>= 0.0.1": + version "0.0.2" + resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" + integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== + +crypto-addr-codec@^0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/crypto-addr-codec/-/crypto-addr-codec-0.1.8.tgz#45c4b24e2ebce8e24a54536ee0ca25b65787b016" + integrity sha512-GqAK90iLLgP3FvhNmHbpT3wR6dEdaM8hZyZtLX29SPardh3OA13RFLHDR6sntGCgRWOfiHqW6sIyohpNqOtV/g== + dependencies: + base-x "^3.0.8" + big-integer "1.6.36" + blakejs "^1.1.0" + bs58 "^4.0.1" + ripemd160-min "0.0.6" + safe-buffer "^5.2.0" + sha3 "^2.1.1" + +crypto-js@^3.1.9-1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.3.0.tgz#846dd1cce2f68aacfa156c8578f926a609b7976b" + integrity sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q== + +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== + dependencies: + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" + +css-what@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +csv-parser@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/csv-parser/-/csv-parser-3.0.0.tgz#b88a6256d79e090a97a1b56451f9327b01d710e7" + integrity sha512-s6OYSXAK3IdKqYO33y09jhypG/bSDHPuyCme/IdEHfWpLf/jKcpitVFyOC6UemgGk8v7Q5u2XE0vvwmanxhGlQ== + dependencies: + minimist "^1.2.0" + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== + dependencies: + assert-plus "^1.0.0" + +data-uri-to-buffer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" + integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== + +death@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/death/-/death-1.1.0.tgz#01aa9c401edd92750514470b8266390c66c67318" + integrity sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w== + +debug@2.6.9, debug@^2.2.0: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@3.2.6: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +debug@4, debug@4.3.4, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decamelize@^1.1.1, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + +decode-uri-component@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== + +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== + dependencies: + mimic-response "^1.0.0" + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +deep-eql@^4.0.1, deep-eql@^4.1.2: + version "4.1.3" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" + integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== + dependencies: + type-detect "^4.0.0" + +deep-extend@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@~0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +defer-to-connect@^2.0.0, defer-to-connect@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + +define-data-property@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.0.tgz#0db13540704e1d8d479a0656cf781267531b9451" + integrity sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-indent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== + +detect-port@^1.3.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.5.1.tgz#451ca9b6eaf20451acb0799b8ab40dff7718727b" + integrity sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ== + dependencies: + address "^1.0.1" + debug "4" + +diff@3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== + +diff@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +difflib@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/difflib/-/difflib-0.2.4.tgz#b5e30361a6db023176d562892db85940a718f47e" + integrity sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w== + dependencies: + heap ">= 0.2.0" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" + +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== + +domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" + +domutils@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" + integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + +dot-case@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-2.1.1.tgz#34dcf37f50a8e93c2b3bca8bb7fb9155c7da3bee" + integrity sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug== + dependencies: + no-case "^2.2.0" + +dotenv@^16.0.2: + version "16.3.1" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" + integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enquirer@^2.3.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" + integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== + dependencies: + ansi-colors "^4.1.1" + strip-ansi "^6.0.1" + +entities@^4.2.0, entities@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +error-ex@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.22.1: + version "1.22.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.2.tgz#90f7282d91d0ad577f505e423e52d4c1d93c1b8a" + integrity sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA== + dependencies: + array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.2" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.1" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.12" + is-weakref "^1.0.2" + object-inspect "^1.12.3" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.11" + +es-array-method-boxes-properly@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" + integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== + +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.62" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" + integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + next-tick "^1.1.0" + +es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-promise@^4.2.8: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escodegen@1.8.x: + version "1.8.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" + integrity sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A== + dependencies: + esprima "^2.7.1" + estraverse "^1.9.1" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.2.0" + +esprima@2.7.x, esprima@^2.7.1: + version "2.7.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + integrity sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A== + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +estraverse@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" + integrity sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +eth-ens-namehash@2.0.8, eth-ens-namehash@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" + integrity sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw== + dependencies: + idna-uts46-hx "^2.3.1" + js-sha3 "^0.5.7" + +eth-gas-reporter@^0.2.25: + version "0.2.25" + resolved "https://registry.yarnpkg.com/eth-gas-reporter/-/eth-gas-reporter-0.2.25.tgz#546dfa946c1acee93cb1a94c2a1162292d6ff566" + integrity sha512-1fRgyE4xUB8SoqLgN3eDfpDfwEfRxh2Sz1b7wzFbyQA+9TekMmvSjjoRu9SKcSVyK+vLkLIsVbJDsTWjw195OQ== + dependencies: + "@ethersproject/abi" "^5.0.0-beta.146" + "@solidity-parser/parser" "^0.14.0" + cli-table3 "^0.5.0" + colors "1.4.0" + ethereum-cryptography "^1.0.3" + ethers "^4.0.40" + fs-readdir-recursive "^1.1.0" + lodash "^4.17.14" + markdown-table "^1.1.3" + mocha "^7.1.1" + req-cwd "^2.0.0" + request "^2.88.0" + request-promise-native "^1.0.5" + sha1 "^1.1.1" + sync-request "^6.0.0" + +eth-lib@0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" + integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + xhr-request-promise "^0.1.2" + +eth-lib@^0.1.26: + version "0.1.29" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.29.tgz#0c11f5060d42da9f931eab6199084734f4dbd1d9" + integrity sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + nano-json-stream-parser "^0.1.2" + servify "^0.1.12" + ws "^3.0.0" + xhr-request-promise "^0.1.2" + +ethereum-bloom-filters@^1.0.6: + version "1.0.10" + resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz#3ca07f4aed698e75bd134584850260246a5fed8a" + integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== + dependencies: + js-sha3 "^0.8.0" + +ethereum-cryptography@0.1.3, ethereum-cryptography@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" + integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== + dependencies: + "@types/pbkdf2" "^3.0.0" + "@types/secp256k1" "^4.0.1" + blakejs "^1.1.0" + browserify-aes "^1.2.0" + bs58check "^2.1.2" + create-hash "^1.2.0" + create-hmac "^1.1.7" + hash.js "^1.1.7" + keccak "^3.0.0" + pbkdf2 "^3.0.17" + randombytes "^2.1.0" + safe-buffer "^5.1.2" + scrypt-js "^3.0.0" + secp256k1 "^4.0.1" + setimmediate "^1.0.5" + +ethereum-cryptography@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz#5ccfa183e85fdaf9f9b299a79430c044268c9b3a" + integrity sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw== + dependencies: + "@noble/hashes" "1.2.0" + "@noble/secp256k1" "1.7.1" + "@scure/bip32" "1.1.5" + "@scure/bip39" "1.1.1" + +ethereum-cryptography@^2.0.0, ethereum-cryptography@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz#18fa7108622e56481157a5cb7c01c0c6a672eb67" + integrity sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug== + dependencies: + "@noble/curves" "1.1.0" + "@noble/hashes" "1.3.1" + "@scure/bip32" "1.3.1" + "@scure/bip39" "1.2.1" + +ethereumjs-abi@^0.6.8: + version "0.6.8" + resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz#71bc152db099f70e62f108b7cdfca1b362c6fcae" + integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA== + dependencies: + bn.js "^4.11.8" + ethereumjs-util "^6.0.0" + +ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" + integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== + dependencies: + "@types/bn.js" "^4.11.3" + bn.js "^4.11.0" + create-hash "^1.1.2" + elliptic "^6.5.2" + ethereum-cryptography "^0.1.3" + ethjs-util "0.1.6" + rlp "^2.2.3" + +ethereumjs-util@^7.0.3, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.2, ethereumjs-util@^7.1.4, ethereumjs-util@^7.1.5: + version "7.1.5" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" + integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== + dependencies: + "@types/bn.js" "^5.1.0" + bn.js "^5.1.2" + create-hash "^1.1.2" + ethereum-cryptography "^0.1.3" + rlp "^2.2.4" + +ethers@^4.0.32, ethers@^4.0.40: + version "4.0.49" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.49.tgz#0eb0e9161a0c8b4761be547396bbe2fb121a8894" + integrity sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg== + dependencies: + aes-js "3.0.0" + bn.js "^4.11.9" + elliptic "6.5.4" + hash.js "1.1.3" + js-sha3 "0.5.7" + scrypt-js "2.0.4" + setimmediate "1.0.4" + uuid "2.0.1" + xmlhttprequest "1.8.0" + +ethers@^5.0.13, ethers@^5.7.1: + version "5.7.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== + dependencies: + "@ethersproject/abi" "5.7.0" + "@ethersproject/abstract-provider" "5.7.0" + "@ethersproject/abstract-signer" "5.7.0" + "@ethersproject/address" "5.7.0" + "@ethersproject/base64" "5.7.0" + "@ethersproject/basex" "5.7.0" + "@ethersproject/bignumber" "5.7.0" + "@ethersproject/bytes" "5.7.0" + "@ethersproject/constants" "5.7.0" + "@ethersproject/contracts" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/hdnode" "5.7.0" + "@ethersproject/json-wallets" "5.7.0" + "@ethersproject/keccak256" "5.7.0" + "@ethersproject/logger" "5.7.0" + "@ethersproject/networks" "5.7.1" + "@ethersproject/pbkdf2" "5.7.0" + "@ethersproject/properties" "5.7.0" + "@ethersproject/providers" "5.7.2" + "@ethersproject/random" "5.7.0" + "@ethersproject/rlp" "5.7.0" + "@ethersproject/sha2" "5.7.0" + "@ethersproject/signing-key" "5.7.0" + "@ethersproject/solidity" "5.7.0" + "@ethersproject/strings" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@ethersproject/units" "5.7.0" + "@ethersproject/wallet" "5.7.0" + "@ethersproject/web" "5.7.1" + "@ethersproject/wordlists" "5.7.0" + +ethjs-abi@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/ethjs-abi/-/ethjs-abi-0.2.1.tgz#e0a7a93a7e81163a94477bad56ede524ab6de533" + integrity sha512-g2AULSDYI6nEJyJaEVEXtTimRY2aPC2fi7ddSy0W+LXvEVL8Fe1y76o43ecbgdUKwZD+xsmEgX1yJr1Ia3r1IA== + dependencies: + bn.js "4.11.6" + js-sha3 "0.5.5" + number-to-bn "1.7.0" + +ethjs-unit@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" + integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw== + dependencies: + bn.js "4.11.6" + number-to-bn "1.7.0" + +ethjs-util@0.1.6, ethjs-util@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" + integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== + dependencies: + is-hex-prefixed "1.0.0" + strip-hex-prefix "1.0.0" + +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +eventemitter3@4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" + integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== + +evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +express@^4.14.0: + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +ext@^1.1.2: + version "1.7.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== + dependencies: + type "^2.7.2" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== + +extsprintf@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== + +fast-base64-decode@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz#b434a0dd7d92b12b43f26819300d2dafb83ee418" + integrity sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q== + +fast-check@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-check/-/fast-check-3.1.1.tgz#72c5ae7022a4e86504762e773adfb8a5b0b01252" + integrity sha512-3vtXinVyuUKCKFKYcwXhGE6NtGWkqF8Yh3rvMZNzmwz8EPrgoc/v4pDdLHyLnCyCI5MZpZZkDEwFyXyEONOxpA== + dependencies: + pure-rand "^5.0.1" + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.0.3: + version "3.3.1" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + +fetch-blob@^3.1.2, fetch-blob@^3.1.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" + integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== + dependencies: + node-domexception "^1.0.0" + web-streams-polyfill "^3.0.3" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-replace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" + integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== + dependencies: + array-back "^3.0.1" + +find-up@3.0.0, find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA== + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== + dependencies: + locate-path "^2.0.0" + +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +flat@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.1.tgz#a392059cc382881ff98642f5da4dde0a959f309b" + integrity sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA== + dependencies: + is-buffer "~2.0.3" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +follow-redirects@^1.12.1, follow-redirects@^1.14.0, follow-redirects@^1.15.0: + version "1.15.3" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" + integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== + +form-data-encoder@1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-1.7.1.tgz#ac80660e4f87ee0d3d3c3638b7da8278ddb8ec96" + integrity sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg== + +form-data@^2.2.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" + integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +formdata-polyfill@^4.0.10: + version "4.0.10" + resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" + integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== + dependencies: + fetch-blob "^3.1.2" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fp-ts@1.19.3: + version "1.19.3" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.3.tgz#261a60d1088fbff01f91256f91d21d0caaaaa96f" + integrity sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg== + +fp-ts@^1.0.0: + version "1.19.5" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.5.tgz#3da865e585dfa1fdfd51785417357ac50afc520a" + integrity sha512-wDNqTimnzs8QqpldiId9OavWK2NptormjXnRJTQecNjzwfyp6P/8s/zG8e4h3ja3oqkKaY72UlTjQYt/1yXf9A== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-extra@^0.30.0: + version "0.30.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" + integrity sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + path-is-absolute "^1.0.0" + rimraf "^2.2.8" + +fs-extra@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^7.0.0, fs-extra@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-minipass@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + +fs-readdir-recursive@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" + integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== + +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-caller-file@^2.0.1, get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" + integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-proto "^1.0.1" + has-symbols "^1.0.3" + +get-port@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" + integrity sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg== + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== + dependencies: + assert-plus "^1.0.0" + +ghost-testrpc@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz#c4de9557b1d1ae7b2d20bbe474a91378ca90ce92" + integrity sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ== + dependencies: + chalk "^2.4.2" + node-emoji "^1.10.0" + +glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@7.1.7: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^5.0.15: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + integrity sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA== + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.0, glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +global@~4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== + dependencies: + min-document "^2.19.0" + process "^0.11.10" + +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + +globby@^10.0.1: + version "10.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" + integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.0.3" + glob "^7.1.3" + ignore "^5.1.1" + merge2 "^1.2.3" + slash "^3.0.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +got@12.1.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-12.1.0.tgz#099f3815305c682be4fd6b0ee0726d8e4c6b0af4" + integrity sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig== + dependencies: + "@sindresorhus/is" "^4.6.0" + "@szmarczak/http-timer" "^5.0.1" + "@types/cacheable-request" "^6.0.2" + "@types/responselike" "^1.0.0" + cacheable-lookup "^6.0.4" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + form-data-encoder "1.7.1" + get-stream "^6.0.1" + http2-wrapper "^2.1.10" + lowercase-keys "^3.0.0" + p-cancelable "^3.0.0" + responselike "^2.0.0" + +got@^11.8.5: + version "11.8.6" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" + integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== + dependencies: + "@sindresorhus/is" "^4.0.0" + "@szmarczak/http-timer" "^4.0.5" + "@types/cacheable-request" "^6.0.1" + "@types/responselike" "^1.0.0" + cacheable-lookup "^5.0.3" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + http2-wrapper "^1.0.0-beta.5.2" + lowercase-keys "^2.0.0" + p-cancelable "^2.0.0" + responselike "^2.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + +handlebars@^4.0.1: + version "4.7.8" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" + integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.2" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== + +har-validator@^5.1.5, har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +hardhat-gas-reporter@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.9.tgz#9a2afb354bc3b6346aab55b1c02ca556d0e16450" + integrity sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg== + dependencies: + array-uniq "1.0.3" + eth-gas-reporter "^0.2.25" + sha1 "^1.1.1" + +hardhat@^2.17.3: + version "2.17.3" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.17.3.tgz#4cb15f2afdea5f108970ed72e5b81e6e53052cfb" + integrity sha512-SFZoYVXW1bWJZrIIKXOA+IgcctfuKXDwENywiYNT2dM3YQc4fXNaTbuk/vpPzHIF50upByx4zW5EqczKYQubsA== + dependencies: + "@ethersproject/abi" "^5.1.2" + "@metamask/eth-sig-util" "^4.0.0" + "@nomicfoundation/ethereumjs-block" "5.0.2" + "@nomicfoundation/ethereumjs-blockchain" "7.0.2" + "@nomicfoundation/ethereumjs-common" "4.0.2" + "@nomicfoundation/ethereumjs-evm" "2.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-statemanager" "2.0.2" + "@nomicfoundation/ethereumjs-trie" "6.0.2" + "@nomicfoundation/ethereumjs-tx" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" + "@nomicfoundation/ethereumjs-vm" "7.0.2" + "@nomicfoundation/solidity-analyzer" "^0.1.0" + "@sentry/node" "^5.18.1" + "@types/bn.js" "^5.1.0" + "@types/lru-cache" "^5.1.0" + adm-zip "^0.4.16" + aggregate-error "^3.0.0" + ansi-escapes "^4.3.0" + chalk "^2.4.2" + chokidar "^3.4.0" + ci-info "^2.0.0" + debug "^4.1.1" + enquirer "^2.3.0" + env-paths "^2.2.0" + ethereum-cryptography "^1.0.3" + ethereumjs-abi "^0.6.8" + find-up "^2.1.0" + fp-ts "1.19.3" + fs-extra "^7.0.1" + glob "7.2.0" + immutable "^4.0.0-rc.12" + io-ts "1.10.4" + keccak "^3.0.2" + lodash "^4.17.11" + mnemonist "^0.38.0" + mocha "^10.0.0" + p-map "^4.0.0" + raw-body "^2.4.1" + resolve "1.17.0" + semver "^6.3.0" + solc "0.7.3" + source-map-support "^0.5.13" + stacktrace-parser "^0.1.10" + tsort "0.0.1" + undici "^5.14.0" + uuid "^8.3.2" + ws "^7.4.6" + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + integrity sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.0, has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.0" + +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +he@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +header-case@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/header-case/-/header-case-1.0.1.tgz#9535973197c144b09613cd65d317ef19963bd02d" + integrity sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ== + dependencies: + no-case "^2.2.0" + upper-case "^1.1.3" + +"heap@>= 0.2.0": + version "0.2.7" + resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.7.tgz#1e6adf711d3f27ce35a81fe3b7bd576c2260a8fc" + integrity sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg== + +highlight.js@^10.4.1: + version "10.7.3" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" + integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== + +highlightjs-solidity@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/highlightjs-solidity/-/highlightjs-solidity-2.0.6.tgz#e7a702a2b05e0a97f185e6ba39fd4846ad23a990" + integrity sha512-DySXWfQghjm2l6a/flF+cteroJqD4gI8GSdL4PtvxZSsAHie8m3yVe2JFoRg03ROKT6hp2Lc/BxXkqerNmtQYg== + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +htmlparser2@^8.0.1: + version "8.0.2" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21" + integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.0.1" + entities "^4.4.0" + +http-basic@^8.1.1: + version "8.1.3" + resolved "https://registry.yarnpkg.com/http-basic/-/http-basic-8.1.3.tgz#a7cabee7526869b9b710136970805b1004261bbf" + integrity sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw== + dependencies: + caseless "^0.12.0" + concat-stream "^1.6.2" + http-response-object "^3.0.1" + parse-cache-control "^1.0.1" + +http-cache-semantics@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-https@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" + integrity sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg== + +http-response-object@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/http-response-object/-/http-response-object-3.0.2.tgz#7f435bb210454e4360d074ef1f989d5ea8aa9810" + integrity sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA== + dependencies: + "@types/node" "^10.0.3" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +http2-wrapper@^1.0.0-beta.5.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.0.0" + +http2-wrapper@^2.1.10: + version "2.2.0" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.0.tgz#b80ad199d216b7d3680195077bd7b9060fa9d7f3" + integrity sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.2.0" + +http@^0.0.1-security: + version "0.0.1-security" + resolved "https://registry.yarnpkg.com/http/-/http-0.0.1-security.tgz#3aac09129d12dc2747bbce4157afde20ad1f7995" + integrity sha512-RnDvP10Ty9FxqOtPZuxtebw1j4L/WiqNMDtuc1YMH1XQm5TgDRaR1G9u8upL6KD1bXHSp9eSXo/ED+8Q7FAr+g== + +https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +idna-uts46-hx@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz#a1dc5c4df37eee522bf66d969cc980e00e8711f9" + integrity sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA== + dependencies: + punycode "2.1.0" + +ieee754@^1.1.13, ieee754@^1.1.4, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.1.1: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + +immutable@^4.0.0-rc.12: + version "4.3.4" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.4.tgz#2e07b33837b4bb7662f288c244d1ced1ef65a78f" + integrity sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@^1.3.5: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +internal-slot@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + dependencies: + get-intrinsic "^1.2.0" + has "^1.0.3" + side-channel "^1.0.4" + +interpret@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ== + +io-ts@1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-1.10.4.tgz#cd5401b138de88e4f920adbcb7026e2d1967e6e2" + integrity sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g== + dependencies: + fp-ts "^1.0.0" + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-buffer@^2.0.5, is-buffer@~2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" + integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== + dependencies: + has "^1.0.3" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-function@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" + integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== + +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-hex-prefixed@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" + integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== + +is-lower-case@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-lower-case/-/is-lower-case-1.1.3.tgz#7e147be4768dc466db3bfb21cc60b31e6ad69393" + integrity sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA== + dependencies: + lower-case "^1.1.0" + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.3, is-typed-array@^1.1.9: + version "1.1.12" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== + dependencies: + which-typed-array "^1.1.11" + +is-typedarray@^1.0.0, is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-upper-case@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-upper-case/-/is-upper-case-1.1.2.tgz#8d0b1fa7e7933a1e58483600ec7d9661cbaf756f" + integrity sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw== + dependencies: + upper-case "^1.1.0" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isomorphic-unfetch@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz#87341d5f4f7b63843d468438128cb087b7c3e98f" + integrity sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q== + dependencies: + node-fetch "^2.6.1" + unfetch "^4.2.0" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + +js-cookie@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8" + integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ== + +js-sdsl@^4.1.4: + version "4.4.2" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.2.tgz#2e3c031b1f47d3aca8b775532e3ebb0818e7f847" + integrity sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w== + +js-sha3@0.5.5: + version "0.5.5" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.5.tgz#baf0c0e8c54ad5903447df96ade7a4a1bca79a4a" + integrity sha512-yLLwn44IVeunwjpDVTDZmQeVbB0h+dZpY2eO68B/Zik8hu6dH+rKeLxwua79GGIvW6xr8NBAcrtiUbYrTjEFTA== + +js-sha3@0.5.7, js-sha3@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" + integrity sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g== + +js-sha3@0.8.0, js-sha3@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +js-yaml@3.13.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@3.x: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + integrity sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonschema@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.4.1.tgz#cc4c3f0077fb4542982973d8a083b6b34f482dab" + integrity sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ== + +jsprim@^1.2.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.4.0" + verror "1.10.0" + +keccak256@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/keccak256/-/keccak256-1.0.6.tgz#dd32fb771558fed51ce4e45a035ae7515573da58" + integrity sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw== + dependencies: + bn.js "^5.2.0" + buffer "^6.0.3" + keccak "^3.0.2" + +keccak@^3.0.0, keccak@^3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.4.tgz#edc09b89e633c0549da444432ecf062ffadee86d" + integrity sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + +keyv@^4.0.0: + version "4.5.3" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.3.tgz#00873d2b046df737963157bd04f294ca818c9c25" + integrity sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug== + dependencies: + json-buffer "3.0.1" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + integrity sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw== + optionalDependencies: + graceful-fs "^4.1.9" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw== + dependencies: + invert-kv "^1.0.0" + +level-supports@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-4.0.1.tgz#431546f9d81f10ff0fea0e74533a0e875c08c66a" + integrity sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA== + +level-transcoder@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/level-transcoder/-/level-transcoder-1.0.1.tgz#f8cef5990c4f1283d4c86d949e73631b0bc8ba9c" + integrity sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w== + dependencies: + buffer "^6.0.3" + module-error "^1.0.1" + +level@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/level/-/level-8.0.0.tgz#41b4c515dabe28212a3e881b61c161ffead14394" + integrity sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ== + dependencies: + browser-level "^1.0.1" + classic-level "^1.2.0" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +line-reader@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/line-reader/-/line-reader-0.4.0.tgz#17e44818da0ac335675ba300954f94ef670e66fd" + integrity sha512-AYJ8g+eE7v+Ba4s/cuYqzuNulH/WbjdKQ55fvx8fNVn8WQzTpioY6vI1MoxTuMgcHYX3VlmZWbVvnkIqkyJbCA== + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A== + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.assign@^4.0.3, lodash.assign@^4.0.6: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" + integrity sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw== + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +lodash.flatten@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== + +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" + integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== + dependencies: + chalk "^2.4.2" + +log-symbols@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +loupe@^2.3.1: + version "2.3.6" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.6.tgz#76e4af498103c532d1ecc9be102036a21f787b53" + integrity sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA== + dependencies: + get-func-name "^2.0.0" + +lower-case-first@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-1.0.2.tgz#e5da7c26f29a7073be02d52bac9980e5922adfa1" + integrity sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA== + dependencies: + lower-case "^1.1.2" + +lower-case@^1.1.0, lower-case@^1.1.1, lower-case@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + integrity sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA== + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lowercase-keys@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" + integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lru_map@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" + integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +markdown-escape@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/markdown-escape/-/markdown-escape-2.0.0.tgz#44484d30d7845b91575c77fd8898f23a0a6f890c" + integrity sha512-Trz4v0+XWlwy68LJIyw3bLbsJiC8XAbRCKF9DbEtZjyndKOGVx6n+wNB0VfoRmY2LKboQLeniap3xrb6LGSJ8A== + +markdown-table@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60" + integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== + +mcl-wasm@^0.7.1: + version "0.7.9" + resolved "https://registry.yarnpkg.com/mcl-wasm/-/mcl-wasm-0.7.9.tgz#c1588ce90042a8700c3b60e40efb339fc07ab87f" + integrity sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ== + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memory-level@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/memory-level/-/memory-level-1.0.0.tgz#7323c3fd368f9af2f71c3cd76ba403a17ac41692" + integrity sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og== + dependencies: + abstract-level "^1.0.0" + functional-red-black-tree "^1.0.1" + module-error "^1.0.1" + +memorystream@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" + integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + +merge2@^1.2.3, merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +merkletreejs@^0.2.32: + version "0.2.32" + resolved "https://registry.yarnpkg.com/merkletreejs/-/merkletreejs-0.2.32.tgz#cf1c0760e2904e4a1cc269108d6009459fd06223" + integrity sha512-TostQBiwYRIwSE5++jGmacu3ODcKAgqb0Y/pnIohXS7sWxh1gCkSptbmF1a43faehRDpcHf7J/kv0Ml2D/zblQ== + dependencies: + bignumber.js "^9.0.1" + buffer-reverse "^1.0.1" + crypto-js "^3.1.9-1" + treeify "^1.1.0" + web3-utils "^1.3.4" + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micro-ftch@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/micro-ftch/-/micro-ftch-0.3.1.tgz#6cb83388de4c1f279a034fb0cf96dfc050853c5f" + integrity sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== + dependencies: + dom-walk "^0.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +"minimatch@2 || 3", minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimatch@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" + integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +minipass@^2.6.0, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== + dependencies: + minipass "^2.9.0" + +mkdirp-promise@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" + integrity sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w== + dependencies: + mkdirp "*" + +mkdirp@*: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" + integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== + +mkdirp@0.5.5: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +mkdirp@0.5.x, mkdirp@^0.5.5: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mnemonist@^0.38.0: + version "0.38.5" + resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.5.tgz#4adc7f4200491237fe0fa689ac0b86539685cade" + integrity sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg== + dependencies: + obliterator "^2.0.0" + +mocha@7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.1.2.tgz#8e40d198acf91a52ace122cd7599c9ab857b29e6" + integrity sha512-o96kdRKMKI3E8U0bjnfqW4QMk12MwZ4mhdBTf+B5a1q9+aq2HRnj+3ZdJu0B/ZhJeK78MgYuv6L8d/rA5AeBJA== + dependencies: + ansi-colors "3.2.3" + browser-stdout "1.3.1" + chokidar "3.3.0" + debug "3.2.6" + diff "3.5.0" + escape-string-regexp "1.0.5" + find-up "3.0.0" + glob "7.1.3" + growl "1.10.5" + he "1.2.0" + js-yaml "3.13.1" + log-symbols "3.0.0" + minimatch "3.0.4" + mkdirp "0.5.5" + ms "2.1.1" + node-environment-flags "1.0.6" + object.assign "4.1.0" + strip-json-comments "2.0.1" + supports-color "6.0.0" + which "1.3.1" + wide-align "1.1.3" + yargs "13.3.2" + yargs-parser "13.1.2" + yargs-unparser "1.6.0" + +mocha@^10.0.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" + integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== + dependencies: + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.3" + debug "4.3.4" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.2.0" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "5.0.1" + ms "2.1.3" + nanoid "3.3.3" + serialize-javascript "6.0.0" + strip-json-comments "3.1.1" + supports-color "8.1.1" + workerpool "6.2.1" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" + +mocha@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.2.0.tgz#01cc227b00d875ab1eed03a75106689cfed5a604" + integrity sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ== + dependencies: + ansi-colors "3.2.3" + browser-stdout "1.3.1" + chokidar "3.3.0" + debug "3.2.6" + diff "3.5.0" + escape-string-regexp "1.0.5" + find-up "3.0.0" + glob "7.1.3" + growl "1.10.5" + he "1.2.0" + js-yaml "3.13.1" + log-symbols "3.0.0" + minimatch "3.0.4" + mkdirp "0.5.5" + ms "2.1.1" + node-environment-flags "1.0.6" + object.assign "4.1.0" + strip-json-comments "2.0.1" + supports-color "6.0.0" + which "1.3.1" + wide-align "1.1.3" + yargs "13.3.2" + yargs-parser "13.1.2" + yargs-unparser "1.6.0" + +mock-fs@^4.1.0: + version "4.14.0" + resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18" + integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== + +module-error@^1.0.1, module-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/module-error/-/module-error-1.0.2.tgz#8d1a48897ca883f47a45816d4fb3e3c6ba404d86" + integrity sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA== + +mri@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multibase@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b" + integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multibase@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b" + integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multicodec@^0.5.5: + version "0.5.7" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-0.5.7.tgz#1fb3f9dd866a10a55d226e194abba2dcc1ee9ffd" + integrity sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA== + dependencies: + varint "^5.0.0" + +multicodec@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-1.0.4.tgz#46ac064657c40380c28367c90304d8ed175a714f" + integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== + dependencies: + buffer "^5.6.0" + varint "^5.0.0" + +multihashes@^0.4.15, multihashes@~0.4.15: + version "0.4.21" + resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5" + integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw== + dependencies: + buffer "^5.5.0" + multibase "^0.7.0" + varint "^5.0.0" + +n-readlines@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/n-readlines/-/n-readlines-1.0.1.tgz#bbb7364d38bc31a170a199f986fcacfa76b95f6e" + integrity sha512-z4SyAIVgMy7CkgsoNw7YVz40v0g4+WWvvqy8+ZdHrCtgevcEO758WQyrYcw3XPxcLxF+//RszTz/rO48nzD0wQ== + +nano-base32@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/nano-base32/-/nano-base32-1.0.1.tgz#ba548c879efcfb90da1c4d9e097db4a46c9255ef" + integrity sha512-sxEtoTqAPdjWVGv71Q17koMFGsOMSiHsIFEvzOM7cNp8BXB4AnEwmDabm5dorusJf/v1z7QxaZYxUorU9RKaAw== + +nano-json-stream-parser@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" + integrity sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew== + +nanoid@3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" + integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== + +napi-macros@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.2.2.tgz#817fef20c3e0e40a963fbf7b37d1600bd0201044" + integrity sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +no-case@^2.2.0, no-case@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== + dependencies: + lower-case "^1.1.1" + +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-domexception@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" + integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== + +node-emoji@^1.10.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c" + integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== + dependencies: + lodash "^4.17.21" + +node-environment-flags@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088" + integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw== + dependencies: + object.getownpropertydescriptors "^2.0.3" + semver "^5.7.0" + +node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.8: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-fetch@^3.2.10: + version "3.3.2" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b" + integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA== + dependencies: + data-uri-to-buffer "^4.0.0" + fetch-blob "^3.1.4" + formdata-polyfill "^4.0.10" + +node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.1.tgz#24b6d075e5e391b8d5539d98c7fc5c210cac8a3e" + integrity sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ== + +nofilter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-1.0.4.tgz#78d6f4b6a613e7ced8b015cec534625f7667006e" + integrity sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA== + +nofilter@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-3.1.0.tgz#c757ba68801d41ff930ba2ec55bab52ca184aa66" + integrity sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g== + +nopt@3.x: + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + integrity sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg== + dependencies: + abbrev "1" + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== + +number-to-bn@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" + integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== + dependencies: + bn.js "4.11.6" + strip-hex-prefix "1.0.0" + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.12.3, object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + +object-keys@^1.0.11, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.getownpropertydescriptors@^2.0.3: + version "2.1.7" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz#7a466a356cd7da4ba8b9e94ff6d35c3eeab5d56a" + integrity sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g== + dependencies: + array.prototype.reduce "^1.0.6" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + safe-array-concat "^1.0.0" + +obliterator@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-2.0.4.tgz#fa650e019b2d075d745e44f1effeb13a2adbe816" + integrity sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ== + +oboe@2.1.5: + version "2.1.5" + resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.5.tgz#5554284c543a2266d7a38f17e073821fbde393cd" + integrity sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA== + dependencies: + http-https "^1.0.0" + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +ordinal@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ordinal/-/ordinal-1.0.3.tgz#1a3c7726a61728112f50944ad7c35c06ae3a0d4d" + integrity sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ== + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g== + dependencies: + lcid "^1.0.0" + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +p-cancelable@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== + +p-cancelable@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" + integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-timeout@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-4.1.0.tgz#788253c0452ab0ffecf18a62dff94ff1bd09ca0a" + integrity sha512-+/wmHtzJuWii1sXn3HCuH/FTwGhrp4tmJTxSKJbfS+vkipci6osxXM5mY0jUiRzWKMTgUT8l7HFbeSwZAynqHw== + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +param-case@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + integrity sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w== + dependencies: + no-case "^2.2.0" + +parse-cache-control@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-cache-control/-/parse-cache-control-1.0.1.tgz#8eeab3e54fa56920fe16ba38f77fa21aacc2d74e" + integrity sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg== + +parse-headers@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9" + integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA== + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== + dependencies: + error-ex "^1.2.0" + +parse5-htmlparser2-tree-adapter@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" + integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== + dependencies: + domhandler "^5.0.2" + parse5 "^7.0.0" + +parse5@^7.0.0: + version "7.1.2" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" + integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== + dependencies: + entities "^4.4.0" + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-2.0.1.tgz#2d578d3455f660da65eca18ef95b4e0de912761e" + integrity sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ== + dependencies: + camel-case "^3.0.0" + upper-case-first "^1.1.0" + +path-case@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/path-case/-/path-case-2.1.1.tgz#94b8037c372d3fe2906e465bb45e25d226e8eea5" + integrity sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q== + dependencies: + no-case "^2.2.0" + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ== + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-parse@^1.0.6, path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg== + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + +pbkdf2@^3.0.17: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== + +prettier@^2.3.1: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +promise@^8.0.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.3.0.tgz#8cb333d1edeb61ef23869fbb8a4ea0279ab60e0a" + integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== + dependencies: + asap "~2.0.6" + +proper-lockfile@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/proper-lockfile/-/proper-lockfile-4.1.2.tgz#c8b9de2af6b2f1601067f98e01ac66baa223141f" + integrity sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA== + dependencies: + graceful-fs "^4.2.4" + retry "^0.12.0" + signal-exit "^3.0.2" + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +psl@^1.1.28: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" + integrity sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA== + +punycode@^2.1.0, punycode@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + +pure-rand@^5.0.1: + version "5.0.5" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-5.0.5.tgz#bda2a7f6a1fc0f284d78d78ca5902f26f2ad35cf" + integrity sha512-BwQpbqxSCBJVpamI6ydzcKqyFmnd5msMWUGvzXLm1aXvusbbgkbOto/EUPM00hjveJEaJtdbhUjKSzWRhQVkaw== + +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +qs@^6.4.0: + version "6.11.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" + integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== + dependencies: + side-channel "^1.0.4" + +qs@~6.5.2: + version "6.5.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== + +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +queue-microtask@^1.2.2, queue-microtask@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +raw-body@2.5.2, raw-body@^2.4.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A== + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ== + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +readable-stream@^2.2.2: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" + integrity sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ== + dependencies: + picomatch "^2.0.4" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== + dependencies: + resolve "^1.1.6" + +recursive-readdir@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.3.tgz#e726f328c0d69153bcabd5c322d3195252379372" + integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA== + dependencies: + minimatch "^3.0.5" + +reduce-flatten@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" + integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== + +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== + +regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + set-function-name "^2.0.0" + +req-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/req-cwd/-/req-cwd-2.0.0.tgz#d4082b4d44598036640fb73ddea01ed53db49ebc" + integrity sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ== + dependencies: + req-from "^2.0.0" + +req-from@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/req-from/-/req-from-2.0.0.tgz#d74188e47f93796f4aa71df6ee35ae689f3e0e70" + integrity sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA== + dependencies: + resolve-from "^3.0.0" + +request-promise-core@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" + integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== + dependencies: + lodash "^4.17.19" + +request-promise-native@^1.0.5, request-promise-native@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" + integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== + dependencies: + request-promise-core "1.1.4" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.79.0, request@^2.88.0, request@^2.88.2: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" + integrity sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q== + +require-from-string@^2.0.0, require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +resolve-alpn@^1.0.0, resolve-alpn@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== + +resolve@1.1.x: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg== + +resolve@1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + +resolve@^1.1.6, resolve@^1.10.0: + version "1.22.6" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.6.tgz#dd209739eca3aef739c626fea1b4f3c506195362" + integrity sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +responselike@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== + dependencies: + lowercase-keys "^2.0.0" + +retry@0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^2.2.8: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +ripemd160-min@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/ripemd160-min/-/ripemd160-min-0.0.6.tgz#a904b77658114474d02503e819dcc55853b67e62" + integrity sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A== + +ripemd160@^2.0.0, ripemd160@^2.0.1, ripemd160@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rlp@^2.2.3, rlp@^2.2.4: + version "2.2.7" + resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" + integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== + dependencies: + bn.js "^5.2.0" + +run-parallel-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz#be80e936f5768623a38a963262d6bef8ff11e7ba" + integrity sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw== + dependencies: + queue-microtask "^1.2.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rustbn.js@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" + integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== + +safe-array-concat@^1.0.0, safe-array-concat@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" + integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + isarray "^2.0.5" + +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-compare@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/safe-compare/-/safe-compare-1.1.4.tgz#5e0128538a82820e2e9250cd78e45da6786ba593" + integrity sha512-b9wZ986HHCo/HbKrRpBJb2kqXMK9CEWIE1egeEvZsYn69ay3kdfl9nG3RyOcR+jInTDf7a86WQ1d4VJX7goSSQ== + dependencies: + buffer-alloc "^1.2.0" + +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sandwich-stream@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/sandwich-stream/-/sandwich-stream-2.0.2.tgz#6d1feb6cf7e9fe9fadb41513459a72c2e84000fa" + integrity sha512-jLYV0DORrzY3xaz/S9ydJL6Iz7essZeAfnAavsJ+zsJGZ1MOnsS52yRjU3uF3pJa/lla7+wisp//fxOwOH8SKQ== + +sc-istanbul@^0.4.5: + version "0.4.6" + resolved "https://registry.yarnpkg.com/sc-istanbul/-/sc-istanbul-0.4.6.tgz#cf6784355ff2076f92d70d59047d71c13703e839" + integrity sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g== + dependencies: + abbrev "1.0.x" + async "1.x" + escodegen "1.8.x" + esprima "2.7.x" + glob "^5.0.15" + handlebars "^4.0.1" + js-yaml "3.x" + mkdirp "0.5.x" + nopt "3.x" + once "1.x" + resolve "1.1.x" + supports-color "^3.1.0" + which "^1.1.1" + wordwrap "^1.0.0" + +scrypt-js@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.4.tgz#32f8c5149f0797672e551c07e230f834b6af5f16" + integrity sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw== + +scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +secp256k1@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" + integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== + dependencies: + elliptic "^6.5.4" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.6.0, semver@^5.7.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^6.3.0: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.4, semver@^7.5.4: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +sentence-case@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-2.1.1.tgz#1f6e2dda39c168bf92d13f86d4a918933f667ed4" + integrity sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ== + dependencies: + no-case "^2.2.0" + upper-case-first "^1.1.2" + +serialize-javascript@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + dependencies: + randombytes "^2.1.0" + +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +servify@^0.1.12: + version "0.1.12" + resolved "https://registry.yarnpkg.com/servify/-/servify-0.1.12.tgz#142ab7bee1f1d033b66d0707086085b17c06db95" + integrity sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw== + dependencies: + body-parser "^1.16.0" + cors "^2.8.1" + express "^4.14.0" + request "^2.79.0" + xhr "^2.3.3" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +set-function-name@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + dependencies: + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" + +setimmediate@1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.4.tgz#20e81de622d4a02588ce0c8da8973cbcf1d3138f" + integrity sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog== + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +sha1@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/sha1/-/sha1-1.1.1.tgz#addaa7a93168f393f19eb2b15091618e2700f848" + integrity sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA== + dependencies: + charenc ">= 0.0.1" + crypt ">= 0.0.1" + +sha3@^2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/sha3/-/sha3-2.1.4.tgz#000fac0fe7c2feac1f48a25e7a31b52a6492cc8f" + integrity sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg== + dependencies: + buffer "6.0.3" + +shelljs@^0.8.3: + version "0.8.5" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" + integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.2: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^2.7.0: + version "2.8.2" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.2.tgz#5708fb0919d440657326cd5fe7d2599d07705019" + integrity sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw== + dependencies: + decompress-response "^3.3.0" + once "^1.3.1" + simple-concat "^1.0.0" + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +snake-case@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-2.1.0.tgz#41bdb1b73f30ec66a04d4e2cad1b76387d4d6d9f" + integrity sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q== + dependencies: + no-case "^2.2.0" + +solc@0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.7.3.tgz#04646961bd867a744f63d2b4e3c0701ffdc7d78a" + integrity sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA== + dependencies: + command-exists "^1.2.8" + commander "3.0.2" + follow-redirects "^1.12.1" + fs-extra "^0.30.0" + js-sha3 "0.8.0" + memorystream "^0.3.1" + require-from-string "^2.0.0" + semver "^5.5.0" + tmp "0.0.33" + +solc@^0.4.20: + version "0.4.26" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.26.tgz#5390a62a99f40806b86258c737c1cf653cc35cb5" + integrity sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA== + dependencies: + fs-extra "^0.30.0" + memorystream "^0.3.1" + require-from-string "^1.1.0" + semver "^5.3.0" + yargs "^4.7.1" + +solidity-ast@^0.4.26: + version "0.4.52" + resolved "https://registry.yarnpkg.com/solidity-ast/-/solidity-ast-0.4.52.tgz#9f1a9abc7e5ba28bbf91146ecd07aec7e70f3c85" + integrity sha512-iOya9BSiB9jhM8Vf40n8lGELGzwrUc57rl5BhfNtJ5cvAaMvRcNlHeAMNvqJJyjoUnczqRbHqdivEqK89du3Cw== + dependencies: + array.prototype.findlast "^1.2.2" + +solidity-coverage@^0.8.2: + version "0.8.4" + resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.8.4.tgz#c57a21979f5e86859c5198de9fbae2d3bc6324a5" + integrity sha512-xeHOfBOjdMF6hWTbt42iH4x+7j1Atmrf5OldDPMxI+i/COdExUxszOswD9qqvcBTaLGiOrrpnh9UZjSpt4rBsg== + dependencies: + "@ethersproject/abi" "^5.0.9" + "@solidity-parser/parser" "^0.16.0" + chalk "^2.4.2" + death "^1.1.0" + detect-port "^1.3.0" + difflib "^0.2.4" + fs-extra "^8.1.0" + ghost-testrpc "^0.0.2" + global-modules "^2.0.0" + globby "^10.0.1" + jsonschema "^1.2.4" + lodash "^4.17.15" + mocha "7.1.2" + node-emoji "^1.10.0" + pify "^4.0.1" + recursive-readdir "^2.2.2" + sc-istanbul "^0.4.5" + semver "^7.3.4" + shelljs "^0.8.3" + web3-utils "^1.3.6" + +source-map-support@^0.5.13: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" + integrity sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA== + dependencies: + amdefine ">=0.0.4" + +spdx-correct@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.15" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.15.tgz#142460aabaca062bc7cd4cc87b7d50725ed6a4ba" + integrity sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +sshpk@^1.7.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +stacktrace-parser@^0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" + integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== + dependencies: + type-fest "^0.7.1" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g== + +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== + +string-format@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" + integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2", string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g== + dependencies: + is-utf8 "^0.2.0" + +strip-hex-prefix@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" + integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== + dependencies: + is-hex-prefixed "1.0.0" + +strip-indent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" + integrity sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA== + +strip-json-comments@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + +strip-json-comments@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" + integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg== + dependencies: + has-flag "^3.0.0" + +supports-color@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-color@^3.1.0: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + integrity sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A== + dependencies: + has-flag "^1.0.0" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +swap-case@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/swap-case/-/swap-case-1.1.2.tgz#c39203a4587385fad3c850a0bd1bcafa081974e3" + integrity sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ== + dependencies: + lower-case "^1.1.1" + upper-case "^1.1.1" + +swarm-js@^0.1.40: + version "0.1.42" + resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.42.tgz#497995c62df6696f6e22372f457120e43e727979" + integrity sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ== + dependencies: + bluebird "^3.5.0" + buffer "^5.0.5" + eth-lib "^0.1.26" + fs-extra "^4.0.2" + got "^11.8.5" + mime-types "^2.1.16" + mkdirp-promise "^5.0.1" + mock-fs "^4.1.0" + setimmediate "^1.0.5" + tar "^4.0.2" + xhr-request "^1.0.1" + +sync-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/sync-request/-/sync-request-6.1.0.tgz#e96217565b5e50bbffe179868ba75532fb597e68" + integrity sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw== + dependencies: + http-response-object "^3.0.1" + sync-rpc "^1.2.1" + then-request "^6.0.0" + +sync-rpc@^1.2.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/sync-rpc/-/sync-rpc-1.3.6.tgz#b2e8b2550a12ccbc71df8644810529deb68665a7" + integrity sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw== + dependencies: + get-port "^3.1.0" + +table-layout@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" + integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== + dependencies: + array-back "^4.0.1" + deep-extend "~0.6.0" + typical "^5.2.0" + wordwrapjs "^4.0.0" + +table@^6.8.0: + version "6.8.1" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" + integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== + dependencies: + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + +tar@^4.0.2: + version "4.4.19" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" + integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== + dependencies: + chownr "^1.1.4" + fs-minipass "^1.2.7" + minipass "^2.9.0" + minizlib "^1.3.3" + mkdirp "^0.5.5" + safe-buffer "^5.2.1" + yallist "^3.1.1" + +telegraf@^4.12.2: + version "4.13.1" + resolved "https://registry.yarnpkg.com/telegraf/-/telegraf-4.13.1.tgz#ad0b6df452aa133bf6561b4a182bdedb558046b6" + integrity sha512-WXITwqE3ivqDqjHFxj94xaQhHddldBZdE2g/hRJXyCMTkwZYw69q9I7La7nsDpsHLn5ADSQlGv0KAbwFkFpmlA== + dependencies: + "@telegraf/types" "^6.8.1" + abort-controller "^3.0.0" + debug "^4.3.4" + mri "^1.2.0" + node-fetch "^2.6.8" + p-timeout "^4.1.0" + safe-compare "^1.1.4" + sandwich-stream "^2.0.2" + +testrpc@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/testrpc/-/testrpc-0.0.1.tgz#83e2195b1f5873aec7be1af8cbe6dcf39edb7aed" + integrity sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA== + +then-request@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/then-request/-/then-request-6.0.2.tgz#ec18dd8b5ca43aaee5cb92f7e4c1630e950d4f0c" + integrity sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA== + dependencies: + "@types/concat-stream" "^1.6.0" + "@types/form-data" "0.0.33" + "@types/node" "^8.0.0" + "@types/qs" "^6.2.31" + caseless "~0.12.0" + concat-stream "^1.6.0" + form-data "^2.2.0" + http-basic "^8.1.1" + http-response-object "^3.0.1" + promise "^8.0.0" + qs "^6.4.0" + +timed-out@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== + +title-case@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/title-case/-/title-case-2.1.1.tgz#3e127216da58d2bc5becf137ab91dae3a7cd8faa" + integrity sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q== + dependencies: + no-case "^2.2.0" + upper-case "^1.0.3" + +tmp@0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tough-cookie@^2.3.3, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +treeify@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/treeify/-/treeify-1.1.0.tgz#4e31c6a463accd0943879f30667c4fdaff411bb8" + integrity sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A== + +ts-command-line-args@^2.2.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz#e64456b580d1d4f6d948824c274cf6fa5f45f7f0" + integrity sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw== + dependencies: + chalk "^4.1.0" + command-line-args "^5.1.1" + command-line-usage "^6.1.0" + string-format "^2.0.0" + +ts-essentials@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" + integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== + +ts-node@^10.9.1: + version "10.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tslib@^1.11.1, tslib@^1.9.3: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.3.1, tslib@^2.5.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +tsort@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786" + integrity sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw== + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + +tweetnacl-util@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" + integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== + +tweetnacl@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== + dependencies: + prelude-ls "~1.1.2" + +type-detect@^4.0.0, type-detect@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== + +typechain@^8.1.0: + version "8.3.1" + resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.3.1.tgz#dccbc839b94877997536c356380eff7325395cfb" + integrity sha512-fA7clol2IP/56yq6vkMTR+4URF1nGjV82Wx6Rf09EsqD4tkzMAvEaqYxVFCavJm/1xaRga/oD55K+4FtuXwQOQ== + dependencies: + "@types/prettier" "^2.1.1" + debug "^4.3.1" + fs-extra "^7.0.0" + glob "7.1.7" + js-sha3 "^0.8.0" + lodash "^4.17.15" + mkdirp "^1.0.4" + prettier "^2.3.1" + ts-command-line-args "^2.2.0" + ts-essentials "^7.0.1" + +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" + +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + +typescript@^4.8.3: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +typical@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" + integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== + +typical@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" + integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== + +uglify-js@^3.1.4: + version "3.17.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" + integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== + +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +undici@^5.14.0, undici@^5.22.1: + version "5.25.1" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.25.1.tgz#3fa537eb89a6a0bb576b395f0f7bcdedf7b8336a" + integrity sha512-nTw6b2G2OqP6btYPyghCgV4hSwjJlL/78FMJatVLCa3otj6PCOQSt6dVtYt82OtNqFz8XsnJ+vsXLADPXjPhqw== + dependencies: + busboy "^1.6.0" + +unfetch@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" + integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +upper-case-first@^1.1.0, upper-case-first@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-1.1.2.tgz#5d79bedcff14419518fd2edb0a0507c9b6859115" + integrity sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ== + dependencies: + upper-case "^1.1.1" + +upper-case@^1.0.3, upper-case@^1.1.0, upper-case@^1.1.1, upper-case@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + integrity sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url-set-query@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" + integrity sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg== + +utf-8-validate@^5.0.2: + version "5.0.10" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== + dependencies: + node-gyp-build "^4.3.0" + +utf8@3.0.0, utf8@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" + integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +util@^0.12.5: + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.1.tgz#c2a30dedb3e535d72ccf82e343941a50ba8533ac" + integrity sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg== + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +uuid@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" + integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +varint@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" + integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +web-streams-polyfill@^3.0.3: + version "3.2.1" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" + integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q== + +web3-bzz@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.10.0.tgz#ac74bc71cdf294c7080a79091079192f05c5baed" + integrity sha512-o9IR59io3pDUsXTsps5pO5hW1D5zBmg46iNc2t4j2DkaYHNdDLwk2IP9ukoM2wg47QILfPEJYzhTfkS/CcX0KA== + dependencies: + "@types/node" "^12.12.6" + got "12.1.0" + swarm-js "^0.1.40" + +web3-bzz@1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.10.2.tgz#482dfddcc5f65d5877b37cc20775725220b4ad87" + integrity sha512-vLOfDCj6198Qc7esDrCKeFA/M3ZLbowsaHQ0hIL4NmIHoq7lU8aSRTa5AI+JBh8cKN1gVryJsuW2ZCc5bM4I4Q== + dependencies: + "@types/node" "^12.12.6" + got "12.1.0" + swarm-js "^0.1.40" + +web3-core-helpers@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.10.0.tgz#1016534c51a5df77ed4f94d1fcce31de4af37fad" + integrity sha512-pIxAzFDS5vnbXvfvLSpaA1tfRykAe9adw43YCKsEYQwH0gCLL0kMLkaCX3q+Q8EVmAh+e1jWL/nl9U0de1+++g== + dependencies: + web3-eth-iban "1.10.0" + web3-utils "1.10.0" + +web3-core-helpers@1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.10.2.tgz#bd47686c0e74ef4475713c581f9306a035ce8a74" + integrity sha512-1JfaNtox6/ZYJHNoI+QVc2ObgwEPeGF+YdxHZQ7aF5605BmlwM1Bk3A8xv6mg64jIRvEq1xX6k9oG6x7p1WgXQ== + dependencies: + web3-eth-iban "1.10.2" + web3-utils "1.10.2" + +web3-core-method@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.10.0.tgz#82668197fa086e8cc8066742e35a9d72535e3412" + integrity sha512-4R700jTLAMKDMhQ+nsVfIXvH6IGJlJzGisIfMKWAIswH31h5AZz7uDUW2YctI+HrYd+5uOAlS4OJeeT9bIpvkA== + dependencies: + "@ethersproject/transactions" "^5.6.2" + web3-core-helpers "1.10.0" + web3-core-promievent "1.10.0" + web3-core-subscriptions "1.10.0" + web3-utils "1.10.0" + +web3-core-method@1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.10.2.tgz#4adf3f8c8d0776f0f320e583b791955c41037971" + integrity sha512-gG6ES+LOuo01MJHML4gnEt702M8lcPGMYZoX8UjZzmEebGrPYOY9XccpCrsFgCeKgQzM12SVnlwwpMod1+lcLg== + dependencies: + "@ethersproject/transactions" "^5.6.2" + web3-core-helpers "1.10.2" + web3-core-promievent "1.10.2" + web3-core-subscriptions "1.10.2" + web3-utils "1.10.2" + +web3-core-promievent@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.10.0.tgz#cbb5b3a76b888df45ed3a8d4d8d4f54ccb66a37b" + integrity sha512-68N7k5LWL5R38xRaKFrTFT2pm2jBNFaM4GioS00YjAKXRQ3KjmhijOMG3TICz6Aa5+6GDWYelDNx21YAeZ4YTg== + dependencies: + eventemitter3 "4.0.4" + +web3-core-promievent@1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.10.2.tgz#13b380b69ee05c5bf075836be64c2f3b8bdc1a5f" + integrity sha512-Qkkb1dCDOU8dZeORkcwJBQRAX+mdsjx8LqFBB+P4W9QgwMqyJ6LXda+y1XgyeEVeKEmY1RCeTq9Y94q1v62Sfw== + dependencies: + eventemitter3 "4.0.4" + +web3-core-requestmanager@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.10.0.tgz#4b34f6e05837e67c70ff6f6993652afc0d54c340" + integrity sha512-3z/JKE++Os62APml4dvBM+GAuId4h3L9ckUrj7ebEtS2AR0ixyQPbrBodgL91Sv7j7cQ3Y+hllaluqjguxvSaQ== + dependencies: + util "^0.12.5" + web3-core-helpers "1.10.0" + web3-providers-http "1.10.0" + web3-providers-ipc "1.10.0" + web3-providers-ws "1.10.0" + +web3-core-requestmanager@1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.10.2.tgz#f5b1264c6470c033f08e21210b0af0c23497c68a" + integrity sha512-nlLeNJUu6fR+ZbJr2k9Du/nN3VWwB4AJPY4r6nxUODAmykgJq57T21cLP/BEk6mbiFQYGE9TrrPhh4qWxQEtAw== + dependencies: + util "^0.12.5" + web3-core-helpers "1.10.2" + web3-providers-http "1.10.2" + web3-providers-ipc "1.10.2" + web3-providers-ws "1.10.2" + +web3-core-subscriptions@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.10.0.tgz#b534592ee1611788fc0cb0b95963b9b9b6eacb7c" + integrity sha512-HGm1PbDqsxejI075gxBc5OSkwymilRWZufIy9zEpnWKNmfbuv5FfHgW1/chtJP6aP3Uq2vHkvTDl3smQBb8l+g== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.10.0" + +web3-core-subscriptions@1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.10.2.tgz#d325483141ab1406241d6707b86fd6944e4b7ea6" + integrity sha512-MiWcKjz4tco793EPPPLc/YOJmYUV3zAfxeQH/UVTfBejMfnNvmfwKa2SBKfPIvKQHz/xI5bV2TF15uvJEucU7w== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.10.2" + +web3-core@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.10.0.tgz#9aa07c5deb478cf356c5d3b5b35afafa5fa8e633" + integrity sha512-fWySwqy2hn3TL89w5TM8wXF1Z2Q6frQTKHWmP0ppRQorEK8NcHJRfeMiv/mQlSKoTS1F6n/nv2uyZsixFycjYQ== + dependencies: + "@types/bn.js" "^5.1.1" + "@types/node" "^12.12.6" + bignumber.js "^9.0.0" + web3-core-helpers "1.10.0" + web3-core-method "1.10.0" + web3-core-requestmanager "1.10.0" + web3-utils "1.10.0" + +web3-core@1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.10.2.tgz#464a15335b3adecc4a1cdd53c89b995769059f03" + integrity sha512-qTn2UmtE8tvwMRsC5pXVdHxrQ4uZ6jiLgF5DRUVtdi7dPUmX18Dp9uxKfIfhGcA011EAn8P6+X7r3pvi2YRxBw== + dependencies: + "@types/bn.js" "^5.1.1" + "@types/node" "^12.12.6" + bignumber.js "^9.0.0" + web3-core-helpers "1.10.2" + web3-core-method "1.10.2" + web3-core-requestmanager "1.10.2" + web3-utils "1.10.2" + +web3-eth-abi@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.10.0.tgz#53a7a2c95a571e205e27fd9e664df4919483cce1" + integrity sha512-cwS+qRBWpJ43aI9L3JS88QYPfFcSJJ3XapxOQ4j40v6mk7ATpA8CVK1vGTzpihNlOfMVRBkR95oAj7oL6aiDOg== + dependencies: + "@ethersproject/abi" "^5.6.3" + web3-utils "1.10.0" + +web3-eth-abi@1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.10.2.tgz#65db4af1acb0b72cb9d10cd6f045a8bcdb270b1b" + integrity sha512-pY4fQUio7W7ZRSLf+vsYkaxJqaT/jHcALZjIxy+uBQaYAJ3t6zpQqMZkJB3Dw7HUODRJ1yI0NPEFGTnkYf/17A== + dependencies: + "@ethersproject/abi" "^5.6.3" + web3-utils "1.10.2" + +web3-eth-accounts@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.10.0.tgz#2942beca0a4291455f32cf09de10457a19a48117" + integrity sha512-wiq39Uc3mOI8rw24wE2n15hboLE0E9BsQLdlmsL4Zua9diDS6B5abXG0XhFcoNsXIGMWXVZz4TOq3u4EdpXF/Q== + dependencies: + "@ethereumjs/common" "2.5.0" + "@ethereumjs/tx" "3.3.2" + eth-lib "0.2.8" + ethereumjs-util "^7.1.5" + scrypt-js "^3.0.1" + uuid "^9.0.0" + web3-core "1.10.0" + web3-core-helpers "1.10.0" + web3-core-method "1.10.0" + web3-utils "1.10.0" + +web3-eth-accounts@1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.10.2.tgz#5ce9e4de0f84a88e72801810b98cc25164956404" + integrity sha512-6/HhCBYAXN/f553/SyxS9gY62NbLgpD1zJpENcvRTDpJN3Znvli1cmpl5Q3ZIUJkvHnG//48EWfWh0cbb3fbKQ== + dependencies: + "@ethereumjs/common" "2.5.0" + "@ethereumjs/tx" "3.3.2" + "@ethereumjs/util" "^8.1.0" + eth-lib "0.2.8" + scrypt-js "^3.0.1" + uuid "^9.0.0" + web3-core "1.10.2" + web3-core-helpers "1.10.2" + web3-core-method "1.10.2" + web3-utils "1.10.2" + +web3-eth-contract@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.10.0.tgz#8e68c7654576773ec3c91903f08e49d0242c503a" + integrity sha512-MIC5FOzP/+2evDksQQ/dpcXhSqa/2hFNytdl/x61IeWxhh6vlFeSjq0YVTAyIzdjwnL7nEmZpjfI6y6/Ufhy7w== + dependencies: + "@types/bn.js" "^5.1.1" + web3-core "1.10.0" + web3-core-helpers "1.10.0" + web3-core-method "1.10.0" + web3-core-promievent "1.10.0" + web3-core-subscriptions "1.10.0" + web3-eth-abi "1.10.0" + web3-utils "1.10.0" + +web3-eth-contract@1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.10.2.tgz#9114c52ba5ca5859f3403abea69a13f8678828ad" + integrity sha512-CZLKPQRmupP/+OZ5A/CBwWWkBiz5B/foOpARz0upMh1yjb0dEud4YzRW2gJaeNu0eGxDLsWVaXhUimJVGYprQw== + dependencies: + "@types/bn.js" "^5.1.1" + web3-core "1.10.2" + web3-core-helpers "1.10.2" + web3-core-method "1.10.2" + web3-core-promievent "1.10.2" + web3-core-subscriptions "1.10.2" + web3-eth-abi "1.10.2" + web3-utils "1.10.2" + +web3-eth-ens@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.10.0.tgz#96a676524e0b580c87913f557a13ed810cf91cd9" + integrity sha512-3hpGgzX3qjgxNAmqdrC2YUQMTfnZbs4GeLEmy8aCWziVwogbuqQZ+Gzdfrym45eOZodk+lmXyLuAdqkNlvkc1g== + dependencies: + content-hash "^2.5.2" + eth-ens-namehash "2.0.8" + web3-core "1.10.0" + web3-core-helpers "1.10.0" + web3-core-promievent "1.10.0" + web3-eth-abi "1.10.0" + web3-eth-contract "1.10.0" + web3-utils "1.10.0" + +web3-eth-ens@1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.10.2.tgz#5708e1830ab261b139882cc43662afb3a733112e" + integrity sha512-kTQ42UdNHy4BQJHgWe97bHNMkc3zCMBKKY7t636XOMxdI/lkRdIjdE5nQzt97VjQvSVasgIWYKRAtd8aRaiZiQ== + dependencies: + content-hash "^2.5.2" + eth-ens-namehash "2.0.8" + web3-core "1.10.2" + web3-core-helpers "1.10.2" + web3-core-promievent "1.10.2" + web3-eth-abi "1.10.2" + web3-eth-contract "1.10.2" + web3-utils "1.10.2" + +web3-eth-iban@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.10.0.tgz#5a46646401965b0f09a4f58e7248c8a8cd22538a" + integrity sha512-0l+SP3IGhInw7Q20LY3IVafYEuufo4Dn75jAHT7c2aDJsIolvf2Lc6ugHkBajlwUneGfbRQs/ccYPQ9JeMUbrg== + dependencies: + bn.js "^5.2.1" + web3-utils "1.10.0" + +web3-eth-iban@1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.10.2.tgz#f8e668034834c5be038adeb14c39b923e9257558" + integrity sha512-y8+Ii2XXdyHQMFNL2NWpBnXe+TVJ4ryvPlzNhObRRnIo4O4nLIXS010olLDMayozDzoUlmzCmBZJYc9Eev1g7A== + dependencies: + bn.js "^5.2.1" + web3-utils "1.10.2" + +web3-eth-personal@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.10.0.tgz#94d525f7a29050a0c2a12032df150ac5ea633071" + integrity sha512-anseKn98w/d703eWq52uNuZi7GhQeVjTC5/svrBWEKob0WZ5kPdo+EZoFN0sp5a5ubbrk/E0xSl1/M5yORMtpg== + dependencies: + "@types/node" "^12.12.6" + web3-core "1.10.0" + web3-core-helpers "1.10.0" + web3-core-method "1.10.0" + web3-net "1.10.0" + web3-utils "1.10.0" + +web3-eth-personal@1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.10.2.tgz#a281cc1cecb2f3243ac0467c075a1579fa562901" + integrity sha512-+vEbJsPUJc5J683y0c2aN645vXC+gPVlFVCQu4IjPvXzJrAtUfz26+IZ6AUOth4fDJPT0f1uSLS5W2yrUdw9BQ== + dependencies: + "@types/node" "^12.12.6" + web3-core "1.10.2" + web3-core-helpers "1.10.2" + web3-core-method "1.10.2" + web3-net "1.10.2" + web3-utils "1.10.2" + +web3-eth@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.10.0.tgz#38b905e2759697c9624ab080cfcf4e6c60b3a6cf" + integrity sha512-Z5vT6slNMLPKuwRyKGbqeGYC87OAy8bOblaqRTgg94CXcn/mmqU7iPIlG4506YdcdK3x6cfEDG7B6w+jRxypKA== + dependencies: + web3-core "1.10.0" + web3-core-helpers "1.10.0" + web3-core-method "1.10.0" + web3-core-subscriptions "1.10.0" + web3-eth-abi "1.10.0" + web3-eth-accounts "1.10.0" + web3-eth-contract "1.10.0" + web3-eth-ens "1.10.0" + web3-eth-iban "1.10.0" + web3-eth-personal "1.10.0" + web3-net "1.10.0" + web3-utils "1.10.0" + +web3-eth@1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.10.2.tgz#46baa0d8a1203b425f77ac2cf823fbb73666fcb9" + integrity sha512-s38rhrntyhGShmXC4R/aQtfkpcmev9c7iZwgb9CDIBFo7K8nrEJvqIOyajeZTxnDIiGzTJmrHxiKSadii5qTRg== + dependencies: + web3-core "1.10.2" + web3-core-helpers "1.10.2" + web3-core-method "1.10.2" + web3-core-subscriptions "1.10.2" + web3-eth-abi "1.10.2" + web3-eth-accounts "1.10.2" + web3-eth-contract "1.10.2" + web3-eth-ens "1.10.2" + web3-eth-iban "1.10.2" + web3-eth-personal "1.10.2" + web3-net "1.10.2" + web3-utils "1.10.2" + +web3-net@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.10.0.tgz#be53e7f5dafd55e7c9013d49c505448b92c9c97b" + integrity sha512-NLH/N3IshYWASpxk4/18Ge6n60GEvWBVeM8inx2dmZJVmRI6SJIlUxbL8jySgiTn3MMZlhbdvrGo8fpUW7a1GA== + dependencies: + web3-core "1.10.0" + web3-core-method "1.10.0" + web3-utils "1.10.0" + +web3-net@1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.10.2.tgz#77f39dea930619035d3bf99969941870f2f0c550" + integrity sha512-w9i1t2z7dItagfskhaCKwpp6W3ylUR88gs68u820y5f8yfK5EbPmHc6c2lD8X9ZrTnmDoeOpIRCN/RFPtZCp+g== + dependencies: + web3-core "1.10.2" + web3-core-method "1.10.2" + web3-utils "1.10.2" + +web3-providers-http@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.10.0.tgz#864fa48675e7918c9a4374e5f664b32c09d0151b" + integrity sha512-eNr965YB8a9mLiNrkjAWNAPXgmQWfpBfkkn7tpEFlghfww0u3I0tktMZiaToJVcL2+Xq+81cxbkpeWJ5XQDwOA== + dependencies: + abortcontroller-polyfill "^1.7.3" + cross-fetch "^3.1.4" + es6-promise "^4.2.8" + web3-core-helpers "1.10.0" + +web3-providers-http@1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.10.2.tgz#8bd54b5bc5bcc50612fd52af65bd773f926045f7" + integrity sha512-G8abKtpkyKGpRVKvfjIF3I4O/epHP7mxXWN8mNMQLkQj1cjMFiZBZ13f+qI77lNJN7QOf6+LtNdKrhsTGU72TA== + dependencies: + abortcontroller-polyfill "^1.7.5" + cross-fetch "^4.0.0" + es6-promise "^4.2.8" + web3-core-helpers "1.10.2" + +web3-providers-ipc@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.10.0.tgz#9747c7a6aee96a51488e32fa7c636c3460b39889" + integrity sha512-OfXG1aWN8L1OUqppshzq8YISkWrYHaATW9H8eh0p89TlWMc1KZOL9vttBuaBEi96D/n0eYDn2trzt22bqHWfXA== + dependencies: + oboe "2.1.5" + web3-core-helpers "1.10.0" + +web3-providers-ipc@1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.10.2.tgz#4314a04c1d68f5d1cb2d047d027db97c85f921f7" + integrity sha512-lWbn6c+SgvhLymU8u4Ea/WOVC0Gqs7OJUvauejWz+iLycxeF0xFNyXnHVAi42ZJDPVI3vnfZotafoxcNNL7Sug== + dependencies: + oboe "2.1.5" + web3-core-helpers "1.10.2" + +web3-providers-ws@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.10.0.tgz#cb0b87b94c4df965cdf486af3a8cd26daf3975e5" + integrity sha512-sK0fNcglW36yD5xjnjtSGBnEtf59cbw4vZzJ+CmOWIKGIR96mP5l684g0WD0Eo+f4NQc2anWWXG74lRc9OVMCQ== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.10.0" + websocket "^1.0.32" + +web3-providers-ws@1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.10.2.tgz#00bf6e00080dd82b8ad7fbed657a6d20ecc532de" + integrity sha512-3nYSiP6grI5GvpkSoehctSywfCTodU21VY8bUtXyFHK/IVfDooNtMpd5lVIMvXVAlaxwwrCfjebokaJtKH2Iag== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.10.2" + websocket "^1.0.32" + +web3-shh@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.10.0.tgz#c2979b87e0f67a7fef2ce9ee853bd7bfbe9b79a8" + integrity sha512-uNUUuNsO2AjX41GJARV9zJibs11eq6HtOe6Wr0FtRUcj8SN6nHeYIzwstAvJ4fXA53gRqFMTxdntHEt9aXVjpg== + dependencies: + web3-core "1.10.0" + web3-core-method "1.10.0" + web3-core-subscriptions "1.10.0" + web3-net "1.10.0" + +web3-shh@1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.10.2.tgz#2a41e1a308de5320d1f17080765206b727aa669e" + integrity sha512-UP0Kc3pHv9uULFu0+LOVfPwKBSJ6B+sJ5KflF7NyBk6TvNRxlpF3hUhuaVDCjjB/dDUR6T0EQeg25FA2uzJbag== + dependencies: + web3-core "1.10.2" + web3-core-method "1.10.2" + web3-core-subscriptions "1.10.2" + web3-net "1.10.2" + +web3-utils@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.10.0.tgz#ca4c1b431a765c14ac7f773e92e0fd9377ccf578" + integrity sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg== + dependencies: + bn.js "^5.2.1" + ethereum-bloom-filters "^1.0.6" + ethereumjs-util "^7.1.0" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + utf8 "3.0.0" + +web3-utils@1.10.2, web3-utils@^1.0.0-beta.31, web3-utils@^1.2.5, web3-utils@^1.3.4, web3-utils@^1.3.6: + version "1.10.2" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.10.2.tgz#361103d28a94d5e2a87ba15d776a62c33303eb44" + integrity sha512-TdApdzdse5YR+5GCX/b/vQnhhbj1KSAtfrDtRW7YS0kcWp1gkJsN62gw6GzCaNTeXookB7UrLtmDUuMv65qgow== + dependencies: + "@ethereumjs/util" "^8.1.0" + bn.js "^5.2.1" + ethereum-bloom-filters "^1.0.6" + ethereum-cryptography "^2.1.2" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + utf8 "3.0.0" + +web3@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.10.0.tgz#2fde0009f59aa756c93e07ea2a7f3ab971091274" + integrity sha512-YfKY9wSkGcM8seO+daR89oVTcbu18NsVfvOngzqMYGUU0pPSQmE57qQDvQzUeoIOHAnXEBNzrhjQJmm8ER0rng== + dependencies: + web3-bzz "1.10.0" + web3-core "1.10.0" + web3-eth "1.10.0" + web3-eth-personal "1.10.0" + web3-net "1.10.0" + web3-shh "1.10.0" + web3-utils "1.10.0" + +web3@^1.2.5, web3@^1.9.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.10.2.tgz#5b7e165b396fb0bea501cef4d5ce754aebad5b73" + integrity sha512-DAtZ3a3ruPziE80uZ3Ob0YDZxt6Vk2un/F5BcBrxO70owJ9Z1Y2+loZmbh1MoAmoLGjA/SUSHeUtid3fYmBaog== + dependencies: + web3-bzz "1.10.2" + web3-core "1.10.2" + web3-eth "1.10.2" + web3-eth-personal "1.10.2" + web3-net "1.10.2" + web3-shh "1.10.2" + web3-utils "1.10.2" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +websocket@^1.0.32: + version "1.0.34" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" + integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== + dependencies: + bufferutil "^4.0.1" + debug "^2.2.0" + es5-ext "^0.10.50" + typedarray-to-buffer "^3.1.5" + utf-8-validate "^5.0.2" + yaeti "^0.0.6" + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + integrity sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ== + +which-module@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" + integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== + +which-typed-array@^1.1.11, which-typed-array@^1.1.2: + version "1.1.11" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" + integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + +which@1.3.1, which@^1.1.1, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +wide-align@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +window-size@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" + integrity sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw== + +word-wrap@~1.2.3: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + +wordwrapjs@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" + integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== + dependencies: + reduce-flatten "^2.0.0" + typical "^5.2.0" + +workerpool@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" + integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw== + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@7.4.6: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + +ws@^3.0.0: + version "3.3.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + +ws@^7.4.6: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +xhr-request-promise@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c" + integrity sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg== + dependencies: + xhr-request "^1.1.0" + +xhr-request@^1.0.1, xhr-request@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/xhr-request/-/xhr-request-1.1.0.tgz#f4a7c1868b9f198723444d82dcae317643f2e2ed" + integrity sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA== + dependencies: + buffer-to-arraybuffer "^0.0.5" + object-assign "^4.1.1" + query-string "^5.0.1" + simple-get "^2.7.0" + timed-out "^4.0.1" + url-set-query "^1.0.0" + xhr "^2.0.4" + +xhr@^2.0.4, xhr@^2.3.3: + version "2.6.0" + resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d" + integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== + dependencies: + global "~4.4.0" + is-function "^1.0.1" + parse-headers "^2.0.0" + xtend "^4.0.0" + +xmlhttprequest@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" + integrity sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA== + +xtend@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^3.2.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696" + integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yaeti@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" + integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug== + +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@13.1.2, yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@20.2.4: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + +yargs-parser@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" + integrity sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA== + dependencies: + camelcase "^3.0.0" + lodash.assign "^4.0.6" + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-unparser@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz#ef25c2c769ff6bd09e4b0f9d7c605fb27846ea9f" + integrity sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw== + dependencies: + flat "^4.1.0" + lodash "^4.17.15" + yargs "^13.3.0" + +yargs-unparser@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@13.3.2, yargs@^13.3.0: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + +yargs@16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yargs@^4.7.1: + version "4.8.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" + integrity sha512-LqodLrnIDM3IFT+Hf/5sxBnEGECrfdC1uIbgZeJmESCSo4HoCAaKEus8MylXHAkdacGc0ye+Qa+dpkuom8uVYA== + dependencies: + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + lodash.assign "^4.0.3" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.1" + which-module "^1.0.0" + window-size "^0.2.0" + y18n "^3.2.1" + yargs-parser "^2.4.1" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==