Contract 0xf00598af0ccf2d43613414f36f40123337f56e71

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x0d9b7378e2bfdc1d17b3513e31b4b2e4296cf86281c5963ee86c2d039e3783c3Approve111960522021-09-24 14:35:5218 hrs 48 mins ago0xca7175c6e1889560c38cbc02ecc40dbdd6dc1d80 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00022592
0xa81ae8e0ff6544c3b5f707547d79db34deae3fe0cb3c4702cc2d48bb55a2a033Approve111938792021-09-24 12:46:1620 hrs 38 mins ago0xbb8a2237930bdfd8beac1bbd20b8953969f74570 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.0000745
0xff9f89c4e90dc8c1a83a2b58dca43ebc12b9dab3b187c466ccdc20b2cbdd5bcfTransfer111907302021-09-24 10:08:2023 hrs 16 mins ago0x38909b94fb75ffd93c5f8f4b8cf19e079a5c8015 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00035284
0x6faa65f960b2c695933d8f38f84e270e614e14a967e833e03c157b78b2e56898Transfer111699182021-09-23 16:45:431 day 16 hrs ago0xd450b95ff83b0055966370979eda806888d37bae IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00027784
0x18b1ab01433f06228b3f1bf7e7993eb031b53b77276166563b6ee82c693cd753Approve111696182021-09-23 16:30:431 day 16 hrs ago0x37c67df06ca099c55a28c73c5761af81f362fb5b IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00022592
0x0118bcdb31dfdc47423e84e5acec1c2bce73671179844748efff31dde69d22bfApprove111593892021-09-23 7:53:092 days 1 hr ago0x75d18372030e30dbc4753464a8ec4faea2e56461 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00022592
0x6db5969a3cbd391786ba8b6a491393e70cb6c54237128c8a06c11aec5da8ca7aApprove111548362021-09-23 4:04:242 days 5 hrs ago0x46429c558c209d06c00ec7ce5dd2cd5f582cb28c IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00022592
0x5a4be4c70896fedbddb295cc8c5250dd83fbe9f4395ae5dbcdc0ae779587e0c9Transfer111473982021-09-22 21:49:362 days 11 hrs ago0xe9992e57df3210779693ad5ab5709ecbb4b83a20 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00035284
0xd716ccc93d4e0c203761ac8e53495c3a37c5b853128d4cf7502915b3bf119b9aApprove111444272021-09-22 19:19:412 days 14 hrs ago0xe22939092422f29046f852455d3dd529cc319052 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00022592
0x29953fc6b91b96f4281ec3f5b85018feca64ce2139015c83c174aaba6e04e6e4Transfer111078072021-09-21 12:33:493 days 20 hrs ago0xe31509464f935dc6976b47896d7e9d2da12389d0 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.0002779
0x00a858ae797ef7e25310cb82fab672bb101e4325eaff94021d0592d9e083be5eTransfer110968042021-09-21 3:23:324 days 6 hrs ago0x92b857e219f48efee251cc4d95eef16bd05b6f1c IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.0003529
0x6187301a076a4877d0a430a9474e7521e9d1ef3c3bba1825e047a1eced3f343dTransfer110922962021-09-20 23:36:144 days 9 hrs ago0x684fe8930e52b52166021699d19eed00e70b99f9 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00035284
0x714b4cae59007eb7dfa36ea55f3699a67ac19b58ae425017b05e684d5f9a39e0Transfer110768422021-09-20 10:40:254 days 22 hrs ago0x9cc08a6e72d2e1888987c89fc448b9aba069ea05 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00035284
0x0647fe0bfd9c03677291ec3227c84c8f1ad788eff7270e4793fd5f72c32bd3b0Transfer110764712021-09-20 10:21:524 days 23 hrs ago0x562023c448fa4869adc610408171987e46f6a60d IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.0003529
0x5762b07782f3fa2906ca4b34868bbaf4c2da64171a5791e0653c4619f293e804Approve110549912021-09-19 16:27:415 days 16 hrs ago0x4dec2a878ebb0ded523acfa651822aa024316d7e IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.000316288
0x1f00bb18761783444ac45d30e17d0cf1f84d408e40bf4f2886d540555f496b57Approve110436982021-09-19 6:49:236 days 2 hrs ago0xe5c4ac0b16d7ed7785a639eb94c5c66b1961171d IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00022592
0xdafc7480cf81d321c5649220412506ad1606668ca3ac7c4579896eda7f656aa9Approve110225072021-09-18 13:06:186 days 20 hrs ago0x8ceb31a5aea5acff5a582969b726716c81c33032 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00022592
0x794676357d6affdf6835d862836f5a134b40922627cff0ea05f90c44629dfb48Transfer110134792021-09-18 5:34:227 days 3 hrs ago0xd22dcdff9e23ce8d0d857136776f028cf1ef82ab IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00035284
0x0e9fc97f32e315a0bcc5a0b541d2a6180a6323052ac839134f02f58084e2ef79Transfer110087452021-09-18 1:36:337 days 7 hrs ago0x5531e9023d05b97980e60bd028acc161693a3eec IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00027784
0x3276af1ecc0c1190978b736bc365899c6130e15fb5e011b0de4788e9890dbae5Transfer110007732021-09-17 18:57:497 days 14 hrs ago0x684411a10e7777e8791db6fa782e0abf14bef5bb IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00035284
0xfc45c603c9978e394ae4395b243d8f820c68ce1317c29d7453de700dee359efcApprove109986112021-09-17 17:09:407 days 16 hrs ago0xc4b032dc216e71a9b69257728492d49388513852 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.000316288
0xe852600b8535bd016d4d3c7ea1213555bc9d68d287551fcc501ea66a9ac10421Transfer109737272021-09-16 20:24:088 days 13 hrs ago0xd727d4a82b015feadb1d35b58fa191e15acd7df9 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00027784
0x02c02156e7d807493db15e2903279c7986ebba08515ca797185739be594d08a1Approve109667872021-09-16 14:35:598 days 18 hrs ago0xf6e84a73ee9f9de83bae36cb8bcdc26dde71540c IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.00022454
0x1325a9c526543f510a39ff7b4fafad86de8783c7afde67f361a1f8b0fc64acebClaim109523862021-09-16 2:33:539 days 6 hrs ago0xfead78c031bf045fafd9d9c93a6100267f71e862 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.000433025
0xc25ab4d3a2d8246689cb70d04d1a09e008435b8196c941027388dec82667dbcbClaim109453132021-09-15 20:40:149 days 12 hrs ago0xb16eca4b56bcfc34881f53f59788968c81aa0752 IN  0xf00598af0ccf2d43613414f36f40123337f56e710 BNB0.000433025
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x8e992004953406f356379fa5054eef8f875c77bd33feaea3a8f5dd13f6025111108960462021-09-14 3:26:5911 days 5 hrs ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.01 BNB
0x29e83d142eaa8975f7567549251fbf7fc33e5e8010ebc6805795cc8b19e94826105617142021-09-02 10:25:4122 days 22 hrs ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.01 BNB
0xb297a7c709259a9f4a298f7388c45db60b11aef4cf6b95c5466395435ed97880103647622021-08-26 11:44:4229 days 21 hrs ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.01 BNB
0xd85925734c50675c29453c69870b119d99f1f9779864281a2288ba109e9156d9102801112021-08-23 12:49:0832 days 20 hrs ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.001 BNB
0x56d3ba1815058a846181284712506cefaca2b46208fb4124104d0d1b3771223e102125062021-08-21 4:11:3535 days 5 hrs ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.001 BNB
0x0627770df1b6bad59e45cba2573aa113bb49a1a0fe9e6124db083fabea766889102125032021-08-21 4:11:2635 days 5 hrs ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.001 BNB
0xe5b033e007f8086e4121163fe1b73d08c638455adcf4985200e0a8ea871ab59b102118972021-08-21 3:41:0835 days 5 hrs ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.001 BNB
0xefcee555693c5e68932ca11d923e99922b203c9b30c3ba072194af46bdda60e6102109382021-08-21 2:53:0935 days 6 hrs ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.01 BNB
0xbb8617f0bd0c4926571ec7a7d5c15c4d1ac5fb3aff301fa016753ae8df40b11b102097112021-08-21 1:51:4835 days 7 hrs ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.001 BNB
0x8c587b6eac26d4a714899aa3a7dfcd724b477547cda77cf655f87b8fad5ba150101428592021-08-18 17:42:5037 days 15 hrs ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.03 BNB
0x8df50db92124ef013144cce2028fb73686aa30068de20d5c35d7b46bdcfc6f07101053142021-08-17 10:22:3138 days 23 hrs ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.05 BNB
0xf619ad0b8ae29475488db17cefea7d4361ddff2d171e63bfb0b97515d127f75e100516552021-08-15 13:31:1340 days 19 hrs ago 0xf00598af0ccf2d43613414f36f40123337f56e71 PancakeSwap: Router v20.01775045290165736 BNB
0xf619ad0b8ae29475488db17cefea7d4361ddff2d171e63bfb0b97515d127f75e100516552021-08-15 13:31:1340 days 19 hrs ago PancakeSwap: Router v2 0xf00598af0ccf2d43613414f36f40123337f56e710.01775045290165736 BNB
0x1d009b3f9b256466e1995db8cf46e2628f4dcc7e0cf2fbee40a997636d7b69ee99355382021-08-11 10:44:4344 days 22 hrs ago PancakeSwap: Router v2 0xf00598af0ccf2d43613414f36f40123337f56e710.000007973471411127 BNB
0x1d009b3f9b256466e1995db8cf46e2628f4dcc7e0cf2fbee40a997636d7b69ee99355382021-08-11 10:44:4344 days 22 hrs ago 0xf00598af0ccf2d43613414f36f40123337f56e71 PancakeSwap: Router v20.025291823160147724 BNB
0x1d009b3f9b256466e1995db8cf46e2628f4dcc7e0cf2fbee40a997636d7b69ee99355382021-08-11 10:44:4344 days 22 hrs ago PancakeSwap: Router v2 0xf00598af0ccf2d43613414f36f40123337f56e710.025291823160147724 BNB
0xe9f1cb542526869c66ca426501b128291f42354adaab9c57e0bce8a02c0fa9ef99044922021-08-10 8:30:4546 days 53 mins ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.01 BNB
0x4eac39ed6042b6c82ce160696c506346574b833a117f344fabafc05231e9be4698940852021-08-09 23:35:4246 days 9 hrs ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.01 BNB
0xe8c65916f3d1667cd0909adde29532c0fb1294a077f94f7365e3797f275dc60898505342021-08-08 10:26:4347 days 22 hrs ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.003 BNB
0x11a962f800a4de759808f123925c9f31cc2e6bbcf8b4f75bbdcdc98dabec28d698504452021-08-08 10:22:1647 days 23 hrs ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.005 BNB
0x18375ff9f1ff68a495d6000c9e9fc2aa111219f314de370d0f3dbfe14395e6c998474542021-08-08 7:49:4048 days 1 hr ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.01 BNB
0xbfbc74ff7f89ff2653081e136a8658f1ddcc630f2e8a99760e08caa24196f13298272682021-08-07 14:37:4448 days 18 hrs ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.01 BNB
0xc2baaf8b4d980433c5d02d5bd0d46f155ebde3d49e0594caeb7aa2557ed99e5498268352021-08-07 14:15:2248 days 19 hrs ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.005 BNB
0xf6b0e15068643a393e3a991ff5e5d4c5ae68e1e983dd746277240affc8b22f8598267912021-08-07 14:13:1048 days 19 hrs ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.005 BNB
0xd4a478ca081b866e98403de73f8c4ffa6fc91d5ad8148bc57725958e0a0781e198252752021-08-07 12:56:3848 days 20 hrs ago 0xf00598af0ccf2d43613414f36f40123337f56e710x5ed06b57a82dddf9a5328e5035253edb247d65ff0.01 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AntfToken

Compiler Version
v0.8.1+commit.df193b15

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-06-15
*/

pragma solidity ^0.8.0;

/*
    GMEB
*/

// SPDX-License-Identifier: MIT
/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


/**
 * @dev 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);
}


/*
 * @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) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}


/**
 * @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.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping (address => uint256) private _balances;

    mapping (address => mapping (address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - 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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][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) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `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;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `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 Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `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 { }
}


contract Tax {

    event SetBurnRatio(uint _newBurnRatio);
    event SetLiquidRatio(uint _newLiquidRatio);
    event SetCharityRatio(uint _newCharityRatio);
    event SetCharityAddress(address _newCharityAddress);

    event SetMinAutoLiquid(uint _newMinAutoLiquid);

    uint private _burnRatio;
    uint private _liquidRatio;
    uint private _charityRatio;

    uint constant denominator = 10000;

    uint private _minAutoLiquid;

    address private _charityAddress;

    uint internal _totalTax;

    function _setBurnRatio(
        uint _newBurnRatio
    )
        internal
    {
        _burnRatio = _newBurnRatio;
        emit SetBurnRatio(_newBurnRatio);
    }

    function _setLiquidRatio(
        uint _newLiquidRatio
    )
        internal
    {
        _liquidRatio = _newLiquidRatio;
        emit SetLiquidRatio(_newLiquidRatio);
    }

    function _setCharityRatio(
        uint _newCharityRatio
    )
        internal
    {
        _charityRatio = _newCharityRatio;
        emit SetCharityRatio(_newCharityRatio);
    }

    function _setCharityAddress(
        address _newCharityAddress
    )
        internal
    {
        _charityAddress = _newCharityAddress;
        emit SetCharityAddress(_newCharityAddress);
    }

    function _setMinAutoLiquid(
        uint _newMinAutoLiquid
    )
        internal
    {
        _minAutoLiquid = _newMinAutoLiquid;
        emit SetMinAutoLiquid(_newMinAutoLiquid);
    }

    function burnRatio()
        public
        view
        returns(uint)
    {
        return _burnRatio;
    }

    function liquidRatio()
        public
        view
        returns(uint)
    {
        return _liquidRatio;
    }

    function charityRatio()
        public
        view
        returns(uint)
    {
        return _charityRatio;
    }

    function charityAddress()
        public
        view
        returns(address)
    {
        return _charityAddress;
    }

    function minAutoLiquid()
        public
        view
        returns(uint)
    {
        return _minAutoLiquid;
    }

    function getFeeAmounts(
        uint _amount
    )
        public
        view
        returns(uint burnA, uint taxA)
    {
        uint tmp = _amount / denominator;
        burnA = tmp * _burnRatio;
        taxA = tmp * (_liquidRatio + _charityRatio);
    }

    function _splitLiquidCharityFromTax(
        uint _maxAmount
    )
        internal
        returns(uint liquidA, uint charityA)
    {
        uint _amount = _maxAmount > _totalTax ? _totalTax : _maxAmount;
        uint tmp = _amount / (_liquidRatio + _charityRatio);
        liquidA = tmp * _liquidRatio;
        charityA = _amount - liquidA;
        // reset
        _totalTax -= _amount;
    }
}


// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.
/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler
 * now has built in overflow checking.
 */
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) {
        unchecked {
            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) {
        unchecked {
            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) {
        unchecked {
            // 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) {
        unchecked {
            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) {
        unchecked {
            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) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return 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) {
        return a * b;
    }

    /**
     * @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.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        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) {
        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) {
        unchecked {
            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.
     *
     * 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) {
        unchecked {
            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) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}


contract Sale {
    using SafeMath for uint;

    event SetPrice(uint _newPrice);
    event SetSaleAmount(uint _oldSaleAmount, uint _newSaleAmount);
    event SetSaleOwner(address payable _newSaleOwner);

    event Buy(uint _tokenAmount);

    uint private _price;
    uint private _saleAmount;

    address payable private _saleOwner;

    function _setPrice(
        uint _newPrice
    )
        internal
    {
        _price = _newPrice;
        emit SetPrice(_newPrice);
    }

    function _setSaleAmount(
        uint _newSaleAmount
    )
        internal
    {
        emit SetSaleAmount(_saleAmount, _newSaleAmount);
        _saleAmount = _newSaleAmount;
    }

    function _setSaleOwner(
        address payable _newSaleOwner
    )
        internal
    {
        _saleOwner = _newSaleOwner;
        emit SetSaleOwner(_newSaleOwner);
    }

    function _saleStop()
        internal
    {
        _setSaleAmount(0);
    }

    function _buy(
        uint value
    )
        internal
        returns(uint)
    {
        uint tokenAmount = value.mul(1 ether).div(_price);
        _saleAmount = _saleAmount.sub(tokenAmount);
        emit Buy(tokenAmount);
        _saleOwner.transfer(value);
        return tokenAmount;
    }

    function saleOwner()
        public
        view
        returns(address payable)
    {
        return _saleOwner;
    }

    function price()
        public
        view
        returns(uint)
    {
        return _price;
    }

    function saleAmount()
        public
        view
        returns(uint)
    {
        return _saleAmount;
    }
}


contract Referral {
    event AddRef(address _address, address _ref);
    event SetRefPercents(uint _newF1Percent, uint _newF2Percent, uint _newF3Percent);

    mapping(address => address) private _refOf;

    uint private _f1Percent;
    uint private _f2Percent;
    uint private _f3Percent;

    function _setRefPercents(
        uint _newF1Percent,
        uint _newF2Percent,
        uint _newF3Percent
    )
        internal
    {
        _f1Percent = _newF1Percent;
        _f2Percent = _newF2Percent;
        _f3Percent = _newF3Percent;
        emit SetRefPercents(_newF1Percent, _newF2Percent, _newF3Percent);
    }

    function _addRef(
        address _address,
        address _ref
    )
        internal
    {
        if (_refOf[_address] == address(0x0) && _address != _ref) {
            _refOf[_address] = _ref;
            emit AddRef(_address, _ref);
        }
    }

    function refOf(
        address _address
    )
        public
        view
        returns(address)
    {
        return _refOf[_address];
    }

    function f1Percent()
        public
        view
        returns(uint)
    {
        return _f1Percent;
    }

    function f2Percent()
        public
        view
        returns(uint)
    {
        return _f2Percent;
    }

    function f3Percent()
        public
        view
        returns(uint)
    {
        return _f3Percent;
    }
}


contract Claim {
    modifier onlyNotClaimed(address _claimer) {
        require(!_isClaimed[_claimer], "already claimed!");
        _;
    }

    mapping(address => bool) private _isClaimed;

    uint private _claimCost;
    uint private _claimAmount;
    uint private _refClaimAmount;

    bool private _isClaimStopped;

    function _stopClaim()
        internal
    {
        _isClaimStopped = true;
    }

    function _startClaim()
        internal
    {
        _isClaimStopped = false;
    }

    function _setClaimCost(
        uint _newClaimCost
    )
        internal
    {
        _claimCost = _newClaimCost;
    }

    function _setClaimAmount(
        uint _newClaimAmount
    )
        internal
    {
        _claimAmount = _newClaimAmount;
    }

    function _setRefClaimAmount(
        uint _newRefClaimAmount
    )
        internal
    {
        _refClaimAmount = _newRefClaimAmount;
    }

    function _claim(
        address _claimer
    )
        internal
        onlyNotClaimed(_claimer)
        returns(uint, uint)
    {
        require(!_isClaimStopped, "Claimming programm has been stopped!");
        _isClaimed[_claimer] = true;
        if (_claimCost > 0) {
            require(msg.value >= _claimCost, "claim cost a bit bnb!");
        }
        return (_claimAmount, _refClaimAmount);
    }

    function isClaimed(
        address _claimer
    )
        public
        view
        returns(bool)
    {
        return _isClaimed[_claimer];
    }

    function isClaimStopped()
        public
        view
        returns(bool)
    {
        return _isClaimStopped;
    }

    function claimCost()
        public
        view
        returns(uint)
    {
        return _claimCost;
    }

    function claimAmount()
        public
        view
        returns(uint)
    {
        return _claimAmount;
    }

    function refClaimAmount()
        public
        view
        returns(uint)
    {
        return _refClaimAmount;
    }
}


contract Admin {
    modifier onlyAdmin() {
        require(msg.sender == _admin, "is not admin!");
        _;
    }

    address private _admin;

    constructor (
        address _initAdmin
    )
    {
        _admin = _initAdmin;
    }

    function setAdmin(
        address _newAdmin
    )
        public
        onlyAdmin
    {
        _admin = _newAdmin;
    }

    function admin()
        public
        view
        returns(address)
    {
        return _admin;
    }
}


contract Whitelist {
    event AddToWhitelist(address _address);
    event RemoveFromWhitelist(address _address);

    mapping(address => bool) private _isWhitelisted;

    function _addToWhitelist(
        address _address
    )
        internal
    {
        if (_isWhitelisted[_address]) {
            return;
        }
        _isWhitelisted[_address] = true;
        emit AddToWhitelist(_address);
    }

    function _removeFromWhitelist(
        address _address
    )
        internal
    {
        if (!_isWhitelisted[_address]) {
            return;
        }
        _isWhitelisted[_address] = false;
        emit RemoveFromWhitelist(_address);
    }

    function isWhitelisted(
        address _address
    )
        public
        view
        returns(bool)
    {
        return _isWhitelisted[_address];
    }
}


contract Settings is Admin, Tax, Sale, Referral, Claim, Whitelist {
    constructor (
        address _initAdmin
    )
        Admin(_initAdmin)
    {
    }

    /*
        REFERRAL
    */

    function setRefPercents(
        uint _newF1Percent,
        uint _newF2Percent,
        uint _newF3Percent
    )
        public
        onlyAdmin
    {
        _setRefPercents(_newF1Percent, _newF2Percent, _newF3Percent);
    }

    /*
        SALE
    */

    function setPrice(
        uint _newPrice
    )
        public
        onlyAdmin
    {
        _setPrice(_newPrice);
    }

    function setSaleAmount(
        uint _newSaleAmount
    )
        public
        onlyAdmin
    {
        _setSaleAmount(_newSaleAmount);
    }

    function setSaleOwner(
        address payable _newSaleOwner
    )
        public
        onlyAdmin
    {
        _setSaleOwner(_newSaleOwner);
    }

    function saleStop()
        public
        onlyAdmin
    {
        _saleStop();
    }

    /*
        TAX
    */

    function setBurnRatio(
        uint _newBurnRatio
    )
        public
        onlyAdmin
    {
        _setBurnRatio(_newBurnRatio);
    }

    function setLiquidRatio(
        uint _newLiquidRatio
    )
        public
        onlyAdmin
    {
        _setLiquidRatio(_newLiquidRatio);
    }

    function setCharityRatio(
        uint _newCharityRatio
    )
        public
        onlyAdmin
    {
        _setCharityRatio(_newCharityRatio);
    }

    function setCharityAddress(
        address _newCharityAddress
    )
        public
        onlyAdmin
    {
        _setCharityAddress(_newCharityAddress);
    }

    function setMinAutoLiquid(
        uint _newMinAutoLiquid
    )
        public
        onlyAdmin
    {
        _setMinAutoLiquid(_newMinAutoLiquid);
    }

    /*
        WHITELIST
    */

    function addToWhitelist(
        address _address
    )
        public
        onlyAdmin
    {
        _addToWhitelist(_address);
    }

    function removeFromWhitelist(
        address _address
    )
        public
        onlyAdmin
    {
        _removeFromWhitelist(_address);
    }

    /*
        CLAIM
    */
    function setClaimCost(
        uint _newClaimCost
    )
        public
        onlyAdmin
    {
        _setClaimCost(_newClaimCost);
    }

    function setClaimAmount(
        uint _newClaimAmount
    )
        public
        onlyAdmin
    {
        _setClaimAmount(_newClaimAmount);
    }

    function setRefClaimAmount(
        uint _newRefClaimAmount
    )
        public
        onlyAdmin
    {
        _setRefClaimAmount(_newRefClaimAmount);
    }

    function stopClaim()
        public
        onlyAdmin
    {
        _stopClaim();
    }

    function startClaim()
        public
        onlyAdmin
    {
        _startClaim();
    }
}


interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract AntfToken is ERC20, Settings {
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    address constant public uniswapV2FactoryAddr = address(0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73);
    address constant public uniswapV2RouterAddr = address(0x10ED43C718714eb63d5aA57B78B54704E256024E);
    address constant public WBNBAddr = address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c);

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    address constant private ZERO_ADDRESS = address(0x0);

    uint private _lastAutoSwapLiquidBlock;

    constructor (string memory name, string memory symbol, address _initAdmin)
        ERC20(name, symbol)
        Settings(_initAdmin)
    {
        uniswapV2Router = IUniswapV2Router02(uniswapV2RouterAddr);
         // Create a uniswap pair for this new token
        address _uniswapV2Pair = IUniswapV2Factory(uniswapV2FactoryAddr)
            .createPair(address(this), WBNBAddr);
        uniswapV2Pair = _uniswapV2Pair;

        _addToWhitelist(address(this));

        uint initTotal = 1e6 * 1e9 ether;
        uint initContractBalance = 275000 * 1e9 ether;
        _mint(address(this), initContractBalance);
        _mint(_initAdmin, initTotal - initContractBalance);
        // Init
        _setSaleAmount(initTotal);
        _setMinAutoLiquid(totalSupply() * 5 / 10000);

        _setSaleOwner(payable(0x5eD06B57A82dDdf9A5328e5035253EDb247d65ff));
        _setCharityAddress(payable(0xDf2dF79841a1cc0eddA5fd20C5a2fd67406d6cBf));

        // denominator = 10000
        _setBurnRatio(200);
        _setLiquidRatio(300);
        _setCharityRatio(300);

        _setClaimAmount(100 * 1e6 ether);
        _setRefClaimAmount(50 * 1e6 ether);

        // 1 bnb = 300 bil tokens
        uint oneBnb = 320 * 1e9;
        _setPrice(1 ether / oneBnb);

        _setRefPercents(30, 15, 5);
    }

    receive() external payable {}

    function _autoSwapAndLiquify(address _from) internal {
        if (_totalTax >= minAutoLiquid() && _from != uniswapV2Pair) {
            if (block.number != _lastAutoSwapLiquidBlock) {
                _lastAutoSwapLiquidBlock = block.number;
                swapAndLiquify();
            }
        }
    }

    function swapAndLiquify() public {
        (uint liquidA, uint charityA) = _splitLiquidCharityFromTax(minAutoLiquid());
        swapTokensForEth(charityA, charityAddress());
        // split the contract balance into halves
        uint256 half = liquidA / 2;
        uint256 otherHalf = liquidA - half;
        // swap tokens for ETH
        uint initCoinBalance = address(this).balance;
        swapTokensForEth(half, address(this)); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 addedCoinBalance = address(this).balance - initCoinBalance;

        // add liquidity to uniswap
        addLiquidity(otherHalf, addedCoinBalance, charityAddress());
        
        emit SwapAndLiquify(half, addedCoinBalance, otherHalf);
    }

    function swapTokensForEth(uint256 tokenAmount, address to) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            to,
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount, address lpOwner) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            lpOwner,
            block.timestamp
        );
    }

    function _tax(
        address sender,
        address recipient,
        uint amount
    )
        internal
        returns(uint)
    {
        if (isWhitelisted(sender) || isWhitelisted(recipient)) {
            return amount;
        }
        (uint burnA, uint taxA) = getFeeAmounts(amount);
        _burn(sender, burnA);
        _transfer(sender, address(this), taxA);
        _totalTax += taxA;

        require(taxA + burnA < amount, "invalid tax amount");
        return amount - taxA - burnA;
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _autoSwapAndLiquify(_msgSender());
        uint afterTaxAmount = _tax(_msgSender(), recipient, amount);
        _transfer(_msgSender(), recipient, afterTaxAmount);

        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _autoSwapAndLiquify(sender);
        uint afterTaxAmount = _tax(sender, recipient, amount);
        _transfer(sender, recipient, afterTaxAmount);

        uint256 currentAllowance = allowance(sender, _msgSender());
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    /*
        Sale
    */

    function buy(
        address _ref
    )
        public
        payable
    {
        uint tokenAmount = _buy(msg.value);
        _transfer(address(this), _msgSender(), tokenAmount);
        _addRef(_msgSender(), _ref);

        address f1 = refOf(_msgSender());
        // stop if F1 not found
        if (f1 == ZERO_ADDRESS) {
            return;
        }
        uint onePercent = tokenAmount / 100;
        _transfer(address(this), f1, onePercent * f1Percent());

        address f2 = refOf(f1);
        // stop if F2 not found
        if (f2 == ZERO_ADDRESS) {
            return;
        }
        _transfer(address(this), f2, onePercent * f2Percent());

        address f3 = refOf(f2);
        // stop if F3 not found
        if (f3 == ZERO_ADDRESS) {
            return;
        }
        _transfer(address(this), f3, onePercent * f3Percent());
    }

    /*
        CLAIM
    */

    function claim(
        address _ref
    )
        public
        payable
    {
        require(tx.origin == msg.sender, "spammer go away!");
        (uint claimAmount, uint refClaimAmount) = _claim(msg.sender);
        _transfer(address(this), _msgSender(), claimAmount);
        _transfer(address(this), _ref, refClaimAmount);
    }

    /*
        SaleOwner
    */

    function withdraw(
        uint _amount
    )
        public
        onlyAdmin
    {
        _transfer(address(this), saleOwner(), _amount);
        require(balanceOf(address(this)) >= _totalTax, "withdraw too much!");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"address","name":"_initAdmin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"address","name":"_ref","type":"address"}],"name":"AddRef","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"}],"name":"AddToWhitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"Buy","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"}],"name":"RemoveFromWhitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newBurnRatio","type":"uint256"}],"name":"SetBurnRatio","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_newCharityAddress","type":"address"}],"name":"SetCharityAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newCharityRatio","type":"uint256"}],"name":"SetCharityRatio","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newLiquidRatio","type":"uint256"}],"name":"SetLiquidRatio","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newMinAutoLiquid","type":"uint256"}],"name":"SetMinAutoLiquid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"SetPrice","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newF1Percent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newF2Percent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newF3Percent","type":"uint256"}],"name":"SetRefPercents","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_oldSaleAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newSaleAmount","type":"uint256"}],"name":"SetSaleAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address payable","name":"_newSaleOwner","type":"address"}],"name":"SetSaleOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","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":"WBNBAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_ref","type":"address"}],"name":"buy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"charityAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"charityRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_ref","type":"address"}],"name":"claim","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"claimAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimCost","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":"f1Percent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"f2Percent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"f3Percent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"getFeeAmounts","outputs":[{"internalType":"uint256","name":"burnA","type":"uint256"},{"internalType":"uint256","name":"taxA","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isClaimStopped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_claimer","type":"address"}],"name":"isClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minAutoLiquid","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":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refClaimAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"refOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeFromWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleOwner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleStop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAdmin","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newBurnRatio","type":"uint256"}],"name":"setBurnRatio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newCharityAddress","type":"address"}],"name":"setCharityAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCharityRatio","type":"uint256"}],"name":"setCharityRatio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newClaimAmount","type":"uint256"}],"name":"setClaimAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newClaimCost","type":"uint256"}],"name":"setClaimCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLiquidRatio","type":"uint256"}],"name":"setLiquidRatio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMinAutoLiquid","type":"uint256"}],"name":"setMinAutoLiquid","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newRefClaimAmount","type":"uint256"}],"name":"setRefClaimAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newF1Percent","type":"uint256"},{"internalType":"uint256","name":"_newF2Percent","type":"uint256"},{"internalType":"uint256","name":"_newF3Percent","type":"uint256"}],"name":"setRefPercents","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newSaleAmount","type":"uint256"}],"name":"setSaleAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newSaleOwner","type":"address"}],"name":"setSaleOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2FactoryAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2RouterAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040523480156200001157600080fd5b5060405162005aea38038062005aea833981810160405281019062000037919062000a78565b8080848481600390805190602001906200005392919062000913565b5080600490805190602001906200006c92919062000913565b50505080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050507310ed43c718714eb63d5aa57b78b54704e256024e73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050600073ca143ce32fe78f1f7019d7d551a6402fc5350c7373ffffffffffffffffffffffffffffffffffffffff1663c9c653963073bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c6040518363ffffffff1660e01b81526004016200016492919062000b94565b602060405180830381600087803b1580156200017f57600080fd5b505af115801562000194573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ba919062000a4c565b90508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250506200020430620003b660201b60201c565b60006d314dc6448d9338c15b0a00000000905060006d0d8efcec73bbaf9b92a2c000000090506200023c3082620004a460201b60201c565b6200025b8482846200024f919062000dd0565b620004a460201b60201c565b6200026c826200060960201b60201c565b620002a96127106005620002856200065060201b60201c565b62000291919062000d6f565b6200029d919062000d37565b6200065a60201b60201c565b620002ce735ed06b57a82dddf9a5328e5035253edb247d65ff6200069d60201b60201c565b620002f373df2df79841a1cc0edda5fd20c5a2fd67406d6cbf6200071a60201b60201c565b6200030560c86200079760201b60201c565b6200031861012c620007da60201b60201c565b6200032b61012c6200081d60201b60201c565b620003476a52b7d2dcc80cd2e40000006200086060201b60201c565b620003636a295be96e640669720000006200086a60201b60201c565b6000644a817c800090506200039381670de0b6b3a764000062000387919062000d37565b6200087460201b60201c565b620003a9601e600f6005620008b760201b60201c565b505050505050506200100f565b601860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156200040f57620004a1565b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f75b2135d1c8c3519f3c09c43fe6527089ef09f40c7981ebf0ed46e79e79032c78160405162000498919062000b5a565b60405180910390a15b50565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000517576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200050e9062000bc1565b60405180910390fd5b6200052b600083836200090e60201b60201c565b80600260008282546200053f919062000cda565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000596919062000cda565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005fd919062000be3565b60405180910390a35050565b7f41ded198f60708206d4071dc5d4e97c70f3bce95c01b648cf719ad73fc2d72ce600d54826040516200063e92919062000c00565b60405180910390a180600d8190555050565b6000600254905090565b806009819055507f814da52c2803bbf49342e6e3a256441afba633c0e3467251ba8edd7d5db895bd8160405162000692919062000be3565b60405180910390a150565b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fc41c806c3ab6c35aa6e24d6c8edd4d1a527d9164320544cb18e04380ddbeebbd816040516200070f919062000b77565b60405180910390a150565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa3de4742668f41ee43041a21d2a1cdd8348a6b4ae41987eaf3402a5ae21c8cd6816040516200078c919062000b5a565b60405180910390a150565b806006819055507f561c0c1e2f06c2d7203866f82e9c9b966ed0ac193b3b5edc3ef2c0906242310081604051620007cf919062000be3565b60405180910390a150565b806007819055507ffee64ab17673c538d2a7798285ed1d9c5fa63efbe47296d459255767739eb0c28160405162000812919062000be3565b60405180910390a150565b806008819055507f77ca53d3f987532ecd233e8127f5ccc041862242af39151b85470ddff7506cf78160405162000855919062000be3565b60405180910390a150565b8060158190555050565b8060168190555050565b80600c819055507f4f5539c0409dfc4cb06f64cbd31237e1fbfe443f531584bf4dd77ec7fc5ba7b181604051620008ac919062000be3565b60405180910390a150565b8260108190555081601181905550806012819055507f839c6a0692c8b75cc2c5d9a0f328cd1f012e6feaa015cf52ba1207db8a123366838383604051620009019392919062000c2d565b60405180910390a1505050565b505050565b828054620009219062000e93565b90600052602060002090601f01602090048101928262000945576000855562000991565b82601f106200096057805160ff191683800117855562000991565b8280016001018555821562000991579182015b828111156200099057825182559160200191906001019062000973565b5b509050620009a09190620009a4565b5090565b5b80821115620009bf576000816000905550600101620009a5565b5090565b6000620009da620009d48462000c93565b62000c6a565b905082815260208101848484011115620009f357600080fd5b62000a0084828562000e5d565b509392505050565b60008151905062000a198162000ff5565b92915050565b600082601f83011262000a3157600080fd5b815162000a43848260208601620009c3565b91505092915050565b60006020828403121562000a5f57600080fd5b600062000a6f8482850162000a08565b91505092915050565b60008060006060848603121562000a8e57600080fd5b600084015167ffffffffffffffff81111562000aa957600080fd5b62000ab78682870162000a1f565b935050602084015167ffffffffffffffff81111562000ad557600080fd5b62000ae38682870162000a1f565b925050604062000af68682870162000a08565b9150509250925092565b62000b0b8162000e1f565b82525050565b62000b1c8162000e0b565b82525050565b600062000b31601f8362000cc9565b915062000b3e8262000fcc565b602082019050919050565b62000b548162000e53565b82525050565b600060208201905062000b71600083018462000b11565b92915050565b600060208201905062000b8e600083018462000b00565b92915050565b600060408201905062000bab600083018562000b11565b62000bba602083018462000b11565b9392505050565b6000602082019050818103600083015262000bdc8162000b22565b9050919050565b600060208201905062000bfa600083018462000b49565b92915050565b600060408201905062000c17600083018562000b49565b62000c26602083018462000b49565b9392505050565b600060608201905062000c44600083018662000b49565b62000c53602083018562000b49565b62000c62604083018462000b49565b949350505050565b600062000c7662000c89565b905062000c84828262000ec9565b919050565b6000604051905090565b600067ffffffffffffffff82111562000cb15762000cb062000f8c565b5b62000cbc8262000fbb565b9050602081019050919050565b600082825260208201905092915050565b600062000ce78262000e53565b915062000cf48362000e53565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d2c5762000d2b62000eff565b5b828201905092915050565b600062000d448262000e53565b915062000d518362000e53565b92508262000d645762000d6362000f2e565b5b828204905092915050565b600062000d7c8262000e53565b915062000d898362000e53565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000dc55762000dc462000eff565b5b828202905092915050565b600062000ddd8262000e53565b915062000dea8362000e53565b92508282101562000e005762000dff62000eff565b5b828203905092915050565b600062000e188262000e33565b9050919050565b600062000e2c8262000e33565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000e7d57808201518184015260208101905062000e60565b8381111562000e8d576000848401525b50505050565b6000600282049050600182168062000eac57607f821691505b6020821081141562000ec35762000ec262000f5d565b5b50919050565b62000ed48262000fbb565b810181811067ffffffffffffffff8211171562000ef65762000ef562000f8c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b620010008162000e0b565b81146200100c57600080fd5b50565b60805160601c60a05160601c614a8562001065600039600081816113950152612ada015260008181610eea015281816130640152818161317a015281816131a10152818161323e01526132650152614a856000f3fe6080604052600436106103855760003560e01c806391b7f5ed116101d1578063bbf1746111610102578063e43252d7116100a0578063f088d5471161006f578063f088d54714610cff578063f851a44014610d1b578063ff142f9714610d46578063ff6c9bc914610d715761038c565b8063e43252d714610c6b578063e7847a4b14610c94578063e7cbbe7314610cbf578063ecbfc07714610ce85761038c565b8063cedfe42f116100dc578063cedfe42f14610bad578063d4e66bef14610bd8578063dd62ed3e14610c03578063e416d63214610c405761038c565b8063bbf1746114610b1a578063c6c28fd014610b45578063cea2085114610b825761038c565b8063a6cee3ae1161016f578063b1c7ef0c11610149578063b1c7ef0c14610a86578063b29ad50a14610aaf578063b3890faf14610ac6578063bbe15f8214610af15761038c565b8063a6cee3ae146109f5578063a9059cbb14610a1e578063afcf2fc414610a5b5761038c565b80639a18553b116101ab5780639a18553b146109395780639a2bcd2714610964578063a035b1fe1461098d578063a457c2d7146109b85761038c565b806391b7f5ed146108bc5780639370131f146108e557806395d89b411461090e5761038c565b80633af32abf116102b657806370a0823111610254578063882f414d11610223578063882f414d146108005780638aae995a1461082b5780638ab1d681146108565780638cc080251461087f5761038c565b806370a0823114610758578063729d5591146107955780638078059c146107be578063830953ab146107d55761038c565b8063510db7ca11610290578063510db7ca1461069d5780635192c82c146106db5780635294d01114610706578063704b6c021461072f5761038c565b80633af32abf1461060c5780634974c1db1461064957806349bd5a5e146106725761038c565b80631a7140631161032357806323b872dd116102fd57806323b872dd1461053e5780632e1a7d4d1461057b578063313ce567146105a457806339509351146105cf5761038c565b80631a714063146104ce5780631e83409a146104f7578063216eff87146105135761038c565b80630c9be46d1161035f5780630c9be46d146104245780630fb8184b1461044d5780631694505e1461047857806318160ddd146104a35761038c565b806306fdde03146103915780630880f58b146103bc578063095ea7b3146103e75761038c565b3661038c57005b600080fd5b34801561039d57600080fd5b506103a6610d88565b6040516103b39190613fe2565b60405180910390f35b3480156103c857600080fd5b506103d1610e1a565b6040516103de9190614204565b60405180910390f35b3480156103f357600080fd5b5061040e60048036038101906104099190613a92565b610e24565b60405161041b9190613fac565b60405180910390f35b34801561043057600080fd5b5061044b6004803603810190610446919061398c565b610e42565b005b34801561045957600080fd5b50610462610ede565b60405161046f9190614204565b60405180910390f35b34801561048457600080fd5b5061048d610ee8565b60405161049a9190613fc7565b60405180910390f35b3480156104af57600080fd5b506104b8610f0c565b6040516104c59190614204565b60405180910390f35b3480156104da57600080fd5b506104f560048036038101906104f09190613ace565b610f16565b005b610511600480360381019061050c919061398c565b610fb2565b005b34801561051f57600080fd5b50610528611052565b6040516105359190614204565b60405180910390f35b34801561054a57600080fd5b5061056560048036038101906105609190613a43565b61105c565b6040516105729190613fac565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d9190613ace565b6110fa565b005b3480156105b057600080fd5b506105b96111ec565b6040516105c691906142d9565b60405180910390f35b3480156105db57600080fd5b506105f660048036038101906105f19190613a92565b6111f5565b6040516106039190613fac565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e919061398c565b6112a1565b6040516106409190613fac565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b9190613ace565b6112f7565b005b34801561067e57600080fd5b50610687611393565b6040516106949190613eec565b60405180910390f35b3480156106a957600080fd5b506106c460048036038101906106bf9190613ace565b6113b7565b6040516106d2929190614279565b60405180910390f35b3480156106e757600080fd5b506106f06113ff565b6040516106fd9190614204565b60405180910390f35b34801561071257600080fd5b5061072d600480360381019061072891906139de565b611409565b005b34801561073b57600080fd5b506107566004803603810190610751919061398c565b6114a5565b005b34801561076457600080fd5b5061077f600480360381019061077a919061398c565b611579565b60405161078c9190614204565b60405180910390f35b3480156107a157600080fd5b506107bc60048036038101906107b79190613af7565b6115c1565b005b3480156107ca57600080fd5b506107d3611661565b005b3480156107e157600080fd5b506107ea6116fb565b6040516107f79190614204565b60405180910390f35b34801561080c57600080fd5b50610815611705565b6040516108229190614204565b60405180910390f35b34801561083757600080fd5b5061084061170f565b60405161084d9190614204565b60405180910390f35b34801561086257600080fd5b5061087d6004803603810190610878919061398c565b611719565b005b34801561088b57600080fd5b506108a660048036038101906108a1919061398c565b6117b5565b6040516108b39190613fac565b60405180910390f35b3480156108c857600080fd5b506108e360048036038101906108de9190613ace565b61180b565b005b3480156108f157600080fd5b5061090c60048036038101906109079190613ace565b6118a7565b005b34801561091a57600080fd5b50610923611943565b6040516109309190613fe2565b60405180910390f35b34801561094557600080fd5b5061094e6119d5565b60405161095b9190614204565b60405180910390f35b34801561097057600080fd5b5061098b60048036038101906109869190613ace565b6119df565b005b34801561099957600080fd5b506109a2611a7b565b6040516109af9190614204565b60405180910390f35b3480156109c457600080fd5b506109df60048036038101906109da9190613a92565b611a85565b6040516109ec9190613fac565b60405180910390f35b348015610a0157600080fd5b50610a1c6004803603810190610a179190613ace565b611b70565b005b348015610a2a57600080fd5b50610a456004803603810190610a409190613a92565b611c0c565b604051610a529190613fac565b60405180910390f35b348015610a6757600080fd5b50610a70611c51565b604051610a7d9190613eec565b60405180910390f35b348015610a9257600080fd5b50610aad6004803603810190610aa89190613ace565b611c7b565b005b348015610abb57600080fd5b50610ac4611d17565b005b348015610ad257600080fd5b50610adb611dd4565b604051610ae89190613f07565b60405180910390f35b348015610afd57600080fd5b50610b186004803603810190610b139190613ace565b611dfe565b005b348015610b2657600080fd5b50610b2f611e9a565b604051610b3c9190614204565b60405180910390f35b348015610b5157600080fd5b50610b6c6004803603810190610b67919061398c565b611ea4565b604051610b799190613eec565b60405180910390f35b348015610b8e57600080fd5b50610b97611f0d565b604051610ba49190613eec565b60405180910390f35b348015610bb957600080fd5b50610bc2611f25565b604051610bcf9190613eec565b60405180910390f35b348015610be457600080fd5b50610bed611f3d565b604051610bfa9190613fac565b60405180910390f35b348015610c0f57600080fd5b50610c2a6004803603810190610c259190613a07565b611f54565b604051610c379190614204565b60405180910390f35b348015610c4c57600080fd5b50610c55611fdb565b604051610c629190614204565b60405180910390f35b348015610c7757600080fd5b50610c926004803603810190610c8d919061398c565b611fe5565b005b348015610ca057600080fd5b50610ca9612081565b604051610cb69190614204565b60405180910390f35b348015610ccb57600080fd5b50610ce66004803603810190610ce19190613ace565b61208b565b005b348015610cf457600080fd5b50610cfd612127565b005b610d196004803603810190610d14919061398c565b6121c1565b005b348015610d2757600080fd5b50610d30612349565b604051610d3d9190613eec565b60405180910390f35b348015610d5257600080fd5b50610d5b612373565b604051610d689190613eec565b60405180910390f35b348015610d7d57600080fd5b50610d8661238b565b005b606060038054610d979061452e565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc39061452e565b8015610e105780601f10610de557610100808354040283529160200191610e10565b820191906000526020600020905b815481529060010190602001808311610df357829003601f168201915b5050505050905090565b6000601154905090565b6000610e38610e31612425565b848461242d565b6001905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec9906140c4565b60405180910390fd5b610edb816125f8565b50565b6000601454905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9d906140c4565b60405180910390fd5b610faf81612673565b50565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101790614124565b60405180910390fd5b60008061102c336126b4565b915091506110423061103c612425565b8461284e565b61104d30848361284e565b505050565b6000600854905090565b600061106784612ac4565b6000611074858585612b4b565b905061108185858361284e565b60006110948661108f612425565b611f54565b9050838110156110d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d090614104565b60405180910390fd5b6110ed866110e5612425565b86840361242d565b6001925050509392505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461118a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611181906140c4565b60405180910390fd5b61119c30611196611dd4565b8361284e565b600b546111a830611579565b10156111e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e090614044565b60405180910390fd5b50565b60006012905090565b6000611297611202612425565b848460016000611210612425565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112929190614349565b61242d565b6001905092915050565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137e906140c4565b60405180910390fd5b61139081612c21565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000612710846113ca919061439f565b9050600654816113da91906143d0565b92506008546007546113ec9190614349565b816113f791906143d0565b915050915091565b6000600654905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611499576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611490906140c4565b60405180910390fd5b6114a281612c62565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c906140c4565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611651576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611648906140c4565b60405180910390fd5b61165c838383612cdd565b505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e8906140c4565b60405180910390fd5b6116f9612d32565b565b6000601554905090565b6000600954905090565b6000600d54905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a0906140c4565b60405180910390fd5b6117b281612d3e565b50565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461189b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611892906140c4565b60405180910390fd5b6118a481612e27565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e906140c4565b60405180910390fd5b61194081612e68565b50565b6060600480546119529061452e565b80601f016020809104026020016040519081016040528092919081815260200182805461197e9061452e565b80156119cb5780601f106119a0576101008083540402835291602001916119cb565b820191906000526020600020905b8154815290600101906020018083116119ae57829003601f168201915b5050505050905090565b6000601054905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a66906140c4565b60405180910390fd5b611a7881612ea9565b50565b6000600c54905090565b60008060016000611a94612425565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b48906141e4565b60405180910390fd5b611b65611b5c612425565b8585840361242d565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf7906140c4565b60405180910390fd5b611c0981612eee565b50565b6000611c1e611c19612425565b612ac4565b6000611c32611c2b612425565b8585612b4b565b9050611c46611c3f612425565b858361284e565b600191505092915050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d02906140c4565b60405180910390fd5b611d1481612ef8565b50565b600080611d2a611d25611705565b612f02565b91509150611d3f81611d3a611c51565b612f79565b6000600283611d4e919061439f565b905060008184611d5e919061442a565b90506000479050611d6f8330612f79565b60008147611d7d919061442a565b9050611d918382611d8c611c51565b613238565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051611dc4939291906142a2565b60405180910390a1505050505050565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e85906140c4565b60405180910390fd5b611e9781613322565b50565b6000601254905090565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b7310ed43c718714eb63d5aa57b78b54704e256024e81565b73bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c81565b6000601760009054906101000a900460ff16905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000601654905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206c906140c4565b60405180910390fd5b61207e8161332c565b50565b6000600754905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461211b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612112906140c4565b60405180910390fd5b61212481613416565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ae906140c4565b60405180910390fd5b6121bf613457565b565b60006121cc34613474565b90506121e0306121da612425565b8361284e565b6121f16121eb612425565b8361356c565b60006122036121fe612425565b611ea4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612241575050612346565b6000606483612250919061439f565b905061226f308361225f6119d5565b8461226a91906143d0565b61284e565b600061227a83611ea4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122ba5750505050612346565b6122d730826122c7610e1a565b856122d291906143d0565b61284e565b60006122e282611ea4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612323575050505050612346565b6123403082612330611e9a565b8661233b91906143d0565b61284e565b50505050505b50565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b73ca143ce32fe78f1f7019d7d551a6402fc5350c7381565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461241b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612412906140c4565b60405180910390fd5b6124236136f4565b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561249d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612494906141a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561250d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250490614084565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125eb9190614204565b60405180910390a3505050565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa3de4742668f41ee43041a21d2a1cdd8348a6b4ae41987eaf3402a5ae21c8cd6816040516126689190613eec565b60405180910390a150565b806007819055507ffee64ab17673c538d2a7798285ed1d9c5fa63efbe47296d459255767739eb0c2816040516126a99190614204565b60405180910390a150565b60008082601360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273c90614024565b60405180910390fd5b601760009054906101000a900460ff1615612795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278c906140e4565b60405180910390fd5b6001601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000601454111561283e5760145434101561283d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283490614164565b60405180910390fd5b5b6015546016549250925050915091565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b590614184565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561292e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292590614004565b60405180910390fd5b612939838383613711565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156129bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b6906140a4565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a529190614349565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ab69190614204565b60405180910390a350505050565b612acc611705565b600b5410158015612b2957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15612b48576019544314612b475743601981905550612b46611d17565b5b5b50565b6000612b56846112a1565b80612b665750612b65836112a1565b5b15612b7357819050612c1a565b600080612b7f846113b7565b91509150612b8d8683613716565b612b9886308361284e565b80600b6000828254612baa9190614349565b92505081905550838282612bbe9190614349565b10612bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf5906141c4565b60405180910390fd5b818185612c0b919061442a565b612c15919061442a565b925050505b9392505050565b806009819055507f814da52c2803bbf49342e6e3a256441afba633c0e3467251ba8edd7d5db895bd81604051612c579190614204565b60405180910390a150565b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fc41c806c3ab6c35aa6e24d6c8edd4d1a527d9164320544cb18e04380ddbeebbd81604051612cd29190613f07565b60405180910390a150565b8260108190555081601181905550806012819055507f839c6a0692c8b75cc2c5d9a0f328cd1f012e6feaa015cf52ba1207db8a123366838383604051612d25939291906142a2565b60405180910390a1505050565b612d3c6000612ea9565b565b601860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d9457612e24565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f1f756c8b089af6b33ee121fee8badac2553a2fa89c0575ea91ff8792617746c281604051612e1b9190613eec565b60405180910390a15b50565b80600c819055507f4f5539c0409dfc4cb06f64cbd31237e1fbfe443f531584bf4dd77ec7fc5ba7b181604051612e5d9190614204565b60405180910390a150565b806006819055507f561c0c1e2f06c2d7203866f82e9c9b966ed0ac193b3b5edc3ef2c0906242310081604051612e9e9190614204565b60405180910390a150565b7f41ded198f60708206d4071dc5d4e97c70f3bce95c01b648cf719ad73fc2d72ce600d5482604051612edc929190614279565b60405180910390a180600d8190555050565b8060168190555050565b8060158190555050565b6000806000600b548411612f165783612f1a565b600b545b90506000600854600754612f2e9190614349565b82612f39919061439f565b905060075481612f4991906143d0565b93508382612f57919061442a565b925081600b6000828254612f6b919061442a565b925050819055505050915091565b6000600267ffffffffffffffff811115612fbc577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612fea5781602001602082028036833780820191505090505b5090503081600081518110613028577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156130c857600080fd5b505afa1580156130dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310091906139b5565b8160018151811061313a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061319f307f00000000000000000000000000000000000000000000000000000000000000008561242d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008486426040518663ffffffff1660e01b815260040161320195949392919061421f565b600060405180830381600087803b15801561321b57600080fd5b505af115801561322f573d6000803e3d6000fd5b50505050505050565b613263307f00000000000000000000000000000000000000000000000000000000000000008561242d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71983308660008087426040518863ffffffff1660e01b81526004016132c896959493929190613f4b565b6060604051808303818588803b1580156132e157600080fd5b505af11580156132f5573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061331a9190613b46565b505050505050565b8060148190555050565b601860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561338357613413565b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f75b2135d1c8c3519f3c09c43fe6527089ef09f40c7981ebf0ed46e79e79032c78160405161340a9190613eec565b60405180910390a15b50565b806008819055507f77ca53d3f987532ecd233e8127f5ccc041862242af39151b85470ddff7506cf78160405161344c9190614204565b60405180910390a150565b6000601760006101000a81548160ff021916908315150217905550565b6000806134a6600c54613498670de0b6b3a7640000866138e190919063ffffffff16565b6138f790919063ffffffff16565b90506134bd81600d5461390d90919063ffffffff16565b600d819055507f3e32821836f4caf5b64b2c8c6b460049a9797526960d31502f7575b8da39d5ae816040516134f29190614204565b60405180910390a1600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015613562573d6000803e3d6000fd5b5080915050919050565b600073ffffffffffffffffffffffffffffffffffffffff16600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614801561363357508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156136f05780600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4b5a65160b65ceef3b5428df4099f8a83aa7b36ca454012f42958b372510d9f782826040516136e7929190613f22565b60405180910390a15b5050565b6001601760006101000a81548160ff021916908315150217905550565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161377d90614144565b60405180910390fd5b61379282600083613711565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161380f90614064565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461386f919061442a565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138d49190614204565b60405180910390a3505050565b600081836138ef91906143d0565b905092915050565b60008183613905919061439f565b905092915050565b6000818361391b919061442a565b905092915050565b60008135905061393281614a0a565b92915050565b60008151905061394781614a0a565b92915050565b60008135905061395c81614a21565b92915050565b60008135905061397181614a38565b92915050565b60008151905061398681614a38565b92915050565b60006020828403121561399e57600080fd5b60006139ac84828501613923565b91505092915050565b6000602082840312156139c757600080fd5b60006139d584828501613938565b91505092915050565b6000602082840312156139f057600080fd5b60006139fe8482850161394d565b91505092915050565b60008060408385031215613a1a57600080fd5b6000613a2885828601613923565b9250506020613a3985828601613923565b9150509250929050565b600080600060608486031215613a5857600080fd5b6000613a6686828701613923565b9350506020613a7786828701613923565b9250506040613a8886828701613962565b9150509250925092565b60008060408385031215613aa557600080fd5b6000613ab385828601613923565b9250506020613ac485828601613962565b9150509250929050565b600060208284031215613ae057600080fd5b6000613aee84828501613962565b91505092915050565b600080600060608486031215613b0c57600080fd5b6000613b1a86828701613962565b9350506020613b2b86828701613962565b9250506040613b3c86828701613962565b9150509250925092565b600080600060608486031215613b5b57600080fd5b6000613b6986828701613977565b9350506020613b7a86828701613977565b9250506040613b8b86828701613977565b9150509250925092565b6000613ba18383613bbc565b60208301905092915050565b613bb681614470565b82525050565b613bc58161445e565b82525050565b613bd48161445e565b82525050565b6000613be582614304565b613bef8185614327565b9350613bfa836142f4565b8060005b83811015613c2b578151613c128882613b95565b9750613c1d8361431a565b925050600181019050613bfe565b5085935050505092915050565b613c4181614482565b82525050565b613c50816144c5565b82525050565b613c5f816144e9565b82525050565b6000613c708261430f565b613c7a8185614338565b9350613c8a8185602086016144fb565b613c93816145ed565b840191505092915050565b6000613cab602383614338565b9150613cb6826145fe565b604082019050919050565b6000613cce601083614338565b9150613cd98261464d565b602082019050919050565b6000613cf1601283614338565b9150613cfc82614676565b602082019050919050565b6000613d14602283614338565b9150613d1f8261469f565b604082019050919050565b6000613d37602283614338565b9150613d42826146ee565b604082019050919050565b6000613d5a602683614338565b9150613d658261473d565b604082019050919050565b6000613d7d600d83614338565b9150613d888261478c565b602082019050919050565b6000613da0602483614338565b9150613dab826147b5565b604082019050919050565b6000613dc3602883614338565b9150613dce82614804565b604082019050919050565b6000613de6601083614338565b9150613df182614853565b602082019050919050565b6000613e09602183614338565b9150613e148261487c565b604082019050919050565b6000613e2c601583614338565b9150613e37826148cb565b602082019050919050565b6000613e4f602583614338565b9150613e5a826148f4565b604082019050919050565b6000613e72602483614338565b9150613e7d82614943565b604082019050919050565b6000613e95601283614338565b9150613ea082614992565b602082019050919050565b6000613eb8602583614338565b9150613ec3826149bb565b604082019050919050565b613ed7816144ae565b82525050565b613ee6816144b8565b82525050565b6000602082019050613f016000830184613bcb565b92915050565b6000602082019050613f1c6000830184613bad565b92915050565b6000604082019050613f376000830185613bcb565b613f446020830184613bcb565b9392505050565b600060c082019050613f606000830189613bcb565b613f6d6020830188613ece565b613f7a6040830187613c56565b613f876060830186613c56565b613f946080830185613bcb565b613fa160a0830184613ece565b979650505050505050565b6000602082019050613fc16000830184613c38565b92915050565b6000602082019050613fdc6000830184613c47565b92915050565b60006020820190508181036000830152613ffc8184613c65565b905092915050565b6000602082019050818103600083015261401d81613c9e565b9050919050565b6000602082019050818103600083015261403d81613cc1565b9050919050565b6000602082019050818103600083015261405d81613ce4565b9050919050565b6000602082019050818103600083015261407d81613d07565b9050919050565b6000602082019050818103600083015261409d81613d2a565b9050919050565b600060208201905081810360008301526140bd81613d4d565b9050919050565b600060208201905081810360008301526140dd81613d70565b9050919050565b600060208201905081810360008301526140fd81613d93565b9050919050565b6000602082019050818103600083015261411d81613db6565b9050919050565b6000602082019050818103600083015261413d81613dd9565b9050919050565b6000602082019050818103600083015261415d81613dfc565b9050919050565b6000602082019050818103600083015261417d81613e1f565b9050919050565b6000602082019050818103600083015261419d81613e42565b9050919050565b600060208201905081810360008301526141bd81613e65565b9050919050565b600060208201905081810360008301526141dd81613e88565b9050919050565b600060208201905081810360008301526141fd81613eab565b9050919050565b60006020820190506142196000830184613ece565b92915050565b600060a0820190506142346000830188613ece565b6142416020830187613c56565b81810360408301526142538186613bda565b90506142626060830185613bcb565b61426f6080830184613ece565b9695505050505050565b600060408201905061428e6000830185613ece565b61429b6020830184613ece565b9392505050565b60006060820190506142b76000830186613ece565b6142c46020830185613ece565b6142d16040830184613ece565b949350505050565b60006020820190506142ee6000830184613edd565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614354826144ae565b915061435f836144ae565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561439457614393614560565b5b828201905092915050565b60006143aa826144ae565b91506143b5836144ae565b9250826143c5576143c461458f565b5b828204905092915050565b60006143db826144ae565b91506143e6836144ae565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561441f5761441e614560565b5b828202905092915050565b6000614435826144ae565b9150614440836144ae565b92508282101561445357614452614560565b5b828203905092915050565b60006144698261448e565b9050919050565b600061447b8261448e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006144d0826144d7565b9050919050565b60006144e28261448e565b9050919050565b60006144f4826144ae565b9050919050565b60005b838110156145195780820151818401526020810190506144fe565b83811115614528576000848401525b50505050565b6000600282049050600182168061454657607f821691505b6020821081141561455a576145596145be565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f616c726561647920636c61696d65642100000000000000000000000000000000600082015250565b7f776974686472617720746f6f206d756368210000000000000000000000000000600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f6973206e6f742061646d696e2100000000000000000000000000000000000000600082015250565b7f436c61696d6d696e672070726f6772616d6d20686173206265656e2073746f7060008201527f7065642100000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f7370616d6d657220676f20617761792100000000000000000000000000000000600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f636c61696d20636f737420612062697420626e62210000000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f696e76616c69642074617820616d6f756e740000000000000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b614a138161445e565b8114614a1e57600080fd5b50565b614a2a81614470565b8114614a3557600080fd5b50565b614a41816144ae565b8114614a4c57600080fd5b5056fea2646970667358221220f5c1bde7e1b6f46e87a68bea4e907c191b30de116efa334fdb6eac6b96c6704a64736f6c63430008010033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000b8ab670d6f527dd70785320292142d85fa7e0da7000000000000000000000000000000000000000000000000000000000000000c616e74732e66696e616e636500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004414e544600000000000000000000000000000000000000000000000000000000

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000b8ab670d6f527dd70785320292142d85fa7e0da7000000000000000000000000000000000000000000000000000000000000000c616e74732e66696e616e636500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004414e544600000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name (string): ants.finance
Arg [1] : symbol (string): ANTF
Arg [2] : _initAdmin (address): 0xb8ab670d6f527dd70785320292142d85fa7e0da7

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 000000000000000000000000b8ab670d6f527dd70785320292142d85fa7e0da7
Arg [3] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [4] : 616e74732e66696e616e63650000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [6] : 414e544600000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

35052:7362:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6203:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27615:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8370:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32873:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29553:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35536:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7323:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32547:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41790:344;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16881:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40253:566;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42179:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7165:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9888:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31150:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33049:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35594:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17277:268;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;16631:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32101:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30196:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7494:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31530:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32265:90;;;;;;;;;;;;;:::i;:::-;;29676:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17146:123;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26281:117;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33405:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29255:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31807:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32394:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6422:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27492:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31944:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26166:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10606:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33910:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39946:299;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17010:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33749:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37438:831;;;;;;;;;;;;;:::i;:::-;;26032:126;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33596:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27738:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27332:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35337:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35441:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29420:125;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8072:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29803:125;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33255:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16754:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32708:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34183:94;;;;;;;;;;;;;:::i;:::-;;40859:890;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30334:110;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35232:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34083:92;;;;;;;;;;;;;:::i;:::-;;6203:100;6257:13;6290:5;6283:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6203:100;:::o;27615:115::-;27683:4;27712:10;;27705:17;;27615:115;:::o;8370:169::-;8453:4;8470:39;8479:12;:10;:12::i;:::-;8493:7;8502:6;8470:8;:39::i;:::-;8527:4;8520:11;;8370:169;;;;:::o;32873:168::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32995:38:::1;33014:18;32995;:38::i;:::-;32873:168:::0;:::o;29553:115::-;29621:4;29650:10;;29643:17;;29553:115;:::o;35536:51::-;;;:::o;7323:108::-;7384:7;7411:12;;7404:19;;7323:108;:::o;32547:153::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32660:32:::1;32676:15;32660;:32::i;:::-;32547:153:::0;:::o;41790:344::-;41905:10;41892:23;;:9;:23;;;41884:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;41948:16;41966:19;41989:18;41996:10;41989:6;:18::i;:::-;41947:60;;;;42018:51;42036:4;42043:12;:10;:12::i;:::-;42057:11;42018:9;:51::i;:::-;42080:46;42098:4;42105;42111:14;42080:9;:46::i;:::-;41790:344;;;:::o;16881:121::-;16952:4;16981:13;;16974:20;;16881:121;:::o;40253:566::-;40359:4;40376:27;40396:6;40376:19;:27::i;:::-;40414:19;40436:31;40441:6;40449:9;40460:6;40436:4;:31::i;:::-;40414:53;;40478:44;40488:6;40496:9;40507:14;40478:9;:44::i;:::-;40535:24;40562:31;40572:6;40580:12;:10;:12::i;:::-;40562:9;:31::i;:::-;40535:58;;40632:6;40612:16;:26;;40604:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;40719:57;40728:6;40736:12;:10;:12::i;:::-;40769:6;40750:16;:25;40719:8;:57::i;:::-;40807:4;40800:11;;;;40253:566;;;;;:::o;42179:232::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;42278::::1;42296:4;42303:11;:9;:11::i;:::-;42316:7;42278:9;:46::i;:::-;42371:9;;42343:24;42361:4;42343:9;:24::i;:::-;:37;;42335:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42179:232:::0;:::o;7165:93::-;7223:5;7248:2;7241:9;;7165:93;:::o;9888:215::-;9976:4;9993:80;10002:12;:10;:12::i;:::-;10016:7;10062:10;10025:11;:25;10037:12;:10;:12::i;:::-;10025:25;;;;;;;;;;;;;;;:34;10051:7;10025:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;9993:8;:80::i;:::-;10091:4;10084:11;;9888:215;;;;:::o;31150:165::-;31254:4;31283:14;:24;31298:8;31283:24;;;;;;;;;;;;;;;;;;;;;;;;;31276:31;;31150:165;;;:::o;33049:161::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;33166:36:::1;33184:17;33166;:36::i;:::-;33049:161:::0;:::o;35594:38::-;;;:::o;17277:268::-;17377:10;17389:9;17416:8;15532:5;17427:7;:21;;;;:::i;:::-;17416:32;;17473:10;;17467:3;:16;;;;:::i;:::-;17459:24;;17523:13;;17508:12;;:28;;;;:::i;:::-;17501:3;:36;;;;:::i;:::-;17494:43;;17277:268;;;;:::o;16631:115::-;16699:4;16728:10;;16721:17;;16631:115;:::o;32101:156::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32221:28:::1;32235:13;32221;:28::i;:::-;32101:156:::0;:::o;30196:130::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;30309:9:::1;30300:6;;:18;;;;;;;;;;;;;;;;;;30196:130:::0;:::o;7494:127::-;7568:7;7595:9;:18;7605:7;7595:18;;;;;;;;;;;;;;;;7588:25;;7494:127;;;:::o;31530:237::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;31699:60:::1;31715:13;31730;31745;31699:15;:60::i;:::-;31530:237:::0;;;:::o;32265:90::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32336:11:::1;:9;:11::i;:::-;32265:90::o:0;29676:119::-;29746:4;29775:12;;29768:19;;29676:119;:::o;17146:123::-;17218:4;17247:14;;17240:21;;17146:123;:::o;26281:117::-;26350:4;26379:11;;26372:18;;26281:117;:::o;33405:152::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;33519:30:::1;33540:8;33519:20;:30::i;:::-;33405:152:::0;:::o;29255:157::-;29355:4;29384:10;:20;29395:8;29384:20;;;;;;;;;;;;;;;;;;;;;;;;;29377:27;;29255:157;;;:::o;31807:129::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;31908:20:::1;31918:9;31908;:20::i;:::-;31807:129:::0;:::o;32394:145::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32503:28:::1;32517:13;32503;:28::i;:::-;32394:145:::0;:::o;6422:104::-;6478:13;6511:7;6504:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6422:104;:::o;27492:115::-;27560:4;27589:10;;27582:17;;27492:115;:::o;31944:149::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32055:30:::1;32070:14;32055;:30::i;:::-;31944:149:::0;:::o;26166:107::-;26230:4;26259:6;;26252:13;;26166:107;:::o;10606:413::-;10699:4;10716:24;10743:11;:25;10755:12;:10;:12::i;:::-;10743:25;;;;;;;;;;;;;;;:34;10769:7;10743:34;;;;;;;;;;;;;;;;10716:61;;10816:15;10796:16;:35;;10788:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;10909:67;10918:12;:10;:12::i;:::-;10932:7;10960:15;10941:16;:34;10909:8;:67::i;:::-;11007:4;11000:11;;;10606:413;;;;:::o;33910:165::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;34029:38:::1;34048:18;34029;:38::i;:::-;33910:165:::0;:::o;39946:299::-;40032:4;40049:33;40069:12;:10;:12::i;:::-;40049:19;:33::i;:::-;40093:19;40115:37;40120:12;:10;:12::i;:::-;40134:9;40145:6;40115:4;:37::i;:::-;40093:59;;40163:50;40173:12;:10;:12::i;:::-;40187:9;40198:14;40163:9;:50::i;:::-;40233:4;40226:11;;;39946:299;;;;:::o;17010:128::-;17083:7;17115:15;;;;;;;;;;;17108:22;;17010:128;:::o;33749:153::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;33862:32:::1;33878:15;33862;:32::i;:::-;33749:153:::0;:::o;37438:831::-;37483:12;37497:13;37514:43;37541:15;:13;:15::i;:::-;37514:26;:43::i;:::-;37482:75;;;;37568:44;37585:8;37595:16;:14;:16::i;:::-;37568;:44::i;:::-;37674:12;37699:1;37689:7;:11;;;;:::i;:::-;37674:26;;37711:17;37741:4;37731:7;:14;;;;:::i;:::-;37711:34;;37788:20;37811:21;37788:44;;37843:37;37860:4;37874;37843:16;:37::i;:::-;38011:24;38062:15;38038:21;:39;;;;:::i;:::-;38011:66;;38127:59;38140:9;38151:16;38169;:14;:16::i;:::-;38127:12;:59::i;:::-;38212:49;38227:4;38233:16;38251:9;38212:49;;;;;;;;:::i;:::-;;;;;;;;37438:831;;;;;;:::o;26032:126::-;26100:15;26140:10;;;;;;;;;;;26133:17;;26032:126;:::o;33596:145::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;33705:28:::1;33719:13;33705;:28::i;:::-;33596:145:::0;:::o;27738:115::-;27806:4;27835:10;;27828:17;;27738:115;:::o;27332:152::-;27428:7;27460:6;:16;27467:8;27460:16;;;;;;;;;;;;;;;;;;;;;;;;;27453:23;;27332:152;;;:::o;35337:97::-;35391:42;35337:97;:::o;35441:86::-;35484:42;35441:86;:::o;29420:125::-;29493:4;29522:15;;;;;;;;;;;29515:22;;29420:125;:::o;8072:151::-;8161:7;8188:11;:18;8200:5;8188:18;;;;;;;;;;;;;;;:27;8207:7;8188:27;;;;;;;;;;;;;;;;8181:34;;8072:151;;;;:::o;29803:125::-;29876:4;29905:15;;29898:22;;29803:125;:::o;33255:142::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;33364:25:::1;33380:8;33364:15;:25::i;:::-;33255:142:::0;:::o;16754:119::-;16824:4;16853:12;;16846:19;;16754:119;:::o;32708:157::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32823:34:::1;32840:16;32823;:34::i;:::-;32708:157:::0;:::o;34183:94::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;34256:13:::1;:11;:13::i;:::-;34183:94::o:0;40859:890::-;40951:16;40970:15;40975:9;40970:4;:15::i;:::-;40951:34;;40996:51;41014:4;41021:12;:10;:12::i;:::-;41035:11;40996:9;:51::i;:::-;41058:27;41066:12;:10;:12::i;:::-;41080:4;41058:7;:27::i;:::-;41098:10;41111:19;41117:12;:10;:12::i;:::-;41111:5;:19::i;:::-;41098:32;;35689:3;41178:18;;:2;:18;;;41174:57;;;41213:7;;;;41174:57;41241:15;41273:3;41259:11;:17;;;;:::i;:::-;41241:35;;41287:54;41305:4;41312:2;41329:11;:9;:11::i;:::-;41316:10;:24;;;;:::i;:::-;41287:9;:54::i;:::-;41354:10;41367:9;41373:2;41367:5;:9::i;:::-;41354:22;;35689:3;41424:18;;:2;:18;;;41420:57;;;41459:7;;;;;;41420:57;41487:54;41505:4;41512:2;41529:11;:9;:11::i;:::-;41516:10;:24;;;;:::i;:::-;41487:9;:54::i;:::-;41554:10;41567:9;41573:2;41567:5;:9::i;:::-;41554:22;;35689:3;41624:18;;:2;:18;;;41620:57;;;41659:7;;;;;;;41620:57;41687:54;41705:4;41712:2;41729:11;:9;:11::i;:::-;41716:10;:24;;;;:::i;:::-;41687:9;:54::i;:::-;40859:890;;;;;;;:::o;30334:110::-;30398:7;30430:6;;;;;;;;;;;30423:13;;30334:110;:::o;35232:98::-;35287:42;35232:98;:::o;34083:92::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;34155:12:::1;:10;:12::i;:::-;34083:92::o:0;3882:98::-;3935:7;3962:10;3955:17;;3882:98;:::o;14075:346::-;14194:1;14177:19;;:5;:19;;;;14169:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14275:1;14256:21;;:7;:21;;;;14248:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14359:6;14329:11;:18;14341:5;14329:18;;;;;;;;;;;;;;;:27;14348:7;14329:27;;;;;;;;;;;;;;;:36;;;;14397:7;14381:32;;14390:5;14381:32;;;14406:6;14381:32;;;;;;:::i;:::-;;;;;;;;14075:346;;;:::o;16218:203::-;16342:18;16324:15;;:36;;;;;;;;;;;;;;;;;;16376:37;16394:18;16376:37;;;;;;:::i;:::-;;;;;;;;16218:203;:::o;15832:182::-;15944:15;15929:12;:30;;;;15975:31;15990:15;15975:31;;;;;;:::i;:::-;;;;;;;;15832:182;:::o;28826:421::-;28945:4;28951;28918:8;27946:10;:20;27957:8;27946:20;;;;;;;;;;;;;;;;;;;;;;;;;27945:21;27937:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;28982:15:::1;;;;;;;;;;;28981:16;28973:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;29072:4;29049:10;:20;29060:8;29049:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;29104:1;29091:10;;:14;29087:104;;;29143:10;;29130:9;:23;;29122:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;29087:104;29209:12;;29223:15;;29201:38;;;;28826:421:::0;;;;:::o;11509:640::-;11633:1;11615:20;;:6;:20;;;;11607:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11717:1;11696:23;;:9;:23;;;;11688:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11772:47;11793:6;11801:9;11812:6;11772:20;:47::i;:::-;11832:21;11856:9;:17;11866:6;11856:17;;;;;;;;;;;;;;;;11832:41;;11909:6;11892:13;:23;;11884:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12030:6;12014:13;:22;11994:9;:17;12004:6;11994:17;;;;;;;;;;;;;;;:42;;;;12082:6;12058:9;:20;12068:9;12058:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;12123:9;12106:35;;12115:6;12106:35;;;12134:6;12106:35;;;;;;:::i;:::-;;;;;;;;11509:640;;;;:::o;37118:312::-;37199:15;:13;:15::i;:::-;37186:9;;:28;;:54;;;;;37227:13;37218:22;;:5;:22;;;;37186:54;37182:241;;;37277:24;;37261:12;:40;37257:155;;37349:12;37322:24;:39;;;;37380:16;:14;:16::i;:::-;37257:155;37182:241;37118:312;:::o;39413:525::-;39544:4;39570:21;39584:6;39570:13;:21::i;:::-;:49;;;;39595:24;39609:9;39595:13;:24::i;:::-;39570:49;39566:95;;;39643:6;39636:13;;;;39566:95;39672:10;39684:9;39697:21;39711:6;39697:13;:21::i;:::-;39671:47;;;;39729:20;39735:6;39743:5;39729;:20::i;:::-;39760:38;39770:6;39786:4;39793;39760:9;:38::i;:::-;39822:4;39809:9;;:17;;;;;;;:::i;:::-;;;;;;;;39862:6;39854:5;39847:4;:12;;;;:::i;:::-;:21;39839:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;39925:5;39918:4;39909:6;:13;;;;:::i;:::-;:21;;;;:::i;:::-;39902:28;;;;39413:525;;;;;;:::o;16429:194::-;16547:17;16530:14;:34;;;;16580:35;16597:17;16580:35;;;;;;:::i;:::-;;;;;;;;16429:194;:::o;25440:181::-;25557:13;25544:10;;:26;;;;;;;;;;;;;;;;;;25586:27;25599:13;25586:27;;;;;;:::i;:::-;;;;;;;;25440:181;:::o;26715:336::-;26881:13;26868:10;:26;;;;26918:13;26905:10;:26;;;;26955:13;26942:10;:26;;;;26984:59;26999:13;27014;27029;26984:59;;;;;;;;:::i;:::-;;;;;;;;26715:336;;;:::o;25629:80::-;25684:17;25699:1;25684:14;:17::i;:::-;25629:80::o;30885:257::-;30988:14;:24;31003:8;30988:24;;;;;;;;;;;;;;;;;;;;;;;;;30983:64;;31029:7;;30983:64;31084:5;31057:14;:24;31072:8;31057:24;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;31105:29;31125:8;31105:29;;;;;;:::i;:::-;;;;;;;;30885:257;;:::o;25089:146::-;25183:9;25174:6;:18;;;;25208:19;25217:9;25208:19;;;;;;:::i;:::-;;;;;;;;25089:146;:::o;15654:170::-;15760:13;15747:10;:26;;;;15789:27;15802:13;15789:27;;;;;;:::i;:::-;;;;;;;;15654:170;:::o;25243:189::-;25343:42;25357:11;;25370:14;25343:42;;;;;;;:::i;:::-;;;;;;;;25410:14;25396:11;:28;;;;25243:189;:::o;28671:147::-;28792:18;28774:15;:36;;;;28671:147;:::o;28528:135::-;28640:15;28625:12;:30;;;;28528:135;:::o;17553:408::-;17657:12;17671:13;17702:12;17730:9;;17717:10;:22;:47;;17754:10;17717:47;;;17742:9;;17717:47;17702:62;;17775:8;17812:13;;17797:12;;:28;;;;:::i;:::-;17786:7;:40;;;;:::i;:::-;17775:51;;17853:12;;17847:3;:18;;;;:::i;:::-;17837:28;;17897:7;17887;:17;;;;:::i;:::-;17876:28;;17946:7;17933:9;;:20;;;;;;;:::i;:::-;;;;;;;;17553:408;;;;;:::o;38277:590::-;38415:21;38453:1;38439:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38415:40;;38484:4;38466;38471:1;38466:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;38510:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38500:4;38505:1;38500:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;38545:62;38562:4;38577:15;38595:11;38545:8;:62::i;:::-;38646:15;:66;;;38727:11;38753:1;38797:4;38816:2;38833:15;38646:213;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38277:590;;;:::o;38875:530::-;39040:62;39057:4;39072:15;39090:11;39040:8;:62::i;:::-;39145:15;:31;;;39184:9;39217:4;39237:11;39263:1;39306;39349:7;39371:15;39145:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;38875:530;;;:::o;28393:127::-;28499:13;28486:10;:26;;;;28393:127;:::o;30632:245::-;30729:14;:24;30744:8;30729:24;;;;;;;;;;;;;;;;;;;;;;;;;30725:63;;;30770:7;;30725:63;30825:4;30798:14;:24;30813:8;30798:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;30845:24;30860:8;30845:24;;;;;;:::i;:::-;;;;;;;;30632:245;;:::o;16022:188::-;16137:16;16121:13;:32;;;;16169:33;16185:16;16169:33;;;;;;:::i;:::-;;;;;;;;16022:188;:::o;28297:88::-;28372:5;28354:15;;:23;;;;;;;;;;;;;;;;;;28297:88::o;25717:307::-;25794:4;25816:16;25835:30;25858:6;;25835:18;25845:7;25835:5;:9;;:18;;;;:::i;:::-;:22;;:30;;;;:::i;:::-;25816:49;;25890:28;25906:11;25890;;:15;;:28;;;;:::i;:::-;25876:11;:42;;;;25934:16;25938:11;25934:16;;;;;;:::i;:::-;;;;;;;;25961:10;;;;;;;;;;;:19;;:26;25981:5;25961:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26005:11;25998:18;;;25717:307;;;:::o;27059:265::-;27199:3;27171:32;;:6;:16;27178:8;27171:16;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;:52;;;;;27219:4;27207:16;;:8;:16;;;;27171:52;27167:150;;;27259:4;27240:6;:16;27247:8;27240:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;27283:22;27290:8;27300:4;27283:22;;;;;;;:::i;:::-;;;;;;;;27167:150;27059:265;;:::o;28203:86::-;28277:4;28259:15;;:22;;;;;;;;;;;;;;;;;;28203:86::o;15024:92::-;;;;:::o;13107:530::-;13210:1;13191:21;;:7;:21;;;;13183:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13263:49;13284:7;13301:1;13305:6;13263:20;:49::i;:::-;13325:22;13350:9;:18;13360:7;13350:18;;;;;;;;;;;;;;;;13325:43;;13405:6;13387:14;:24;;13379:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13524:6;13507:14;:23;13486:9;:18;13496:7;13486:18;;;;;;;;;;;;;;;:44;;;;13568:6;13552:12;;:22;;;;;;;:::i;:::-;;;;;;;;13618:1;13592:37;;13601:7;13592:37;;;13622:6;13592:37;;;;;;:::i;:::-;;;;;;;;13107:530;;;:::o;21407:98::-;21465:7;21496:1;21492;:5;;;;:::i;:::-;21485:12;;21407:98;;;;:::o;21806:::-;21864:7;21895:1;21891;:5;;;;:::i;:::-;21884:12;;21806:98;;;;:::o;21050:::-;21108:7;21139:1;21135;:5;;;;:::i;:::-;21128:12;;21050:98;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:155::-;;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;361:95;;;;:::o;462:139::-;;546:6;533:20;524:29;;562:33;589:5;562:33;:::i;:::-;514:87;;;;:::o;607:143::-;;695:6;689:13;680:22;;711:33;738:5;711:33;:::i;:::-;670:80;;;;:::o;756:262::-;;864:2;852:9;843:7;839:23;835:32;832:2;;;880:1;877;870:12;832:2;923:1;948:53;993:7;984:6;973:9;969:22;948:53;:::i;:::-;938:63;;894:117;822:196;;;;:::o;1024:284::-;;1143:2;1131:9;1122:7;1118:23;1114:32;1111:2;;;1159:1;1156;1149:12;1111:2;1202:1;1227:64;1283:7;1274:6;1263:9;1259:22;1227:64;:::i;:::-;1217:74;;1173:128;1101:207;;;;:::o;1314:278::-;;1430:2;1418:9;1409:7;1405:23;1401:32;1398:2;;;1446:1;1443;1436:12;1398:2;1489:1;1514:61;1567:7;1558:6;1547:9;1543:22;1514:61;:::i;:::-;1504:71;;1460:125;1388:204;;;;:::o;1598:407::-;;;1723:2;1711:9;1702:7;1698:23;1694:32;1691:2;;;1739:1;1736;1729:12;1691:2;1782:1;1807:53;1852:7;1843:6;1832:9;1828:22;1807:53;:::i;:::-;1797:63;;1753:117;1909:2;1935:53;1980:7;1971:6;1960:9;1956:22;1935:53;:::i;:::-;1925:63;;1880:118;1681:324;;;;;:::o;2011:552::-;;;;2153:2;2141:9;2132:7;2128:23;2124:32;2121:2;;;2169:1;2166;2159:12;2121:2;2212:1;2237:53;2282:7;2273:6;2262:9;2258:22;2237:53;:::i;:::-;2227:63;;2183:117;2339:2;2365:53;2410:7;2401:6;2390:9;2386:22;2365:53;:::i;:::-;2355:63;;2310:118;2467:2;2493:53;2538:7;2529:6;2518:9;2514:22;2493:53;:::i;:::-;2483:63;;2438:118;2111:452;;;;;:::o;2569:407::-;;;2694:2;2682:9;2673:7;2669:23;2665:32;2662:2;;;2710:1;2707;2700:12;2662:2;2753:1;2778:53;2823:7;2814:6;2803:9;2799:22;2778:53;:::i;:::-;2768:63;;2724:117;2880:2;2906:53;2951:7;2942:6;2931:9;2927:22;2906:53;:::i;:::-;2896:63;;2851:118;2652:324;;;;;:::o;2982:262::-;;3090:2;3078:9;3069:7;3065:23;3061:32;3058:2;;;3106:1;3103;3096:12;3058:2;3149:1;3174:53;3219:7;3210:6;3199:9;3195:22;3174:53;:::i;:::-;3164:63;;3120:117;3048:196;;;;:::o;3250:552::-;;;;3392:2;3380:9;3371:7;3367:23;3363:32;3360:2;;;3408:1;3405;3398:12;3360:2;3451:1;3476:53;3521:7;3512:6;3501:9;3497:22;3476:53;:::i;:::-;3466:63;;3422:117;3578:2;3604:53;3649:7;3640:6;3629:9;3625:22;3604:53;:::i;:::-;3594:63;;3549:118;3706:2;3732:53;3777:7;3768:6;3757:9;3753:22;3732:53;:::i;:::-;3722:63;;3677:118;3350:452;;;;;:::o;3808:596::-;;;;3961:2;3949:9;3940:7;3936:23;3932:32;3929:2;;;3977:1;3974;3967:12;3929:2;4020:1;4045:64;4101:7;4092:6;4081:9;4077:22;4045:64;:::i;:::-;4035:74;;3991:128;4158:2;4184:64;4240:7;4231:6;4220:9;4216:22;4184:64;:::i;:::-;4174:74;;4129:129;4297:2;4323:64;4379:7;4370:6;4359:9;4355:22;4323:64;:::i;:::-;4313:74;;4268:129;3919:485;;;;;:::o;4410:179::-;;4500:46;4542:3;4534:6;4500:46;:::i;:::-;4578:4;4573:3;4569:14;4555:28;;4490:99;;;;:::o;4595:142::-;4698:32;4724:5;4698:32;:::i;:::-;4693:3;4686:45;4676:61;;:::o;4743:108::-;4820:24;4838:5;4820:24;:::i;:::-;4815:3;4808:37;4798:53;;:::o;4857:118::-;4944:24;4962:5;4944:24;:::i;:::-;4939:3;4932:37;4922:53;;:::o;5011:732::-;;5159:54;5207:5;5159:54;:::i;:::-;5229:86;5308:6;5303:3;5229:86;:::i;:::-;5222:93;;5339:56;5389:5;5339:56;:::i;:::-;5418:7;5449:1;5434:284;5459:6;5456:1;5453:13;5434:284;;;5535:6;5529:13;5562:63;5621:3;5606:13;5562:63;:::i;:::-;5555:70;;5648:60;5701:6;5648:60;:::i;:::-;5638:70;;5494:224;5481:1;5478;5474:9;5469:14;;5434:284;;;5438:14;5734:3;5727:10;;5135:608;;;;;;;:::o;5749:109::-;5830:21;5845:5;5830:21;:::i;:::-;5825:3;5818:34;5808:50;;:::o;5864:185::-;5978:64;6036:5;5978:64;:::i;:::-;5973:3;5966:77;5956:93;;:::o;6055:147::-;6150:45;6189:5;6150:45;:::i;:::-;6145:3;6138:58;6128:74;;:::o;6208:364::-;;6324:39;6357:5;6324:39;:::i;:::-;6379:71;6443:6;6438:3;6379:71;:::i;:::-;6372:78;;6459:52;6504:6;6499:3;6492:4;6485:5;6481:16;6459:52;:::i;:::-;6536:29;6558:6;6536:29;:::i;:::-;6531:3;6527:39;6520:46;;6300:272;;;;;:::o;6578:366::-;;6741:67;6805:2;6800:3;6741:67;:::i;:::-;6734:74;;6817:93;6906:3;6817:93;:::i;:::-;6935:2;6930:3;6926:12;6919:19;;6724:220;;;:::o;6950:366::-;;7113:67;7177:2;7172:3;7113:67;:::i;:::-;7106:74;;7189:93;7278:3;7189:93;:::i;:::-;7307:2;7302:3;7298:12;7291:19;;7096:220;;;:::o;7322:366::-;;7485:67;7549:2;7544:3;7485:67;:::i;:::-;7478:74;;7561:93;7650:3;7561:93;:::i;:::-;7679:2;7674:3;7670:12;7663:19;;7468:220;;;:::o;7694:366::-;;7857:67;7921:2;7916:3;7857:67;:::i;:::-;7850:74;;7933:93;8022:3;7933:93;:::i;:::-;8051:2;8046:3;8042:12;8035:19;;7840:220;;;:::o;8066:366::-;;8229:67;8293:2;8288:3;8229:67;:::i;:::-;8222:74;;8305:93;8394:3;8305:93;:::i;:::-;8423:2;8418:3;8414:12;8407:19;;8212:220;;;:::o;8438:366::-;;8601:67;8665:2;8660:3;8601:67;:::i;:::-;8594:74;;8677:93;8766:3;8677:93;:::i;:::-;8795:2;8790:3;8786:12;8779:19;;8584:220;;;:::o;8810:366::-;;8973:67;9037:2;9032:3;8973:67;:::i;:::-;8966:74;;9049:93;9138:3;9049:93;:::i;:::-;9167:2;9162:3;9158:12;9151:19;;8956:220;;;:::o;9182:366::-;;9345:67;9409:2;9404:3;9345:67;:::i;:::-;9338:74;;9421:93;9510:3;9421:93;:::i;:::-;9539:2;9534:3;9530:12;9523:19;;9328:220;;;:::o;9554:366::-;;9717:67;9781:2;9776:3;9717:67;:::i;:::-;9710:74;;9793:93;9882:3;9793:93;:::i;:::-;9911:2;9906:3;9902:12;9895:19;;9700:220;;;:::o;9926:366::-;;10089:67;10153:2;10148:3;10089:67;:::i;:::-;10082:74;;10165:93;10254:3;10165:93;:::i;:::-;10283:2;10278:3;10274:12;10267:19;;10072:220;;;:::o;10298:366::-;;10461:67;10525:2;10520:3;10461:67;:::i;:::-;10454:74;;10537:93;10626:3;10537:93;:::i;:::-;10655:2;10650:3;10646:12;10639:19;;10444:220;;;:::o;10670:366::-;;10833:67;10897:2;10892:3;10833:67;:::i;:::-;10826:74;;10909:93;10998:3;10909:93;:::i;:::-;11027:2;11022:3;11018:12;11011:19;;10816:220;;;:::o;11042:366::-;;11205:67;11269:2;11264:3;11205:67;:::i;:::-;11198:74;;11281:93;11370:3;11281:93;:::i;:::-;11399:2;11394:3;11390:12;11383:19;;11188:220;;;:::o;11414:366::-;;11577:67;11641:2;11636:3;11577:67;:::i;:::-;11570:74;;11653:93;11742:3;11653:93;:::i;:::-;11771:2;11766:3;11762:12;11755:19;;11560:220;;;:::o;11786:366::-;;11949:67;12013:2;12008:3;11949:67;:::i;:::-;11942:74;;12025:93;12114:3;12025:93;:::i;:::-;12143:2;12138:3;12134:12;12127:19;;11932:220;;;:::o;12158:366::-;;12321:67;12385:2;12380:3;12321:67;:::i;:::-;12314:74;;12397:93;12486:3;12397:93;:::i;:::-;12515:2;12510:3;12506:12;12499:19;;12304:220;;;:::o;12530:118::-;12617:24;12635:5;12617:24;:::i;:::-;12612:3;12605:37;12595:53;;:::o;12654:112::-;12737:22;12753:5;12737:22;:::i;:::-;12732:3;12725:35;12715:51;;:::o;12772:222::-;;12903:2;12892:9;12888:18;12880:26;;12916:71;12984:1;12973:9;12969:17;12960:6;12916:71;:::i;:::-;12870:124;;;;:::o;13000:254::-;;13147:2;13136:9;13132:18;13124:26;;13160:87;13244:1;13233:9;13229:17;13220:6;13160:87;:::i;:::-;13114:140;;;;:::o;13260:332::-;;13419:2;13408:9;13404:18;13396:26;;13432:71;13500:1;13489:9;13485:17;13476:6;13432:71;:::i;:::-;13513:72;13581:2;13570:9;13566:18;13557:6;13513:72;:::i;:::-;13386:206;;;;;:::o;13598:807::-;;13885:3;13874:9;13870:19;13862:27;;13899:71;13967:1;13956:9;13952:17;13943:6;13899:71;:::i;:::-;13980:72;14048:2;14037:9;14033:18;14024:6;13980:72;:::i;:::-;14062:80;14138:2;14127:9;14123:18;14114:6;14062:80;:::i;:::-;14152;14228:2;14217:9;14213:18;14204:6;14152:80;:::i;:::-;14242:73;14310:3;14299:9;14295:19;14286:6;14242:73;:::i;:::-;14325;14393:3;14382:9;14378:19;14369:6;14325:73;:::i;:::-;13852:553;;;;;;;;;:::o;14411:210::-;;14536:2;14525:9;14521:18;14513:26;;14549:65;14611:1;14600:9;14596:17;14587:6;14549:65;:::i;:::-;14503:118;;;;:::o;14627:276::-;;14785:2;14774:9;14770:18;14762:26;;14798:98;14893:1;14882:9;14878:17;14869:6;14798:98;:::i;:::-;14752:151;;;;:::o;14909:313::-;;15060:2;15049:9;15045:18;15037:26;;15109:9;15103:4;15099:20;15095:1;15084:9;15080:17;15073:47;15137:78;15210:4;15201:6;15137:78;:::i;:::-;15129:86;;15027:195;;;;:::o;15228:419::-;;15432:2;15421:9;15417:18;15409:26;;15481:9;15475:4;15471:20;15467:1;15456:9;15452:17;15445:47;15509:131;15635:4;15509:131;:::i;:::-;15501:139;;15399:248;;;:::o;15653:419::-;;15857:2;15846:9;15842:18;15834:26;;15906:9;15900:4;15896:20;15892:1;15881:9;15877:17;15870:47;15934:131;16060:4;15934:131;:::i;:::-;15926:139;;15824:248;;;:::o;16078:419::-;;16282:2;16271:9;16267:18;16259:26;;16331:9;16325:4;16321:20;16317:1;16306:9;16302:17;16295:47;16359:131;16485:4;16359:131;:::i;:::-;16351:139;;16249:248;;;:::o;16503:419::-;;16707:2;16696:9;16692:18;16684:26;;16756:9;16750:4;16746:20;16742:1;16731:9;16727:17;16720:47;16784:131;16910:4;16784:131;:::i;:::-;16776:139;;16674:248;;;:::o;16928:419::-;;17132:2;17121:9;17117:18;17109:26;;17181:9;17175:4;17171:20;17167:1;17156:9;17152:17;17145:47;17209:131;17335:4;17209:131;:::i;:::-;17201:139;;17099:248;;;:::o;17353:419::-;;17557:2;17546:9;17542:18;17534:26;;17606:9;17600:4;17596:20;17592:1;17581:9;17577:17;17570:47;17634:131;17760:4;17634:131;:::i;:::-;17626:139;;17524:248;;;:::o;17778:419::-;;17982:2;17971:9;17967:18;17959:26;;18031:9;18025:4;18021:20;18017:1;18006:9;18002:17;17995:47;18059:131;18185:4;18059:131;:::i;:::-;18051:139;;17949:248;;;:::o;18203:419::-;;18407:2;18396:9;18392:18;18384:26;;18456:9;18450:4;18446:20;18442:1;18431:9;18427:17;18420:47;18484:131;18610:4;18484:131;:::i;:::-;18476:139;;18374:248;;;:::o;18628:419::-;;18832:2;18821:9;18817:18;18809:26;;18881:9;18875:4;18871:20;18867:1;18856:9;18852:17;18845:47;18909:131;19035:4;18909:131;:::i;:::-;18901:139;;18799:248;;;:::o;19053:419::-;;19257:2;19246:9;19242:18;19234:26;;19306:9;19300:4;19296:20;19292:1;19281:9;19277:17;19270:47;19334:131;19460:4;19334:131;:::i;:::-;19326:139;;19224:248;;;:::o;19478:419::-;;19682:2;19671:9;19667:18;19659:26;;19731:9;19725:4;19721:20;19717:1;19706:9;19702:17;19695:47;19759:131;19885:4;19759:131;:::i;:::-;19751:139;;19649:248;;;:::o;19903:419::-;;20107:2;20096:9;20092:18;20084:26;;20156:9;20150:4;20146:20;20142:1;20131:9;20127:17;20120:47;20184:131;20310:4;20184:131;:::i;:::-;20176:139;;20074:248;;;:::o;20328:419::-;;20532:2;20521:9;20517:18;20509:26;;20581:9;20575:4;20571:20;20567:1;20556:9;20552:17;20545:47;20609:131;20735:4;20609:131;:::i;:::-;20601:139;;20499:248;;;:::o;20753:419::-;;20957:2;20946:9;20942:18;20934:26;;21006:9;21000:4;20996:20;20992:1;20981:9;20977:17;20970:47;21034:131;21160:4;21034:131;:::i;:::-;21026:139;;20924:248;;;:::o;21178:419::-;;21382:2;21371:9;21367:18;21359:26;;21431:9;21425:4;21421:20;21417:1;21406:9;21402:17;21395:47;21459:131;21585:4;21459:131;:::i;:::-;21451:139;;21349:248;;;:::o;21603:419::-;;21807:2;21796:9;21792:18;21784:26;;21856:9;21850:4;21846:20;21842:1;21831:9;21827:17;21820:47;21884:131;22010:4;21884:131;:::i;:::-;21876:139;;21774:248;;;:::o;22028:222::-;;22159:2;22148:9;22144:18;22136:26;;22172:71;22240:1;22229:9;22225:17;22216:6;22172:71;:::i;:::-;22126:124;;;;:::o;22256:831::-;;22557:3;22546:9;22542:19;22534:27;;22571:71;22639:1;22628:9;22624:17;22615:6;22571:71;:::i;:::-;22652:80;22728:2;22717:9;22713:18;22704:6;22652:80;:::i;:::-;22779:9;22773:4;22769:20;22764:2;22753:9;22749:18;22742:48;22807:108;22910:4;22901:6;22807:108;:::i;:::-;22799:116;;22925:72;22993:2;22982:9;22978:18;22969:6;22925:72;:::i;:::-;23007:73;23075:3;23064:9;23060:19;23051:6;23007:73;:::i;:::-;22524:563;;;;;;;;:::o;23093:332::-;;23252:2;23241:9;23237:18;23229:26;;23265:71;23333:1;23322:9;23318:17;23309:6;23265:71;:::i;:::-;23346:72;23414:2;23403:9;23399:18;23390:6;23346:72;:::i;:::-;23219:206;;;;;:::o;23431:442::-;;23618:2;23607:9;23603:18;23595:26;;23631:71;23699:1;23688:9;23684:17;23675:6;23631:71;:::i;:::-;23712:72;23780:2;23769:9;23765:18;23756:6;23712:72;:::i;:::-;23794;23862:2;23851:9;23847:18;23838:6;23794:72;:::i;:::-;23585:288;;;;;;:::o;23879:214::-;;24006:2;23995:9;23991:18;23983:26;;24019:67;24083:1;24072:9;24068:17;24059:6;24019:67;:::i;:::-;23973:120;;;;:::o;24099:132::-;;24189:3;24181:11;;24219:4;24214:3;24210:14;24202:22;;24171:60;;;:::o;24237:114::-;;24338:5;24332:12;24322:22;;24311:40;;;:::o;24357:99::-;;24443:5;24437:12;24427:22;;24416:40;;;:::o;24462:113::-;;24564:4;24559:3;24555:14;24547:22;;24537:38;;;:::o;24581:184::-;;24714:6;24709:3;24702:19;24754:4;24749:3;24745:14;24730:29;;24692:73;;;;:::o;24771:169::-;;24889:6;24884:3;24877:19;24929:4;24924:3;24920:14;24905:29;;24867:73;;;;:::o;24946:305::-;;25005:20;25023:1;25005:20;:::i;:::-;25000:25;;25039:20;25057:1;25039:20;:::i;:::-;25034:25;;25193:1;25125:66;25121:74;25118:1;25115:81;25112:2;;;25199:18;;:::i;:::-;25112:2;25243:1;25240;25236:9;25229:16;;24990:261;;;;:::o;25257:185::-;;25314:20;25332:1;25314:20;:::i;:::-;25309:25;;25348:20;25366:1;25348:20;:::i;:::-;25343:25;;25387:1;25377:2;;25392:18;;:::i;:::-;25377:2;25434:1;25431;25427:9;25422:14;;25299:143;;;;:::o;25448:348::-;;25511:20;25529:1;25511:20;:::i;:::-;25506:25;;25545:20;25563:1;25545:20;:::i;:::-;25540:25;;25733:1;25665:66;25661:74;25658:1;25655:81;25650:1;25643:9;25636:17;25632:105;25629:2;;;25740:18;;:::i;:::-;25629:2;25788:1;25785;25781:9;25770:20;;25496:300;;;;:::o;25802:191::-;;25862:20;25880:1;25862:20;:::i;:::-;25857:25;;25896:20;25914:1;25896:20;:::i;:::-;25891:25;;25935:1;25932;25929:8;25926:2;;;25940:18;;:::i;:::-;25926:2;25985:1;25982;25978:9;25970:17;;25847:146;;;;:::o;25999:96::-;;26065:24;26083:5;26065:24;:::i;:::-;26054:35;;26044:51;;;:::o;26101:104::-;;26175:24;26193:5;26175:24;:::i;:::-;26164:35;;26154:51;;;:::o;26211:90::-;;26288:5;26281:13;26274:21;26263:32;;26253:48;;;:::o;26307:126::-;;26384:42;26377:5;26373:54;26362:65;;26352:81;;;:::o;26439:77::-;;26505:5;26494:16;;26484:32;;;:::o;26522:86::-;;26597:4;26590:5;26586:16;26575:27;;26565:43;;;:::o;26614:180::-;;26724:64;26782:5;26724:64;:::i;:::-;26711:77;;26701:93;;;:::o;26800:140::-;;26910:24;26928:5;26910:24;:::i;:::-;26897:37;;26887:53;;;:::o;26946:121::-;;27037:24;27055:5;27037:24;:::i;:::-;27024:37;;27014:53;;;:::o;27073:307::-;27141:1;27151:113;27165:6;27162:1;27159:13;27151:113;;;27250:1;27245:3;27241:11;27235:18;27231:1;27226:3;27222:11;27215:39;27187:2;27184:1;27180:10;27175:15;;27151:113;;;27282:6;27279:1;27276:13;27273:2;;;27362:1;27353:6;27348:3;27344:16;27337:27;27273:2;27122:258;;;;:::o;27386:320::-;;27467:1;27461:4;27457:12;27447:22;;27514:1;27508:4;27504:12;27535:18;27525:2;;27591:4;27583:6;27579:17;27569:27;;27525:2;27653;27645:6;27642:14;27622:18;27619:38;27616:2;;;27672:18;;:::i;:::-;27616:2;27437:269;;;;:::o;27712:180::-;27760:77;27757:1;27750:88;27857:4;27854:1;27847:15;27881:4;27878:1;27871:15;27898:180;27946:77;27943:1;27936:88;28043:4;28040:1;28033:15;28067:4;28064:1;28057:15;28084:180;28132:77;28129:1;28122:88;28229:4;28226:1;28219:15;28253:4;28250:1;28243:15;28270:102;;28362:2;28358:7;28353:2;28346:5;28342:14;28338:28;28328:38;;28318:54;;;:::o;28378:222::-;28518:34;28514:1;28506:6;28502:14;28495:58;28587:5;28582:2;28574:6;28570:15;28563:30;28484:116;:::o;28606:166::-;28746:18;28742:1;28734:6;28730:14;28723:42;28712:60;:::o;28778:168::-;28918:20;28914:1;28906:6;28902:14;28895:44;28884:62;:::o;28952:221::-;29092:34;29088:1;29080:6;29076:14;29069:58;29161:4;29156:2;29148:6;29144:15;29137:29;29058:115;:::o;29179:221::-;29319:34;29315:1;29307:6;29303:14;29296:58;29388:4;29383:2;29375:6;29371:15;29364:29;29285:115;:::o;29406:225::-;29546:34;29542:1;29534:6;29530:14;29523:58;29615:8;29610:2;29602:6;29598:15;29591:33;29512:119;:::o;29637:163::-;29777:15;29773:1;29765:6;29761:14;29754:39;29743:57;:::o;29806:223::-;29946:34;29942:1;29934:6;29930:14;29923:58;30015:6;30010:2;30002:6;29998:15;29991:31;29912:117;:::o;30035:227::-;30175:34;30171:1;30163:6;30159:14;30152:58;30244:10;30239:2;30231:6;30227:15;30220:35;30141:121;:::o;30268:166::-;30408:18;30404:1;30396:6;30392:14;30385:42;30374:60;:::o;30440:220::-;30580:34;30576:1;30568:6;30564:14;30557:58;30649:3;30644:2;30636:6;30632:15;30625:28;30546:114;:::o;30666:171::-;30806:23;30802:1;30794:6;30790:14;30783:47;30772:65;:::o;30843:224::-;30983:34;30979:1;30971:6;30967:14;30960:58;31052:7;31047:2;31039:6;31035:15;31028:32;30949:118;:::o;31073:223::-;31213:34;31209:1;31201:6;31197:14;31190:58;31282:6;31277:2;31269:6;31265:15;31258:31;31179:117;:::o;31302:168::-;31442:20;31438:1;31430:6;31426:14;31419:44;31408:62;:::o;31476:224::-;31616:34;31612:1;31604:6;31600:14;31593:58;31685:7;31680:2;31672:6;31668:15;31661:32;31582:118;:::o;31706:122::-;31779:24;31797:5;31779:24;:::i;:::-;31772:5;31769:35;31759:2;;31818:1;31815;31808:12;31759:2;31749:79;:::o;31834:138::-;31915:32;31941:5;31915:32;:::i;:::-;31908:5;31905:43;31895:2;;31962:1;31959;31952:12;31895:2;31885:87;:::o;31978:122::-;32051:24;32069:5;32051:24;:::i;:::-;32044:5;32041:35;32031:2;;32090:1;32087;32080:12;32031:2;32021:79;:::o

Swarm Source

ipfs://f5c1bde7e1b6f46e87a68bea4e907c191b30de116efa334fdb6eac6b96c6704a
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.