Contract 0x652f4e07f09e00d5f63152fe3fd7df9799c2757b

 

Contract Overview

Balance:
0 FTM

FTM Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xd7c0ae973a6323faab3c9df16ec3c04c3c22cc6d4662762ba7e5a52401532f4fApprove502786362022-10-30 20:59:5835 days 3 hrs ago0x8c815bb2debae39e09d15e5dc523dab7ef7621f4 IN  0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0 FTM0.005386943816
0xef7278c2481220133ca98da10b6d774c1a8d243930a6dedcdc07c71fd4f81dbcApprove502786042022-10-30 20:58:4635 days 3 hrs ago0x8c815bb2debae39e09d15e5dc523dab7ef7621f4 IN  0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0 FTM0.000611308646
0x2c5e0fbd1276d9a4eeef90d32b1970e5941615f59f78bb778d8af1b833cb5652Approve502785922022-10-30 20:58:0835 days 3 hrs ago0x8c815bb2debae39e09d15e5dc523dab7ef7621f4 IN  0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0 FTM0.000495901736
0x7ef9961e74676a115e877bde279fdadad46e6d65250b5ca8e69462ad4befc79dApprove494174162022-10-18 1:12:5147 days 23 hrs ago0x588d988d2c01b5ac3e00044f5ca4afd97e6ca9c3 IN  0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0 FTM0.00003356726
0x9063ade822849329e9b9d71d6fa695a50f81bf14333c47a98ceff698bc3bee55Approve464954302022-09-06 21:59:3789 days 2 hrs ago0x14d830c2fb7d3b532e485013ae3841899683fe80 IN  0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0 FTM0.000125799292
0xa951ff9260c4e3ef0660a97d9573b04ea455038b854e796582c44ff3b25a6103Approve463866592022-09-05 5:32:2190 days 19 hrs ago0x324b2125a64dddd0a7aa3d23aa62b4dfed82e653 IN  0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0 FTM0.000782614135
0xb709532967f5d45a8ef6b259e4ae05ef0448edfe0e23be5d173a8c841e67e9efApprove436914692022-07-28 0:42:59129 days 23 hrs ago0x155b6485305ccab44ef7da58ac886c62ce105cf9 IN  0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0 FTM0.000142574366
0x739a74b04764604208d4e113549435248d78669625f503ce27343c2a12afaba3Approve436906652022-07-28 0:25:39130 days 8 mins ago0x155b6485305ccab44ef7da58ac886c62ce105cf9 IN  0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0 FTM0.000280538893
0x143bc30c1066148bb97da9f35fadfad4e528db0a18a49423437f553163a1d32fApprove436860492022-07-27 22:43:16130 days 1 hr ago0x155b6485305ccab44ef7da58ac886c62ce105cf9 IN  0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0 FTM0.000086912554
0x393a5010749320a082b063f6c36493e6cb2d7d20b90ae4e85516f9b63694a055Approve405168402022-06-14 17:53:28173 days 6 hrs ago0xa46c003ec3ee8b1eaad9cac32f2835e584261a81 IN  0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0 FTM0.006583451125
0x60eaafc67e1aad2e05cf2afca467986dab9ee10c94e6bbb32e08e4603c1b4797Approve405165982022-06-14 17:49:05173 days 6 hrs ago0xa46c003ec3ee8b1eaad9cac32f2835e584261a81 IN  0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0 FTM0.005713370078
0x9638292e4153db78ff3324c4c0e2fa183491d4583420fcf074f71d495c370523Approve403054902022-06-11 20:22:36176 days 4 hrs ago0xc9d3764e05f2226477f743830323758be7aced37 IN  0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0 FTM0.001218204
0x6944f680c09fde806fd2f07030307096270120f48f2efd1693d6743c3466f7e6Approve391309022022-05-26 22:41:00192 days 1 hr ago0x09d21e61deceac27cbd7d663dec48cde80c6666c IN  0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0 FTM0.010129578286
0x445d8f80dcef3ce55816a39d56358506003eba348ffeba5eedf5eeaf56232ce2Approve380933042022-05-12 11:09:24206 days 13 hrs ago0xecb1650bae71eb301fa9ac4852c7858d3d9cba1d IN  0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0 FTM0.06883932698
0x0cedc74c5ab078e0a5af65f249590bab6bc27bfeadce9dfc4daf80a3ade34cd5Approve380927192022-05-12 10:53:45206 days 13 hrs ago0x3e47a8e75c5383b3439dec32fe3cb9befe4860d5 IN  0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0 FTM0.064797292177
0x1e71821601abc6a2fbae18d85fa7ef1b1e059d764dff068dd0ba457efc5f1eeeApprove366940192022-04-22 10:38:35226 days 13 hrs ago0xd4002c9142f9aad2972cc9cba6d91dd9329780f7 IN  0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0 FTM0.002893018689
0xb4ca69936af3fbf3e6f2c93cc4d2db1c27125059674c928ba58badae3d7e0d60Approve350278062022-04-02 7:57:10246 days 16 hrs ago0x14d830c2fb7d3b532e485013ae3841899683fe80 IN  0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0 FTM0.00588819137
0x32b8574ac3b1b7f61f9954e3602b9fcd41303797c7fd812161f3039bc16a24d3Approve347699942022-03-30 5:54:17249 days 18 hrs ago0x1949f7f04f9db3473fbb5e7cba946c99f56ee2c7 IN  0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0 FTM0.006457078824
0xa546d371398a5e7efe1240d93b3bf78e72f090be1ecef08032462c1ad2bd0618Approve347197562022-03-29 16:16:26250 days 8 hrs ago0xfa5e6d374fb24c2fbeb7d3fa96f8ce53b36a1a58 IN  0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0 FTM0.016043163899
0xd8c6823e0297b5060c4bb3c9d1c887966bfa51d01c5ff496463e8c8e263fa7bcApprove343117172022-03-24 22:21:50255 days 2 hrs ago0x09d21e61deceac27cbd7d663dec48cde80c6666c IN  0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0 FTM0.00662536437
0xbb161efa8070613cf2ac0791278ca011aa92b9c9d6f37350b4999e98890e1705Set Max Tx Perce...342789492022-03-24 13:02:31255 days 11 hrs ago0x10b7d2c8dca685875cea2684028848ae42031748 IN  0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0 FTM0.012237872381
0x015468d4c54c8c1cec34383eb96bf9426dea28bf434ef920850de006edd8c566Set Max Wallet P...342789362022-03-24 13:02:20255 days 11 hrs ago0x10b7d2c8dca685875cea2684028848ae42031748 IN  0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0 FTM0.012239131594
0xea1d193895082b903cde83e34f3ba3d2556d7a6a37449c7f4ac8db07f1bf7d1cSet_sell_multipl...342784632022-03-24 12:55:06255 days 11 hrs ago0x10b7d2c8dca685875cea2684028848ae42031748 IN  0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0 FTM0.005223904821
0x628db8a253f700db48c117ca31eaf56baaa0801de88ff07967be4ccdcbeab1e7Set Zero Buy Tax...342784522022-03-24 12:54:56255 days 11 hrs ago0x10b7d2c8dca685875cea2684028848ae42031748 IN  0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0 FTM0.009293940932
0xda0bf8db622cbe8e419f0bcdcddfea4a7a3411c619e59025ea9135a6dcece7eaSet Max Wallet P...342781612022-03-24 12:50:28255 days 11 hrs ago0x10b7d2c8dca685875cea2684028848ae42031748 IN  0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0 FTM0.013499275933
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x60132577e05fdf0c527a70dc12b6bf6f8e2416643ee6f5c689ecd054d1374f72341443542022-03-22 23:25:15257 days 1 hr ago 0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0x10b7d2c8dca685875cea2684028848ae4203174827.690063033192024497 FTM
0x60132577e05fdf0c527a70dc12b6bf6f8e2416643ee6f5c689ecd054d1374f72341443542022-03-22 23:25:15257 days 1 hr ago SpookySwap: Router 0x652f4e07f09e00d5f63152fe3fd7df9799c2757b27.690063033192024497 FTM
0x1d882f7718041d335ed3c25cbbbbf7a8c28bfd6112873870efd6544c1b29a104340285972022-03-21 15:18:59258 days 9 hrs ago 0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0x10b7d2c8dca685875cea2684028848ae4203174888.970001778250116871 FTM
0xe77b2c282c097259d8426ba091f606ac1c93f4a0837eec9c198f26e691a6636c332414582022-03-12 16:00:05267 days 8 hrs ago 0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0x10b7d2c8dca685875cea2684028848ae4203174828.536924144334332669 FTM
0xe77b2c282c097259d8426ba091f606ac1c93f4a0837eec9c198f26e691a6636c332414582022-03-12 16:00:05267 days 8 hrs ago SpookySwap: Router 0x652f4e07f09e00d5f63152fe3fd7df9799c2757b28.536924144334332669 FTM
0x33402dd3d48ed34acc8d84008e27a189078405c8932e9898e0f58f5c06d1f0db325300522022-03-04 12:24:49275 days 12 hrs ago 0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0x10b7d2c8dca685875cea2684028848ae4203174828.807433148039896152 FTM
0x33402dd3d48ed34acc8d84008e27a189078405c8932e9898e0f58f5c06d1f0db325300522022-03-04 12:24:49275 days 12 hrs ago SpookySwap: Router 0x652f4e07f09e00d5f63152fe3fd7df9799c2757b28.807433148039896152 FTM
0x7e67b15497df9b06ab71e60d8894aeceef83ce99f4c07ff7c248cb5f67a1dc8b313922682022-02-19 5:12:27288 days 19 hrs ago 0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0x10b7d2c8dca685875cea2684028848ae4203174829.478474795056516971 FTM
0x7e67b15497df9b06ab71e60d8894aeceef83ce99f4c07ff7c248cb5f67a1dc8b313922682022-02-19 5:12:27288 days 19 hrs ago SpookySwap: Router 0x652f4e07f09e00d5f63152fe3fd7df9799c2757b29.478474795056516971 FTM
0x2271c0c24b0f7e68be2f7d942e1f0817a3d62072da9e163a24712e5453061c31308928392022-02-14 0:23:04294 days 10 mins ago 0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0x10b7d2c8dca685875cea2684028848ae4203174830.165990853786121091 FTM
0x2271c0c24b0f7e68be2f7d942e1f0817a3d62072da9e163a24712e5453061c31308928392022-02-14 0:23:04294 days 10 mins ago SpookySwap: Router 0x652f4e07f09e00d5f63152fe3fd7df9799c2757b30.165990853786121091 FTM
0xc075c281279402de05e0c4a260b5fd8942ea92bafd06e13e5d04ebd956199371306844252022-02-11 22:43:27296 days 1 hr ago 0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0x10b7d2c8dca685875cea2684028848ae4203174830.433091890777906383 FTM
0xc075c281279402de05e0c4a260b5fd8942ea92bafd06e13e5d04ebd956199371306844252022-02-11 22:43:27296 days 1 hr ago SpookySwap: Router 0x652f4e07f09e00d5f63152fe3fd7df9799c2757b30.433091890777906383 FTM
0x4bb897d9982b51a8e29da2be1d2341da65e402cc1f2ede68a3e36441ead8f29f304432792022-02-09 10:09:58298 days 14 hrs ago 0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0x10b7d2c8dca685875cea2684028848ae4203174831.319716081554881107 FTM
0x4bb897d9982b51a8e29da2be1d2341da65e402cc1f2ede68a3e36441ead8f29f304432792022-02-09 10:09:58298 days 14 hrs ago SpookySwap: Router 0x652f4e07f09e00d5f63152fe3fd7df9799c2757b31.319716081554881107 FTM
0x25628b09096a4b1962a4debbca0b9e518e5564ee6429200d5e928a11c0bea745294825422022-01-30 12:35:36308 days 11 hrs ago 0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0x10b7d2c8dca685875cea2684028848ae4203174831.839941041752036906 FTM
0x25628b09096a4b1962a4debbca0b9e518e5564ee6429200d5e928a11c0bea745294825422022-01-30 12:35:36308 days 11 hrs ago SpookySwap: Router 0x652f4e07f09e00d5f63152fe3fd7df9799c2757b31.839941041752036906 FTM
0x6c83a59b8cc2d7504c3d9420c28e172225aa0771a667844557ab5f8e30def921285242642022-01-20 8:01:41318 days 16 hrs ago 0x652f4e07f09e00d5f63152fe3fd7df9799c2757b SpookySwap: Router2.922873079615029681 FTM
0x6c83a59b8cc2d7504c3d9420c28e172225aa0771a667844557ab5f8e30def921285242642022-01-20 8:01:41318 days 16 hrs ago 0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0xc4ec40a39d7797ba70b574cc9b4bb734fcb893865.845746159230059363 FTM
0x6c83a59b8cc2d7504c3d9420c28e172225aa0771a667844557ab5f8e30def921285242642022-01-20 8:01:41318 days 16 hrs ago 0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0x10b7d2c8dca685875cea2684028848ae4203174811.691492318460118727 FTM
0x6c83a59b8cc2d7504c3d9420c28e172225aa0771a667844557ab5f8e30def921285242642022-01-20 8:01:41318 days 16 hrs ago 0x652f4e07f09e00d5f63152fe3fd7df9799c2757b 0xce2708d45b25da0ccebbb9c69c1c3670a6693ef15.845746159230059363 FTM
0x6c83a59b8cc2d7504c3d9420c28e172225aa0771a667844557ab5f8e30def921285242642022-01-20 8:01:41318 days 16 hrs ago SpookySwap: Router 0x652f4e07f09e00d5f63152fe3fd7df9799c2757b29.228730796150296818 FTM
0x733b2d6d44ca393add2f056f371066074d1ff32672cf9e31c481342362cca3d5284197702022-01-19 7:29:45319 days 17 hrs ago 0x652f4e07f09e00d5f63152fe3fd7df9799c2757b SpookySwap: Router2.964901410328413405 FTM
0x733b2d6d44ca393add2f056f371066074d1ff32672cf9e31c481342362cca3d5284197702022-01-19 7:29:45319 days 17 hrs ago 0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0xc4ec40a39d7797ba70b574cc9b4bb734fcb893865.92980282065682681 FTM
0x733b2d6d44ca393add2f056f371066074d1ff32672cf9e31c481342362cca3d5284197702022-01-19 7:29:45319 days 17 hrs ago 0x652f4e07f09e00d5f63152fe3fd7df9799c2757b0x10b7d2c8dca685875cea2684028848ae4203174811.859605641313653621 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SantaDoge

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at FtmScan.com on 2021-12-03
*/

//SPDX-License-Identifier: MIT
// https://www.santadogeftm.com/
// TG: https://t.me/santadogeftm
// DISCORD - https://discord.com/invite/KR9uMJNXqW
/**
 *TG_SANTADOGEFTM
*/
pragma solidity ^0.7.6;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;

        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    function div(int256 a, int256 b) internal pure returns (int256) {
        require(b != -1 || a != MIN_INT256);

        return a / b;
    }

    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }
}

/**
 * ERC20 standard interface.
 */
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

interface InterfaceLP {
    function sync() external;
}

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

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

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

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

interface IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
    function setToken(address token) external;
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address _token;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 25;

    uint256 public minPeriod = 45 * 60;
    uint256 public minDistribution = 1 * (10 ** 16);

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    IERC20 public REWARD_TOKEN = IERC20(0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83);
    address WFTM = 0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83;
    IDEXRouter router;

    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;

    mapping (address => Share) public shares;

   

    uint256 currentIndex;

    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }

    constructor (address _router) {
        router = _router != address(0)
            ? IDEXRouter(_router)
            : IDEXRouter(0xF491e7B69E4244ad4002BC14e878a34207E38c29);
        _token = msg.sender;
    }

     function setToken(address token) external override onlyToken {
        REWARD_TOKEN = IERC20(token);
        WFTM = router.WETH();
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {
        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit() external payable override onlyToken {
        uint256 balanceBefore = REWARD_TOKEN.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = WFTM;
        path[1] = address(REWARD_TOKEN);
        
        if(address(REWARD_TOKEN) != WFTM) {
            router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
                0,
                path,
                address(this),
                block.timestamp
            );
        }
        
        uint256 amount = REWARD_TOKEN.balanceOf(address(this)).sub(balanceBefore);

        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        uint256 iterations = 0;

        while(gasUsed < gas && iterations < shareholderCount) {
            if(currentIndex >= shareholderCount){
                currentIndex = 0;
            }

            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }
    
    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            REWARD_TOKEN.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
   
    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

contract SantaDoge is IERC20, Auth {
    using SafeMath for uint256;
    using SafeMathInt for int256;

    address WFTM = 0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "SantaDoge";
    string constant _symbol = "SANTA";
    uint8 constant _decimals = 9;

    //mapping (address => uint256) _balances;
    mapping (address => uint256) _rBalance;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isTimelockExempt;
    mapping (address => bool) public isDividendExempt;

    bool public blacklistMode = true;
    mapping (address => bool) public isBlacklisted;

    uint256 public deadBlocks = 2;
    uint256 public launchedAt = 0;

    //5% on Buy
    uint256 public liquidityFee    = 1;
    uint256 public RewardFee   = 2;
    uint256 public marketingFee    = 1;
    uint256 public LotteryFee      = 1;
    uint256 public totalFee = marketingFee + RewardFee + liquidityFee + LotteryFee;
    uint256 public feeDenominator  = 100;

    uint256 public sellMultiplier  = 400; //4x i.e 5x4= 20% on Sell

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;
    address public LotteryFeeReceiver;

    IDEXRouter public router;
    address public pair;

    InterfaceLP public pairContract; 

    bool public tradingOpen = false;

    DividendDistributor public distributor;
    uint256 distributorGas = 1500000;

    bool public buyCooldownEnabled = true;
    uint8 public cooldownTimerInterval = 15;
    mapping (address => uint) private cooldownTimer;

    bool public swapEnabled = true;
    bool public zeroBuyTaxMode = false;
    
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    uint256 private constant INITIAL_FRAGMENTS_SUPPLY = 25 * 10**12 * 10**_decimals;
    uint256 private constant MAX_SUPPLY = ~uint128(0);
    uint256 public rate;
    uint256 public _totalSupply;
    uint256 private constant rSupply = INITIAL_FRAGMENTS_SUPPLY;
    uint256 public swapThreshold = rSupply * 10 / 10000;

    // Max wallet & Transaction
    uint256 public _maxTxAmount = rSupply.div(100).mul(1);      //1%
    uint256 public _maxWalletToken = rSupply.div(100).mul(2); //2%

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0xF491e7B69E4244ad4002BC14e878a34207E38c29);
        pair = IDEXFactory(router.factory()).createPair(WFTM, address(this));

        _allowances[address(this)][address(router)] = uint256(-1);

        pairContract = InterfaceLP(pair);
        _totalSupply = INITIAL_FRAGMENTS_SUPPLY;
        rate = rSupply.div(_totalSupply);

        distributor = new DividendDistributor(address(router));

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;

        isTimelockExempt[msg.sender] = true;
        isTimelockExempt[DEAD] = true;
        isTimelockExempt[address(this)] = true;

        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;

        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0x10b7d2c8dCA685875Cea2684028848Ae42031748;
        LotteryFeeReceiver = 0xc4EC40a39d7797BA70B574cC9b4bb734FcB89386;

        _rBalance[msg.sender] = rSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }

    function balanceOf(address account) public view override returns (uint256) {
        return _rBalance[account].div(rate);
    }
    
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

function withdrawStuckTokens(IERC20 token, address to) public onlyOwner {
        require (address(token) != address(this));
        uint256 balance = token.balanceOf(address(this));
        token.transfer(to, balance);
}

function withDraw(address payable receipient) public onlyOwner {
        receipient.transfer(address(this).balance);
}

function multiTransfer(address from, address[] calldata addresses, uint256 tokens) external onlyOwner {

    require(owner == from,"Aidrops only from owner");
    require(addresses.length < 2001,"GAS Error: max airdrop limit is 2000 addresses"); // to prevent overflow

    uint256 SCCC = tokens** (10**_decimals) * addresses.length;

    require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");

    for(uint i=0; i < addresses.length; i++){
        _basicTransfer(from,addresses[i],tokens * (10**_decimals));
        if(!isDividendExempt[addresses[i]]) {
            try distributor.setShare(addresses[i], balanceOf(addresses[i])) {} catch {} 
        }
    }

    // Dividend tracker
    if(!isDividendExempt[from]) {
        try distributor.setShare(from, balanceOf(from)) {} catch {}
    }
}

    function approveMax(address spender) external returns (bool) {
        return approve(spender, uint256(-1));
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != uint256(-1)){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender]){
            require(tradingOpen,"Trading not open yet");
        }

        uint256 rAmount = amount.mul(rate);

        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && recipient != LotteryFeeReceiver  && recipient != autoLiquidityReceiver){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + rAmount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}
        
        if (sender == pair &&
            buyCooldownEnabled &&
            !isTimelockExempt[recipient]) {
            require(cooldownTimer[recipient] < block.timestamp,"buy Cooldown exists");
            cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval;
        }

        // Blacklist
        if(blacklistMode){
            require(!isBlacklisted[sender] && !isBlacklisted[recipient],"Blacklisted");    
        }

        // Checks max transaction limit
        checkTxLimit(sender, rAmount);

        if(shouldSwapBack()){ swapBack(); }

        //Exchange tokens
        _rBalance[sender] = _rBalance[sender].sub(rAmount, "Insufficient Balance");

        uint256 amountReceived = (!shouldTakeFee(sender) || !shouldTakeFee(recipient)) ? rAmount : takeFee(sender, rAmount,(recipient == pair));
        _rBalance[recipient] = _rBalance[recipient].add(amountReceived);

        // Dividend tracker
        if(!isDividendExempt[sender]) {
            try distributor.setShare(sender, balanceOf(sender)) {} catch {}
        }

        if(!isDividendExempt[recipient]) {
            try distributor.setShare(recipient, balanceOf(recipient)) {} catch {} 
        }

        try distributor.process(distributorGas) {} catch {}

        emit Transfer(sender, recipient, amountReceived.div(rate));
        return true;
    }
    
  
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 rAmount = amount.mul(rate);
        _rBalance[sender] = _rBalance[sender].sub(rAmount, "Insufficient Balance");
        _rBalance[recipient] = _rBalance[recipient].add(rAmount);
        emit Transfer(sender, recipient, rAmount.div(rate));
        return true;
    }

    function checkTxLimit(address sender, uint256 rAmount) internal view {
        require(rAmount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 rAmount, bool isSell) internal returns (uint256) {
        
        uint256 multiplier = 100;
        if(isSell){
            multiplier = sellMultiplier;
        }

        if(zeroBuyTaxMode && !isSell){
              multiplier = 0;
        }

        uint256 feeAmount = rAmount.div(feeDenominator * 100).mul(totalFee).mul(multiplier);

        if(!isSell && (launchedAt + deadBlocks) > block.number){
            feeAmount = rAmount.div(100).mul(90);
        }

        _rBalance[address(this)] = _rBalance[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount.div(rate));

        return rAmount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _rBalance[address(this)] >= swapThreshold;
    }

    function clearStuckBalance(uint256 amountPercentage) external authorized {
        uint256 amountFTM = address(this).balance;
        payable(marketingFeeReceiver).transfer(amountFTM * amountPercentage / 100);
    }

    function clearStuckBalance_sender(uint256 amountPercentage) external authorized {
        uint256 amountFTM = address(this).balance;
        payable(msg.sender).transfer(amountFTM * amountPercentage / 100);
    }

    function set_sell_multiplier(uint256 Multiplier) external onlyOwner{
        sellMultiplier = Multiplier;        
    }

    // switch Trading
    
    function tradingStatus(bool _status, uint256 _deadBlocks) public onlyOwner {
        tradingOpen = _status;
        if(tradingOpen && launchedAt == 0){
            launchedAt = block.number;
            deadBlocks = _deadBlocks;
        }
    }

    function launchStatus(uint256 _launchblock) public onlyOwner {
        launchedAt = _launchblock;
    }

    function enable_blacklist(bool _status) public onlyOwner {
        blacklistMode = _status;
    }

    function manage_blacklist(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            isBlacklisted[addresses[i]] = status;
        }
    }

    function cooldownEnabled(bool _status, uint8 _interval) public onlyOwner {
        buyCooldownEnabled = _status;
        cooldownTimerInterval = _interval;
    }

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = liquidityFee;
        uint256 tokensToSell = swapThreshold.div(rate);

        uint256 amountToLiquify = tokensToSell.div(totalFee).mul(dynamicLiquidityFee).div(2);
        uint256 amountToSwap = tokensToSell.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WFTM;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountFTM = address(this).balance.sub(balanceBefore);

        uint256 totalFTMFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountFTMLiquidity = amountFTM.mul(dynamicLiquidityFee).div(totalFTMFee).div(2);
        uint256 amountFTMReflection = amountFTM.mul(RewardFee).div(totalFTMFee);
        uint256 amountFTMMarketing = amountFTM.mul(marketingFee).div(totalFTMFee);
        uint256 amountFTMLottery = amountFTM.mul(LotteryFee).div(totalFTMFee);

        try distributor.deposit{value: amountFTMReflection}() {} catch {}
        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountFTMMarketing, gas: 30000}("");
        (tmpSuccess,) = payable(LotteryFeeReceiver).call{value: amountFTMLottery, gas: 30000}("");
        
        // only to supress warning msg
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountFTMLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountFTMLiquidity, amountToLiquify.div(rate));
        }
    }

    function setIsDividendExempt(address holder, bool exempt) external authorized {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            distributor.setShare(holder, 0);
        }else{
            distributor.setShare(holder, balanceOf(holder));
        }
    }
    
    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

    function setZeroBuyTaxMode(bool _zeroBuyTaxMode) external authorized {
        zeroBuyTaxMode=_zeroBuyTaxMode;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;
    }

    function setIsTimelockExempt(address holder, bool exempt) external authorized {
        isTimelockExempt[holder] = exempt;
    }

    function setFees(uint256 _liquidityFee, uint256 _RewardFee, uint256 _marketingFee, uint256 _LotteryFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        RewardFee = _RewardFee;
        marketingFee = _marketingFee;
        LotteryFee = _LotteryFee;
        totalFee = _liquidityFee.add(_RewardFee).add(_marketingFee).add(_LotteryFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/2, "Fees cannot be more than 50%");
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _LotteryFeeReceiver ) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        LotteryFeeReceiver = _LotteryFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _percentage_base100000) external authorized {
        swapEnabled = _enabled;
        swapThreshold = rSupply.div(100000).mul(_percentage_base100000);
    }
    
    function manualSync() external {
        InterfaceLP(pair).sync();
    }
    
    function setLP(address _address) external onlyOwner {
        pairContract = InterfaceLP(_address);
        isFeeExempt[_address];
    }

    function isNotInSwap() external view returns (bool) {
        return !inSwap;
    }

    function checkSwapThreshold() external view returns (uint256) {
        return swapThreshold.div(rate);
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }

    function setDistributorSettings(uint256 gas) external authorized {
        require(gas < 900000);
        distributorGas = gas;
    }

    function rescueToken(address tokenAddress, uint256 tokens) public onlyOwner returns (bool success) {
        require (address(tokenAddress) != address(this));
        return IERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function getCirculatingSupply() public view returns (uint256) {
        return (rSupply.sub(_rBalance[DEAD]).sub(_rBalance[ZERO])).div(rate);
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }

    function checkMaxWalletToken() external view returns (uint256) {
        return _maxWalletToken.div(rate);
    }

    function checkMaxTxAmount() external view returns (uint256) {
        return _maxTxAmount.div(rate);
    }

    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner() {
        _maxWalletToken = rSupply.div(1000).mul(maxWallPercent_base1000);
    }

    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner() {
        _maxTxAmount = rSupply.div(1000).mul(maxTXPercentage_base1000);
    }

    function changeRewardToken(address newRewardToken)  external onlyOwner()  {
       distributor.setToken(newRewardToken);
    }

event AutoLiquify(uint256 amountFTM, uint256 amountTokens);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountFTM","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"LotteryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LotteryFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RewardFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRewardToken","type":"address"}],"name":"changeRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkMaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkMaxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance_sender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isNotInSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTimelockExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_launchblock","type":"uint256"}],"name":"launchStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairContract","outputs":[{"internalType":"contract InterfaceLP","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"rescueToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_LotteryFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_RewardFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_LotteryFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_percentage_base100000","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_zeroBuyTaxMode","type":"bool"}],"name":"setZeroBuyTaxMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Multiplier","type":"uint256"}],"name":"set_sell_multiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"receipient","type":"address"}],"name":"withDraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zeroBuyTaxMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b03199081167321be370d5312f44cb42ce377bc9b8a0cef1a4c8317825560038054821661dead179055600480549091169055600b805460ff199081166001908117909255600d8390556000600e55600f82905560109290925560118190556012819055600560135560646014819055610190601555601b805460ff60a01b191690556216e360601d55601e8054610f0061ff0019918616851782161790915560208054909416831716835568015af1d78b58c400006023556200010092620000ec9169054b40b1f852bda000009162000496811b6200298817901c565b620004e960201b620029ca1790919060201c565b6024556200012c6002620000ec69054b40b1f852bda00000606462000496602090811b6200298817901c565b6025553480156200013c57600080fd5b50600080546001600160a01b0319908116339081178355825260016020818152604093849020805460ff19169092179091556019805490921673f491e7b69e4244ad4002bc14e878a34207e38c291791829055825163c45a015560e01b815292516001600160a01b03929092169263c45a01559260048083019392829003018186803b158015620001cc57600080fd5b505afa158015620001e1573d6000803e3d6000fd5b505050506040513d6020811015620001f857600080fd5b5051600254604080516364e329cb60e11b81526001600160a01b0392831660048201523060248201529051919092169163c9c653969160448083019260209291908290030181600087803b1580156200025057600080fd5b505af115801562000265573d6000803e3d6000fd5b505050506040513d60208110156200027c57600080fd5b5051601a80546001600160a01b03199081166001600160a01b0393841617825530600090815260066020908152604080832060195487168452825290912060001990559154601b80549190941691161790915569054b40b1f852bda000006022819055620002f591819062000496811b6200298817901c565b6021556019546040516001600160a01b03909116906200031590620005ee565b6001600160a01b03909116815260405190819003602001906000f08015801562000343573d6000803e3d6000fd5b50601c80546001600160a01b039283166001600160a01b031991821617909155336000818152600760209081526040808320805460ff19908116600190811790925560088452828520805482168317905560098452828520805482168317905560038054891686528386208054831684179055308087528487208054841685179055601a548a168752600a8652848720805484168517905586528386208054831684179055549097168452818420805490971617909555601680548516841790556017805485167310b7d2c8dca685875cea2684028848ae420317481790556018805490941673c4ec40a39d7797ba70b574cc9b4bb734fcb89386179093558181526005835283812069054b40b1f852bda00000905560225484519081529351919390927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3620005fc565b6000620004e083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200054760201b60201c565b90505b92915050565b600082620004fa57506000620004e3565b828202828482816200050857fe5b0414620004e05760405162461bcd60e51b815260040180806020018281038252602181526020018062004fea6021913960400191505060405180910390fd5b60008183620005d75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200059b57818101518382015260200162000581565b50505050905090810190601f168015620005c95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581620005e457fe5b0495945050505050565b610fe0806200400a83390190565b6139fe806200060c6000396000f3fe60806040526004361061048d5760003560e01c806370a0823111610255578063bf56b37111610144578063ec72d65f116100c1578063f887ea4011610085578063f887ea401461114d578063fabb0b4f14611162578063fe575a8714611177578063fe9fbb80146111aa578063fed0d2a1146111dd578063ffb54a99146111f257610494565b8063ec72d65f14611047578063f0b37c0414611071578063f2fde38b146110a4578063f708a64f146110d7578063f84ba65d1461111257610494565b8063d7b1531e11610108578063d7b1531e14610f6b578063d7c0103214610f80578063dd62ed3e14610fc5578063df20fd4914611000578063e96fada21461103257610494565b8063bf56b37114610ed6578063bfe1092814610eeb578063c486227614610f00578063ca33e64c14610f2c578063d51ed1c814610f4157610494565b80638e2eee84116101d2578063a8aa1b3111610196578063a8aa1b3114610e16578063a9059cbb14610e2b578063b43b783514610e64578063b6a5d7de14610e79578063bd9ab53714610eac57610494565b80638e2eee8414610d1957806395d89b4114610d9857806398118cb414610dad5780639ba1fc4c14610dc25780639d1944f514610dec57610494565b80637d1db4a5116102195780637d1db4a514610c9257806383b4ac6814610ca7578063893d20e814610cbc578063896648c114610cd15780638b42507f14610ce657610494565b806370a0823114610c0b578063722b62ad14610c3e578063753d02a114610c5357806378109e5414610c685780637b7099b714610c7d57610494565b80632f34d2821161037c57806350af449e116102f95780636149a20a116102bd5780636149a20a14610b67578063617fe0ed14610b7c578063658d4b7f14610b915780636b67c4df14610bcc5780636d351d1a14610be15780636ddd171314610bf657610494565b806350af449e14610a8557806350db71fb14610ab8578063571ac8b014610af35780635e322d4614610b265780635e562f3b14610b3b57610494565b80633ec726c8116103405780633ec726c8146109af5780633f4218e0146109c45780634355855a146109f757806344a33fd214610a2a5780634d709adf14610a5457610494565b80632f34d282146108d05780632f54bf6e14610903578063313ce5671461093657806333f3d628146109615780633eaaf86b1461099a57610494565b806318160ddd1161040a57806326e353b8116103ce57806326e353b81461080f5780632b112e49146108415780632c4e722e146108565780632d48e8961461086b5780632d5945671461089b57610494565b806318160ddd1461073d5780631da1db5e146107525780631df4ccfc1461077c57806323b872dd1461079157806325b86edf146107d457610494565b8063095ea7b311610451578063095ea7b3146105eb5780630a67d2c7146106385780630aa20e731461066b5780631161ae39146106f8578063180b0d7e1461072857610494565b80630445b6671461049957806304a66b48146104c057806306fdde0314610504578063088ab8ce1461058e57806309302dc6146105c157610494565b3661049457005b600080fd5b3480156104a557600080fd5b506104ae611207565b60408051918252519081900360200190f35b3480156104cc57600080fd5b50610502600480360360a08110156104e357600080fd5b508035906020810135906040810135906060810135906080013561120d565b005b34801561051057600080fd5b506105196112e7565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561055357818101518382015260200161053b565b50505050905090810190601f1680156105805780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561059a57600080fd5b50610502600480360360208110156105b157600080fd5b50356001600160a01b031661130a565b3480156105cd57600080fd5b50610502600480360360208110156105e457600080fd5b50356113af565b3480156105f757600080fd5b506106246004803603604081101561060e57600080fd5b506001600160a01b038135169060200135611418565b604080519115158252519081900360200190f35b34801561064457600080fd5b506105026004803603602081101561065b57600080fd5b50356001600160a01b031661147f565b34801561067757600080fd5b506105026004803603606081101561068e57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156106b957600080fd5b8201836020820111156106cb57600080fd5b803590602001918460208302840111640100000000831117156106ed57600080fd5b9193509150356114fb565b34801561070457600080fd5b506106246004803603604081101561071b57600080fd5b5080359060200135611809565b34801561073457600080fd5b506104ae61181d565b34801561074957600080fd5b506104ae611823565b34801561075e57600080fd5b506105026004803603602081101561077557600080fd5b5035611829565b34801561078857600080fd5b506104ae6118b9565b34801561079d57600080fd5b50610624600480360360608110156107b457600080fd5b506001600160a01b038135811691602081013590911690604001356118bf565b3480156107e057600080fd5b50610502600480360360408110156107f757600080fd5b506001600160a01b0381358116916020013516611981565b34801561081b57600080fd5b506105026004803603604081101561083257600080fd5b50803515159060200135611ad5565b34801561084d57600080fd5b506104ae611b55565b34801561086257600080fd5b506104ae611bb4565b34801561087757600080fd5b506105026004803603604081101561088e57600080fd5b5080359060200135611bba565b3480156108a757600080fd5b50610502600480360360408110156108be57600080fd5b5080351515906020013560ff16611c72565b3480156108dc57600080fd5b50610502600480360360208110156108f357600080fd5b50356001600160a01b0316611cdb565b34801561090f57600080fd5b506106246004803603602081101561092657600080fd5b50356001600160a01b0316611d47565b34801561094257600080fd5b5061094b611d5b565b6040805160ff9092168252519081900360200190f35b34801561096d57600080fd5b506106246004803603604081101561098457600080fd5b506001600160a01b038135169060200135611d60565b3480156109a657600080fd5b506104ae611e3d565b3480156109bb57600080fd5b506104ae611e43565b3480156109d057600080fd5b50610624600480360360208110156109e757600080fd5b50356001600160a01b0316611e49565b348015610a0357600080fd5b5061062460048036036020811015610a1a57600080fd5b50356001600160a01b0316611e5e565b348015610a3657600080fd5b5061050260048036036020811015610a4d57600080fd5b5035611e73565b348015610a6057600080fd5b50610a69611eca565b604080516001600160a01b039092168252519081900360200190f35b348015610a9157600080fd5b5061062460048036036020811015610aa857600080fd5b50356001600160a01b0316611ed9565b348015610ac457600080fd5b5061050260048036036040811015610adb57600080fd5b506001600160a01b0381351690602001351515611eee565b348015610aff57600080fd5b5061062460048036036020811015610b1657600080fd5b50356001600160a01b0316611f61565b348015610b3257600080fd5b50610624611f6f565b348015610b4757600080fd5b5061050260048036036020811015610b5e57600080fd5b50351515611f7d565b348015610b7357600080fd5b506104ae611fd3565b348015610b8857600080fd5b50610624611fec565b348015610b9d57600080fd5b5061050260048036036040811015610bb457600080fd5b506001600160a01b0381351690602001351515611ff5565b348015610bd857600080fd5b506104ae612068565b348015610bed57600080fd5b506104ae61206e565b348015610c0257600080fd5b50610624612087565b348015610c1757600080fd5b506104ae60048036036020811015610c2e57600080fd5b50356001600160a01b0316612090565b348015610c4a57600080fd5b5061094b6120b8565b348015610c5f57600080fd5b506105026120c6565b348015610c7457600080fd5b506104ae612130565b348015610c8957600080fd5b506104ae612136565b348015610c9e57600080fd5b506104ae61213c565b348015610cb357600080fd5b50610624612142565b348015610cc857600080fd5b50610a69612152565b348015610cdd57600080fd5b50610624612161565b348015610cf257600080fd5b5061062460048036036020811015610d0957600080fd5b50356001600160a01b031661216a565b348015610d2557600080fd5b5061050260048036036040811015610d3c57600080fd5b810190602081018135640100000000811115610d5757600080fd5b820183602082011115610d6957600080fd5b80359060200191846020830284011164010000000083111715610d8b57600080fd5b919350915035151561217f565b348015610da457600080fd5b50610519612217565b348015610db957600080fd5b506104ae612236565b348015610dce57600080fd5b5061050260048036036020811015610de557600080fd5b503561223c565b348015610df857600080fd5b5061050260048036036020811015610e0f57600080fd5b5035612284565b348015610e2257600080fd5b50610a696122e0565b348015610e3757600080fd5b5061062460048036036040811015610e4e57600080fd5b506001600160a01b0381351690602001356122ef565b348015610e7057600080fd5b506104ae6122fc565b348015610e8557600080fd5b5061050260048036036020811015610e9c57600080fd5b50356001600160a01b0316612315565b348015610eb857600080fd5b5061050260048036036020811015610ecf57600080fd5b503561237f565b348015610ee257600080fd5b506104ae6123e2565b348015610ef757600080fd5b50610a696123e8565b348015610f0c57600080fd5b5061050260048036036020811015610f2357600080fd5b503515156123f7565b348015610f3857600080fd5b50610a69612459565b348015610f4d57600080fd5b506104ae60048036036020811015610f6457600080fd5b5035612468565b348015610f7757600080fd5b50610a6961249c565b348015610f8c57600080fd5b5061050260048036036060811015610fa357600080fd5b506001600160a01b0381358116916020810135821691604090910135166124ab565b348015610fd157600080fd5b506104ae60048036036040811015610fe857600080fd5b506001600160a01b0381358116916020013516612532565b34801561100c57600080fd5b506105026004803603604081101561102357600080fd5b5080351515906020013561255d565b34801561103e57600080fd5b50610a696125d5565b34801561105357600080fd5b506105026004803603602081101561106a57600080fd5b50356125e4565b34801561107d57600080fd5b506105026004803603602081101561109457600080fd5b50356001600160a01b031661262c565b3480156110b057600080fd5b50610502600480360360208110156110c757600080fd5b50356001600160a01b0316612690565b3480156110e357600080fd5b50610502600480360360408110156110fa57600080fd5b506001600160a01b0381351690602001351515612741565b34801561111e57600080fd5b506105026004803603604081101561113557600080fd5b506001600160a01b03813516906020013515156128b7565b34801561115957600080fd5b50610a6961292a565b34801561116e57600080fd5b506104ae612939565b34801561118357600080fd5b506106246004803603602081101561119a57600080fd5b50356001600160a01b031661293f565b3480156111b657600080fd5b50610624600480360360208110156111cd57600080fd5b50356001600160a01b0316612954565b3480156111e957600080fd5b506104ae612972565b3480156111fe57600080fd5b50610624612978565b60235481565b61121633612954565b611255576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600f85905560108490556011839055601282905561127f8261127985818989612a23565b90612a23565b601355601481905560028104601354106112e0576040805162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e2035302500000000604482015290519081900360640190fd5b5050505050565b60408051808201909152600981526853616e7461446f676560b81b602082015290565b61131333611d47565b61134d576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601c546040805163144fa6d760e01b81526001600160a01b0384811660048301529151919092169163144fa6d791602480830192600092919082900301818387803b15801561139b57600080fd5b505af11580156112e0573d6000803e3d6000fd5b6113b833611d47565b6113f2576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6114128161140c69054b40b1f852bda000006103e8612988565b906129ca565b60255550565b3360008181526006602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b61148833611d47565b6114c2576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6040516001600160a01b038216904780156108fc02916000818181858888f193505050501580156114f7573d6000803e3d6000fd5b5050565b61150433611d47565b61153e576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6000546001600160a01b038581169116146115a0576040805162461bcd60e51b815260206004820152601760248201527f416964726f7073206f6e6c792066726f6d206f776e6572000000000000000000604482015290519081900360640190fd5b6107d182106115e05760405162461bcd60e51b815260040180806020018281038252602e81526020018061393c602e913960400191505060405180910390fd5b633b9aca00810a8202806115f386612090565b1015611646576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015290519081900360640190fd5b60005b8381101561176d576116808686868481811061166157fe5b905060200201356001600160a01b0316600960ff16600a0a8602612a7d565b50600a600086868481811061169157fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff1661176557601c546001600160a01b03166314b6ca968686848181106116d857fe5b905060200201356001600160a01b031661170c8888868181106116f757fe5b905060200201356001600160a01b0316612090565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561175257600080fd5b505af1925050508015611763575060015b505b600101611649565b506001600160a01b0385166000908152600a602052604090205460ff166112e057601c546001600160a01b03166314b6ca96866117a981612090565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156117ef57600080fd5b505af1925050508015611800575060015b6112e0576112e0565b60008261181583612468565b119392505050565b60145481565b60225490565b61183233612954565b611871576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b60175447906001600160a01b03166108fc60648484025b049081150290604051600060405180830381858888f193505050501580156118b4573d6000803e3d6000fd5b505050565b60135481565b6001600160a01b03831660009081526006602090815260408083203384529091528120546000191461196c576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600682528381203382529091529190912054611947918490612b99565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b611977848484612c30565b90505b9392505050565b61198a33611d47565b6119c4576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b0382163014156119da57600080fd5b6000826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611a2957600080fd5b505afa158015611a3d573d6000803e3d6000fd5b505050506040513d6020811015611a5357600080fd5b50516040805163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905291519293509085169163a9059cbb916044808201926020929091908290030181600087803b158015611aab57600080fd5b505af1158015611abf573d6000803e3d6000fd5b505050506040513d60208110156112e057600080fd5b611ade33611d47565b611b18576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601b805460ff60a01b1916600160a01b8415158102919091179182905560ff9104168015611b465750600e54155b156114f75743600e55600d5550565b6021546004546001600160a01b039081166000908152600560205260408082205460035490931682528120549092611baf929091611ba99190611ba39069054b40b1f852bda000009061324e565b9061324e565b90612988565b905090565b60215481565b611bc333612954565b611c02576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601c54604080516316a4744b60e11b8152600481018590526024810184905290516001600160a01b0390921691632d48e8969160448082019260009290919082900301818387803b158015611c5657600080fd5b505af1158015611c6a573d6000803e3d6000fd5b505050505050565b611c7b33611d47565b611cb5576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601e805460ff19169215159290921761ff00191661010060ff9290921691909102179055565b611ce433611d47565b611d1e576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601b80546001600160a01b039092166001600160a01b0319909216821790556000526007602052565b6000546001600160a01b0390811691161490565b600990565b6000611d6b33611d47565b611da5576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b038316301415611dbb57600080fd5b6040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b0385169163a9059cbb9160448083019260209291908290030181600087803b158015611e0a57600080fd5b505af1158015611e1e573d6000803e3d6000fd5b505050506040513d6020811015611e3457600080fd5b50519392505050565b60225481565b60105481565b60076020526000908152604090205460ff1681565b600a6020526000908152604090205460ff1681565b611e7c33612954565b611ebb576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b47336108fc6064848402611888565b601b546001600160a01b031681565b60096020526000908152604090205460ff1681565b611ef733612954565b611f36576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b600061147982600019611418565b602054610100900460ff1681565b611f8633611d47565b611fc0576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600b805460ff1916911515919091179055565b6000611baf60215460245461298890919063ffffffff16565b601e5460ff1681565b611ffe33612954565b61203d576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b60115481565b6000611baf60215460235461298890919063ffffffff16565b60205460ff1681565b6021546001600160a01b03821660009081526005602052604081205490916114799190612988565b601e54610100900460ff1681565b601a60009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561211657600080fd5b505af115801561212a573d6000803e3d6000fd5b50505050565b60255481565b60125481565b60245481565b60205462010000900460ff161590565b6000546001600160a01b031690565b600b5460ff1681565b60086020526000908152604090205460ff1681565b61218833611d47565b6121c2576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60005b8281101561212a5781600c60008686858181106121de57fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff19169115159190911790556001016121c5565b60408051808201909152600581526453414e544160d81b602082015290565b600f5481565b61224533611d47565b61227f576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600e55565b61228d33612954565b6122cc576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620dbba081106122db57600080fd5b601d55565b601a546001600160a01b031681565b600061197a338484612c30565b6000611baf60215460255461298890919063ffffffff16565b61231e33611d47565b612358576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b61238833611d47565b6123c2576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6123dc8161140c69054b40b1f852bda000006103e8612988565b60245550565b600e5481565b601c546001600160a01b031681565b61240033612954565b61243f576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b602080549115156101000261ff0019909216919091179055565b6016546001600160a01b031681565b6000611479612475611b55565b601a54611ba9906124959060029061140c906001600160a01b0316612090565b85906129ca565b6018546001600160a01b031681565b6124b433612954565b6124f3576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601680546001600160a01b039485166001600160a01b031991821617909155601780549385169382169390931790925560188054919093169116179055565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b61256633612954565b6125a5576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6020805460ff19168315151790556125ce8161140c69054b40b1f852bda00000620186a0612988565b6023555050565b6017546001600160a01b031681565b6125ed33611d47565b612627576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601555565b61263533611d47565b61266f576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b61269933611d47565b6126d3576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b61274a33612954565b612789576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03821630148015906127b05750601a546001600160a01b03838116911614155b6127b957600080fd5b6001600160a01b0382166000908152600a60205260409020805460ff1916821580159190911790915561285657601c5460408051630a5b654b60e11b81526001600160a01b03858116600483015260006024830181905292519316926314b6ca969260448084019391929182900301818387803b15801561283957600080fd5b505af115801561284d573d6000803e3d6000fd5b505050506114f7565b601c546001600160a01b03166314b6ca968361287181612090565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611c5657600080fd5b6128c033612954565b6128ff576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6019546001600160a01b031681565b600d5481565b600c6020526000908152604090205460ff1681565b6001600160a01b031660009081526001602052604090205460ff1690565b60155481565b601b54600160a01b900460ff1681565b600061197a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613290565b6000826129d957506000611479565b828202828482816129e657fe5b041461197a5760405162461bcd60e51b815260040180806020018281038252602181526020018061396a6021913960400191505060405180910390fd5b60008282018381101561197a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080612a95602154846129ca90919063ffffffff16565b9050612afd8160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060056000896001600160a01b03166001600160a01b0316815260200190815260200160002054612b999092919063ffffffff16565b6001600160a01b038087166000908152600560205260408082209390935590861681522054612b2c9082612a23565b6001600160a01b03808616600081815260056020526040902092909255602154908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612b7d908590612988565b60408051918252519081900360200190a3506001949350505050565b60008184841115612c285760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612bed578181015183820152602001612bd5565b50505050905090810190601f168015612c1a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60205460009062010000900460ff1615612c5657612c4f848484612a7d565b905061197a565b6001600160a01b03841660009081526001602052604090205460ff16612ccb57601b54600160a01b900460ff16612ccb576040805162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015290519081900360640190fd5b6000612ce2602154846129ca90919063ffffffff16565b6001600160a01b03861660009081526001602052604090205490915060ff16158015612d1757506001600160a01b0384163014155b8015612d3157506003546001600160a01b03858116911614155b8015612d4b5750601a546001600160a01b03858116911614155b8015612d6557506017546001600160a01b03858116911614155b8015612d7f57506018546001600160a01b03858116911614155b8015612d9957506016546001600160a01b03858116911614155b15612df0576000612da985612090565b90506025548282011115612dee5760405162461bcd60e51b815260040180806020018281038252603e81526020018061398b603e913960400191505060405180910390fd5b505b601a546001600160a01b038681169116148015612e0f5750601e5460ff165b8015612e3457506001600160a01b03841660009081526009602052604090205460ff16155b15612ec4576001600160a01b0384166000908152601f60205260409020544211612e9b576040805162461bcd60e51b815260206004820152601360248201527262757920436f6f6c646f776e2065786973747360681b604482015290519081900360640190fd5b601e546001600160a01b0385166000908152601f6020526040902061010090910460ff16420190555b600b5460ff1615612f50576001600160a01b0385166000908152600c602052604090205460ff16158015612f1157506001600160a01b0384166000908152600c602052604090205460ff16155b612f50576040805162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b604482015290519081900360640190fd5b612f5a85826132f5565b612f62613363565b15612f6f57612f6f6133b8565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038816600090815260059091529190912054612fc1918390612b99565b6001600160a01b038616600090815260056020526040812091909155612fe686613811565b1580612ff85750612ff685613811565b155b61301f57601a5461301a90879084906001600160a01b03898116911614613830565b613021565b815b6001600160a01b0386166000908152600560205260409020549091506130479082612a23565b6001600160a01b038087166000908152600560209081526040808320949094559189168152600a909152205460ff166130ee57601c546001600160a01b03166314b6ca968761309581612090565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156130db57600080fd5b505af19250505080156130ec575060015b505b6001600160a01b0385166000908152600a602052604090205460ff1661318257601c546001600160a01b03166314b6ca968661312981612090565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561316f57600080fd5b505af1925050508015613180575060015b505b601c54601d54604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b1580156131d557600080fd5b505af19250505080156131e6575060015b50846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6132316021548561298890919063ffffffff16565b60408051918252519081900360200190a350600195945050505050565b600061197a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612b99565b600081836132df5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612bed578181015183820152602001612bd5565b5060008385816132eb57fe5b0495945050505050565b6024548111158061331e57506001600160a01b03821660009081526008602052604090205460ff165b6114f7576040805162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015290519081900360640190fd5b601a546000906001600160a01b0316331480159061338a575060205462010000900460ff16155b8015613398575060205460ff165b8015611baf57505060235430600090815260056020526040902054101590565b6020805462ff0000191662010000179055600f546021546023546000916133df9190612988565b905060006134016002611ba98561140c6013548761298890919063ffffffff16565b9050600061340f838361324e565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061344357fe5b6001600160a01b03928316602091820292909201015260025482519116908290600190811061346e57fe5b6001600160a01b0392831660209182029290920181019190915260195460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b838110156135085781810151838201526020016134f0565b505050509050019650505050505050600060405180830381600087803b15801561353157600080fd5b505af1158015613545573d6000803e3d6000fd5b50505050600061355e824761324e90919063ffffffff16565b90506000613579613570896002612988565b6013549061324e565b9050600061358e6002611ba98481878e6129ca565b905060006135ab83611ba9601054876129ca90919063ffffffff16565b905060006135c884611ba9601154886129ca90919063ffffffff16565b905060006135e585611ba9601254896129ca90919063ffffffff16565b9050601c60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561363757600080fd5b505af193505050508015613649575060015b506017546040516000916001600160a01b03169061753090859084818181858888f193505050503d806000811461369c576040519150601f19603f3d011682016040523d82523d6000602084013e6136a1565b606091505b50506018546040519192506001600160a01b0316906175309084906000818181858888f193505050503d80600081146136f6576040519150601f19603f3d011682016040523d82523d6000602084013e6136fb565b606091505b5060009250508b1590506137f6576019546016546040805163f305d71960e01b8152306004820152602481018f905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991889160c48082019260609290919082900301818588803b15801561377e57600080fd5b505af1158015613792573d6000803e3d6000fd5b50505050506040513d60608110156137a957600080fd5b50506021547f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b45069086906137dd908e90612988565b6040805192835260208301919091528051918290030190a15b50506020805462ff0000191690555050505050505050505050565b6001600160a01b031660009081526007602052604090205460ff161590565b60006064821561383f57506015545b602054610100900460ff168015613854575082155b1561385d575060005b60006138818261140c60135461140c6014546064028a61298890919063ffffffff16565b905083158015613896575043600d54600e5401115b156138ae576138ab605a61140c876064612988565b90505b306000908152600560205260409020546138c89082612a23565b306000818152600560205260409020919091556021546001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90613916908590612988565b60408051918252519081900360200190a3613931858261324e565b969550505050505056fe474153204572726f723a206d61782061697264726f70206c696d6974206973203230303020616464726573736573536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682ea26469706673582212206520b32d974181531061541039f92326d4924754483b134f08537f0c4528feee64736f6c6343000706003360806040526a084595161401484a000000600555610a8c600655662386f26fc10000600755600880547321be370d5312f44cb42ce377bc9b8a0cef1a4c836001600160a01b0319918216811790925560098054909116909117905534801561006657600080fd5b50604051610fe0380380610fe08339818101604052602081101561008957600080fd5b50516001600160a01b0381166100b35773f491e7b69e4244ad4002bc14e878a34207e38c296100b5565b805b600a80546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610ef1806100ef6000396000f3fe6080604052600436106100e85760003560e01c806399248ea71161008a578063e2d2e21911610059578063e2d2e219146102ae578063efca2eed146102c3578063ffb2c479146102d8578063ffd49c8414610302576100e8565b806399248ea71461020f578063997664d714610240578063ce7c2ac214610255578063d0e30db0146102a6576100e8565b806328fd3198116100c657806328fd3198146101825780632d48e896146101b55780633a98ef39146101e55780634fab0ae8146101fa576100e8565b806311ce023d146100ed578063144fa6d71461011457806314b6ca9614610149575b600080fd5b3480156100f957600080fd5b50610102610317565b60408051918252519081900360200190f35b34801561012057600080fd5b506101476004803603602081101561013757600080fd5b50356001600160a01b031661031d565b005b34801561015557600080fd5b506101476004803603604081101561016c57600080fd5b506001600160a01b0381351690602001356103df565b34801561018e57600080fd5b50610102600480360360208110156101a557600080fd5b50356001600160a01b0316610504565b3480156101c157600080fd5b50610147600480360360408110156101d857600080fd5b5080359060200135610590565b3480156101f157600080fd5b506101026105b2565b34801561020657600080fd5b506101026105b8565b34801561021b57600080fd5b506102246105be565b604080516001600160a01b039092168252519081900360200190f35b34801561024c57600080fd5b506101026105cd565b34801561026157600080fd5b506102886004803603602081101561027857600080fd5b50356001600160a01b03166105d3565b60408051938452602084019290925282820152519081900360600190f35b6101476105f4565b3480156102ba57600080fd5b5061010261089b565b3480156102cf57600080fd5b506101026108a1565b3480156102e457600080fd5b50610147600480360360208110156102fb57600080fd5b50356108a7565b34801561030e57600080fd5b50610102610989565b60055481565b6000546001600160a01b0316331461033457600080fd5b600880546001600160a01b0319166001600160a01b0383811691909117909155600a54604080516315ab88c960e31b81529051919092169163ad5c4648916004808301926020929190829003018186803b15801561039157600080fd5b505afa1580156103a5573d6000803e3d6000fd5b505050506040513d60208110156103bb57600080fd5b5051600980546001600160a01b0319166001600160a01b0390921691909117905550565b6000546001600160a01b031633146103f657600080fd5b6001600160a01b0382166000908152600e60205260409020541561041d5761041d8261098f565b60008111801561044357506001600160a01b0382166000908152600e6020526040902054155b156104565761045182610ab7565b610489565b8015801561047b57506001600160a01b0382166000908152600e602052604090205415155b156104895761048982610b18565b6001600160a01b0382166000908152600e60205260409020546001546104ba9183916104b491610c05565b90610c50565b6001556001600160a01b0382166000908152600e602052604090208190556104e181610caa565b6001600160a01b039092166000908152600e602052604090206001019190915550565b6001600160a01b0381166000908152600e60205260408120546105295750600061058b565b6001600160a01b0382166000908152600e602052604081205461054b90610caa565b6001600160a01b0384166000908152600e602052604090206001015490915080821161057c5760009250505061058b565b6105868282610c05565b925050505b919050565b6000546001600160a01b031633146105a757600080fd5b600691909155600755565b60015481565b60075481565b6008546001600160a01b031681565b60025481565b600e6020526000908152604090208054600182015460029092015490919083565b6000546001600160a01b0316331461060b57600080fd5b600854604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561065657600080fd5b505afa15801561066a573d6000803e3d6000fd5b505050506040513d602081101561068057600080fd5b50516040805160028082526060820183529293506000929091602083019080368337505060095482519293506001600160a01b0316918391506000906106c257fe5b6001600160a01b0392831660209182029290920101526008548251911690829060019081106106ed57fe5b6001600160a01b03928316602091820292909201015260095460085482169116146107d357600a5460405163b6f9de9560e01b8152600060048201818152306044840181905242606485018190526080602486019081528751608487015287516001600160a01b039097169663b6f9de95963496958a9594939092909160a40190602080880191028083838b5b8381101561079257818101518382015260200161077a565b50505050905001955050505050506000604051808303818588803b1580156107b957600080fd5b505af11580156107cd573d6000803e3d6000fd5b50505050505b600854604080516370a0823160e01b815230600482015290516000926108599286926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561082757600080fd5b505afa15801561083b573d6000803e3d6000fd5b505050506040513d602081101561085157600080fd5b505190610c05565b6002549091506108699082610c50565b6002556001546005546108939161088a916108849085610cc7565b90610d20565b60045490610c50565b600455505050565b60045481565b60035481565b6000546001600160a01b031633146108be57600080fd5b600b54806108cc5750610986565b6000805a905060005b84831080156108e357508381105b156109815783600f54106108f7576000600f555b610923600b600f548154811061090957fe5b6000918252602090912001546001600160a01b0316610d62565b1561095457610954600b600f548154811061093a57fe5b6000918252602090912001546001600160a01b031661098f565b6109696109625a8490610c05565b8490610c50565b92505a600f80546001908101909155909250016108d5565b505050505b50565b60065481565b6001600160a01b0381166000908152600e60205260409020546109b157610986565b60006109bc82610504565b90508015610ab3576003546109d19082610c50565b6003556008546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610a2a57600080fd5b505af1158015610a3e573d6000803e3d6000fd5b505050506040513d6020811015610a5457600080fd5b50506001600160a01b0382166000908152600d60209081526040808320429055600e909152902060020154610a899082610c50565b6001600160a01b0383166000908152600e602052604090206002810191909155546104e190610caa565b5050565b600b80546001600160a01b039092166000818152600c60205260408120849055600184018355919091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990910180546001600160a01b0319169091179055565b600b80546000198101908110610b2a57fe5b60009182526020808320909101546001600160a01b038481168452600c909252604090922054600b80549290931692918110610b6257fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600c918290526040812054600b8054919392916000198101908110610bb057fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902055600b805480610be057fe5b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610c4783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d9e565b90505b92915050565b600082820183811015610c47576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610c4a60055461088460045485610cc790919063ffffffff16565b600082610cd657506000610c4a565b82820282848281610ce357fe5b0414610c475760405162461bcd60e51b8152600401808060200182810382526021815260200180610e9b6021913960400191505060405180910390fd5b6000610c4783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610e35565b6006546001600160a01b0382166000908152600d60205260408120549091429101108015610c4a5750600754610d9783610504565b1192915050565b60008184841115610e2d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610df2578181015183820152602001610dda565b50505050905090810190601f168015610e1f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610e845760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610df2578181015183820152602001610dda565b506000838581610e9057fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220a09e8c082618d732d8064ee9a59b4c65586363bdb850780c853fb433589b6d7c64736f6c63430007060033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77

Deployed ByteCode Sourcemap

12245:17935:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14532:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;26814:512;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26814:512:0;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16208:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29984:128;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29984:128:0;-1:-1:-1;;;;;29984:128:0;;:::i;29623:175::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29623:175:0;;:::i;16662:216::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16662:216:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;17111:120;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17111:120:0;-1:-1:-1;;;;;17111:120:0;;:::i;17235:824::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17235:824:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17235:824:0;-1:-1:-1;17235:824:0;;:::i;29227:150::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29227:150:0;;;;;;;:::i;13482:36::-;;;;;;;;;;;;;:::i;15938:88::-;;;;;;;;;;;;;:::i;22502:218::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22502:218:0;;:::i;13397:78::-;;;;;;;;;;;;;:::i;18355:364::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18355:364:0;;;;;;;;;;;;;;;;;:::i;16882:225::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16882:225:0;;;;;;;;;;:::i;23109:250::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23109:250:0;;;;;;;;;:::i;28895:149::-;;;;;;;;;;;;;:::i;14406:19::-;;;;;;;;;;;;;:::i;28319:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28319:183:0;;;;;;;:::i;23805:164::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23805:164:0;;;;;;;;;;;:::i;27960:139::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27960:139:0;-1:-1:-1;;;;;27960:139:0;;:::i;3976:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3976:103:0;-1:-1:-1;;;;;3976:103:0;;:::i;16032:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28654:233;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;28654:233:0;;;;;;;;:::i;14432:27::-;;;;;;;;;;;;;:::i;13278:30::-;;;;;;;;;;;;;:::i;12832:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12832:44:0;-1:-1:-1;;;;;12832:44:0;;:::i;12994:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12994:49:0;-1:-1:-1;;;;;12994:49:0;;:::i;22728:215::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22728:215:0;;:::i;13784:31::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;13784:31:0;;;;;;;;;;;;;;12938:49;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12938:49:0;-1:-1:-1;;;;;12938:49:0;;:::i;26676:130::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26676:130:0;;;;;;;;;;:::i;18067:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18067:116:0;-1:-1:-1;;;;;18067:116:0;;:::i;14134:34::-;;;;;;;;;;;;;:::i;23480:99::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23480:99:0;;;;:::i;29507:108::-;;;;;;;;;;;;;:::i;13951:37::-;;;;;;;;;;;;;:::i;26286:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26286:120:0;;;;;;;;;;:::i;13315:34::-;;;;;;;;;;;;;:::i;28200:111::-;;;;;;;;;;;;;:::i;14097:30::-;;;;;;;;;;;;;:::i;16380:129::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16380:129:0;-1:-1:-1;;;;;16380:129:0;;:::i;13995:39::-;;;;;;;;;;;;;:::i;27874:74::-;;;;;;;;;;;;;:::i;14695:56::-;;;;;;;;;;;;;:::i;13356:34::-;;;;;;;;;;;;;:::i;14625:53::-;;;;;;;;;;;;;:::i;28107:85::-;;;;;;;;;;;;;:::i;16294:78::-;;;;;;;;;;;;;:::i;13052:32::-;;;;;;;;;;;;;:::i;12883:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12883:48:0;-1:-1:-1;;;;;12883:48:0;;:::i;23587:210::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23587:210:0;-1:-1:-1;23587:210:0;;;;:::i;16118:84::-;;;;;;;;;;;;;:::i;13237:34::-;;;;;;;;;;;;;:::i;23367:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23367:105:0;;:::i;28510:136::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28510:136:0;;:::i;13756:19::-;;;;;;;;;;;;;:::i;18191:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18191:156:0;;;;;;;;:::i;29385:114::-;;;;;;;;;;;;;:::i;3769:94::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3769:94:0;-1:-1:-1;;;;;3769:94:0;;:::i;29806:170::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29806:170:0;;:::i;13182:29::-;;;;;;;;;;;;;:::i;13865:38::-;;;;;;;;;;;;;:::i;26414:118::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26414:118:0;;;;:::i;13598:36::-;;;;;;;;;;;;;:::i;29052:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29052:167:0;;:::i;13683:33::-;;;;;;;;;;;;;:::i;27334:309::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27334:309:0;;;;;;;;;;;;;;;;;;;:::i;16521:133::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16521:133:0;;;;;;;;;;:::i;27651:211::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27651:211:0;;;;;;;;;:::i;13641:35::-;;;;;;;;;;;;;:::i;22951:121::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22951:121:0;;:::i;3871:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3871:97:0;-1:-1:-1;;;;;3871:97:0;;:::i;4202:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4202:173:0;-1:-1:-1;;;;;4202:173:0;;:::i;25927:347::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;25927:347:0;;;;;;;;;;:::i;26540:128::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26540:128:0;;;;;;;;;;:::i;13725:24::-;;;;;;;;;;;;;:::i;13146:29::-;;;;;;;;;;;;;:::i;13091:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13091:46:0;-1:-1:-1;;;;;13091:46:0;;:::i;4087:107::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4087:107:0;-1:-1:-1;;;;;4087:107:0;;:::i;13527:36::-;;;;;;;;;;;;;:::i;13825:31::-;;;;;;;;;;;;;:::i;14532:51::-;;;;:::o;26814:512::-;3710:24;3723:10;3710:12;:24::i;:::-;3702:48;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;;;;26974:12:::1;:28:::0;;;27013:9:::1;:22:::0;;;27046:12:::1;:28:::0;;;27085:10:::1;:24:::0;;;27131:65:::1;27098:11:::0;27131:48:::1;27061:13:::0;27131:48;26989:13;27025:10;27131:17:::1;:29::i;:::-;:33:::0;::::1;:48::i;:65::-;27120:8;:76:::0;27207:14:::1;:32:::0;;;27284:1:::1;27224:15:::0;27269:16:::1;27258:8;;:27;27250:68;;;::::0;;-1:-1:-1;;;27250:68:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;26814:512:::0;;;;;:::o;16208:80::-;16280:5;;;;;;;;;;;;-1:-1:-1;;;16280:5:0;;;;16208:80;:::o;29984:128::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;30068:11:::1;::::0;:36:::1;::::0;;-1:-1:-1;;;30068:36:0;;-1:-1:-1;;;;;30068:36:0;;::::1;;::::0;::::1;::::0;;;:11;;;::::1;::::0;:20:::1;::::0;:36;;;;;:11:::1;::::0;:36;;;;;;;:11;;:36;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;29623:175:::0;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;29744:46:::1;29766:23:::0;29744:17:::1;14316:27:::0;29756:4:::1;29744:11;:17::i;:::-;:21:::0;::::1;:46::i;:::-;29726:15;:64:::0;-1:-1:-1;29623:175:0:o;16662:216::-;16766:10;16737:4;16754:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;16754:32:0;;;;;;;;;;;:41;;;16811:37;;;;;;;16737:4;;16754:32;;16766:10;;16811:37;;;;;;;;-1:-1:-1;16866:4:0;16662:216;;;;;:::o;17111:120::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;17185:42:::1;::::0;-1:-1:-1;;;;;17185:19:0;::::1;::::0;17205:21:::1;17185:42:::0;::::1;;;::::0;::::1;::::0;;;17205:21;17185:19;:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17111:120:::0;:::o;17235:824::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;17354:5:::1;::::0;-1:-1:-1;;;;;17354:13:0;;::::1;:5:::0;::::1;:13;17346:48;;;::::0;;-1:-1:-1;;;17346:48:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;17428:4;17409:23:::0;::::1;17401:81;;;;-1:-1:-1::0;;;17401:81:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17539:13:::0;17529:24;::::1;:43:::0;::::1;::::0;17589:15:::1;17599:4:::0;17589:9:::1;:15::i;:::-;:23;;17581:63;;;::::0;;-1:-1:-1;;;17581:63:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;17657:6;17653:265;17667:20:::0;;::::1;17653:265;;;17704:58;17719:4;17724:9;;17734:1;17724:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;17724:12:0::1;12660:1;17747:13;;:2;:13;17737:6;:24;17704:14;:58::i;:::-;;17777:16;:30;17794:9;;17804:1;17794:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;17794:12:0::1;17777:30:::0;;-1:-1:-1;17777:30:0;::::1;::::0;;;;;;-1:-1:-1;17777:30:0;;::::1;;17773:138;;17828:11;::::0;-1:-1:-1;;;;;17828:11:0::1;:20;17849:9:::0;;17859:1;17849:12;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;17849:12:0::1;17863:23;17873:9;;17883:1;17873:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;17873:12:0::1;17863:9;:23::i;:::-;17828:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;17828:59:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;17824:75:::0;::::1;17689:3;;17653:265;;;-1:-1:-1::0;;;;;;17955:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;::::1;;17951:105;;17994:11;::::0;-1:-1:-1;;;;;17994:11:0::1;:20;18015:4:::0;18021:15:::1;18015:4:::0;18021:9:::1;:15::i;:::-;17994:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;17994:43:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;17990:59;;;;29227:150:::0;29307:4;29363:6;29331:29;29351:8;29331:19;:29::i;:::-;:38;;29227:150;-1:-1:-1;;;29227:150:0:o;13482:36::-;;;;:::o;15938:88::-;16011:12;;15938:88;:::o;22502:218::-;3710:24;3723:10;3710:12;:24::i;:::-;3702:48;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;;;;22646:20:::1;::::0;22606:21:::1;::::0;-1:-1:-1;;;;;22646:20:0::1;22638:74;22708:3;22677:28:::0;;::::1;:34;;22638:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;3752:1;22502:218:::0;:::o;13397:78::-;;;;:::o;18355:364::-;-1:-1:-1;;;;;18475:19:0;;18455:4;18475:19;;;:11;:19;;;;;;;;18495:10;18475:31;;;;;;;;-1:-1:-1;;18475:46:0;18472:180;;18571:69;;;;;;;;;;;-1:-1:-1;;;18571:69:0;;;;;;;;-1:-1:-1;;;;;18571:19:0;;-1:-1:-1;18571:19:0;;;:11;:19;;;;;18591:10;18571:31;;;;;;;;;;:69;;18607:6;;18571:35;:69::i;:::-;-1:-1:-1;;;;;18537:19:0;;;;;;:11;:19;;;;;;;;18557:10;18537:31;;;;;;;:103;18472:180;18671:40;18685:6;18693:9;18704:6;18671:13;:40::i;:::-;18664:47;;18355:364;;;;;;:::o;16882:225::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;16974:31:0;::::1;17000:4;16974:31;;16965:41;;;::::0;::::1;;17017:15;17035:5;-1:-1:-1::0;;;;;17035:15:0::1;;17059:4;17035:30;;;;;;;;;;;;;-1:-1:-1::0;;;;;17035:30:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;17035:30:0;17076:27:::1;::::0;;-1:-1:-1;;;17076:27:0;;-1:-1:-1;;;;;17076:27:0;;::::1;;::::0;::::1;::::0;;;;;;;;;17035:30;;-1:-1:-1;17076:14:0;;::::1;::::0;::::1;::::0;:27;;;;;17035:30:::1;::::0;17076:27;;;;;;;;-1:-1:-1;17076:14:0;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;23109:250:::0;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;23195:11:::1;:21:::0;;-1:-1:-1;;;;23195:21:0::1;-1:-1:-1::0;;;23195:21:0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;::::1;23230:11:::0;::::1;;:30:::0;::::1;;;-1:-1:-1::0;23245:10:0::1;::::0;:15;23230:30:::1;23227:125;;;23289:12;23276:10;:25:::0;23316:10:::1;:24:::0;-1:-1:-1;23109:250:0:o;28895:149::-;29031:4;;29019;;-1:-1:-1;;;;;29019:4:0;;;28948:7;29009:15;;;:9;:15;;;;;;;28998:4;;;;;28988:15;;;;;28948:7;;28975:61;;29031:4;;28976:49;;29009:15;28976:28;;14316:27;;28976:11;:28::i;:::-;:32;;:49::i;:::-;28975:55;;:61::i;:::-;28968:68;;28895:149;:::o;14406:19::-;;;;:::o;28319:183::-;3710:24;3723:10;3710:12;:24::i;:::-;3702:48;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;;;;28429:11:::1;::::0;:65:::1;::::0;;-1:-1:-1;;;28429:65:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;-1:-1:-1;;;;;28429:11:0;;::::1;::::0;:35:::1;::::0;:65;;;;;:11:::1;::::0;:65;;;;;;;;:11;;:65;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28319:183:::0;;:::o;23805:164::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;23889:18:::1;:28:::0;;-1:-1:-1;;23889:28:0::1;::::0;::::1;;::::0;;;::::1;-1:-1:-1::0;;23928:33:0::1;23889:28;;23928:33:::0;;;::::1;::::0;;;::::1;;::::0;;23805:164::o;27960:139::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;28023:12:::1;:36:::0;;-1:-1:-1;;;;;28023:36:0;;::::1;-1:-1:-1::0;;;;;;28023:36:0;;::::1;::::0;::::1;::::0;;:12:::1;28070:21:::0;:11:::1;:21;::::0;27960:139::o;3976:103::-;4031:4;4066:5;-1:-1:-1;;;;;4066:5:0;;;4055:16;;;;3976:103::o;16032:80::-;12660:1;16032:80;:::o;28654:233::-;28739:12;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;28773:38:0;::::1;28806:4;28773:38;;28764:48;;;::::0;::::1;;28830:49;::::0;;-1:-1:-1;;;28830:49:0;;28860:10:::1;28830:49;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;;;;;28830:29:0;::::1;::::0;::::1;::::0;:49;;;;;::::1;::::0;;;;;;;;-1:-1:-1;28830:29:0;:49;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;28830:49:0;;28654:233;-1:-1:-1;;;28654:233:0:o;14432:27::-;;;;:::o;13278:30::-;;;;:::o;12832:44::-;;;;;;;;;;;;;;;:::o;12994:49::-;;;;;;;;;;;;;;;:::o;22728:215::-;3710:24;3723:10;3710:12;:24::i;:::-;3702:48;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;;;;22839:21:::1;22879:10;22871:64;22931:3;22900:28:::0;;::::1;:34;::::0;13784:31;;;-1:-1:-1;;;;;13784:31:0;;:::o;12938:49::-;;;;;;;;;;;;;;;:::o;26676:130::-;3710:24;3723:10;3710:12;:24::i;:::-;3702:48;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;26765:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;26765:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26676:130::o;18067:116::-;18122:4;18146:29;18154:7;-1:-1:-1;;18146:7:0;:29::i;14134:34::-;;;;;;;;;:::o;23480:99::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;23548:13:::1;:23:::0;;-1:-1:-1;;23548:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23480:99::o;29507:108::-;29558:7;29585:22;29602:4;;29585:12;;:16;;:22;;;;:::i;13951:37::-;;;;;;:::o;26286:120::-;3710:24;3723:10;3710:12;:24::i;:::-;3702:48;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;26370:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;26370:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26286:120::o;13315:34::-;;;;:::o;28200:111::-;28253:7;28280:23;28298:4;;28280:13;;:17;;:23;;;;:::i;14097:30::-;;;;;;:::o;16380:129::-;16496:4;;-1:-1:-1;;;;;16473:18:0;;16446:7;16473:18;;;:9;:18;;;;;;16446:7;;16473:28;;:18;:22;:28::i;13995:39::-;;;;;;;;;:::o;27874:74::-;27928:4;;;;;;;;;-1:-1:-1;;;;;27928:4:0;-1:-1:-1;;;;;27916:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27874:74::o;14695:56::-;;;;:::o;13356:34::-;;;;:::o;14625:53::-;;;;:::o;28107:85::-;28178:6;;;;;;;28177:7;;28107:85::o;16294:78::-;16346:7;16364:5;-1:-1:-1;;;;;16364:5:0;16294:78;:::o;13052:32::-;;;;;;:::o;12883:48::-;;;;;;;;;;;;;;;:::o;23587:210::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;23689:9:::1;23684:106;23700:20:::0;;::::1;23684:106;;;23772:6;23742:13;:27;23756:9;;23766:1;23756:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;23756:12:0::1;23742:27:::0;;-1:-1:-1;23742:27:0;::::1;::::0;;;;;;-1:-1:-1;23742:27:0;:36;;-1:-1:-1;;23742:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;23722:3:0::1;23684:106;;16118:84:::0;16192:7;;;;;;;;;;;;-1:-1:-1;;;16192:7:0;;;;16118:84;:::o;13237:34::-;;;;:::o;23367:105::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;23439:10:::1;:25:::0;23367:105::o;28510:136::-;3710:24;3723:10;3710:12;:24::i;:::-;3702:48;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;;;;28600:6:::1;28594:3;:12;28586:21;;;::::0;::::1;;28618:14;:20:::0;28510:136::o;13756:19::-;;;-1:-1:-1;;;;;13756:19:0;;:::o;18191:156::-;18271:4;18295:44;18309:10;18321:9;18332:6;18295:13;:44::i;29385:114::-;29439:7;29466:25;29486:4;;29466:15;;:19;;:25;;;;:::i;3769:94::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3829:19:0::1;;::::0;;;3851:4:::1;3829:19;::::0;;;;;;;:26;;-1:-1:-1;;3829:26:0::1;::::0;;::::1;::::0;;3769:94::o;29806:170::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;29921:47:::1;29943:24:::0;29921:17:::1;14316:27:::0;29933:4:::1;29921:11;:17::i;:47::-;29906:12;:62:::0;-1:-1:-1;29806:170:0:o;13182:29::-;;;;:::o;13865:38::-;;;-1:-1:-1;;;;;13865:38:0;;:::o;26414:118::-;3710:24;3723:10;3710:12;:24::i;:::-;3702:48;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;;;;26494:14:::1;:30:::0;;;::::1;;;;-1:-1:-1::0;;26494:30:0;;::::1;::::0;;;::::1;::::0;;26414:118::o;13598:36::-;;;-1:-1:-1;;;;;13598:36:0;;:::o;29052:167::-;29120:7;29147:64;29188:22;:20;:22::i;:::-;29170:4;;29147:36;;29160:22;;29180:1;;29160:15;;-1:-1:-1;;;;;29170:4:0;29160:9;:15::i;:22::-;29147:8;;:12;:36::i;13683:33::-;;;-1:-1:-1;;;;;13683:33:0;;:::o;27334:309::-;3710:24;3723:10;3710:12;:24::i;:::-;3702:48;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;;;;27483:21:::1;:46:::0;;-1:-1:-1;;;;;27483:46:0;;::::1;-1:-1:-1::0;;;;;;27483:46:0;;::::1;;::::0;;;27540:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;27595:18:::1;:40:::0;;;;;::::1;::::0;::::1;;::::0;;27334:309::o;16521:133::-;-1:-1:-1;;;;;16623:19:0;;;16605:7;16623:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;16521:133::o;27651:211::-;3710:24;3723:10;3710:12;:24::i;:::-;3702:48;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;;;;27758:11:::1;:22:::0;;-1:-1:-1;;27758:22:0::1;::::0;::::1;;;::::0;;27807:47:::1;27831:22:::0;27807:19:::1;14316:27:::0;27819:6:::1;27807:11;:19::i;:47::-;27791:13;:63:::0;-1:-1:-1;;27651:211:0:o;13641:35::-;;;-1:-1:-1;;;;;13641:35:0;;:::o;22951:121::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;23029:14:::1;:27:::0;22951:121::o;3871:97::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3933:19:0::1;3955:5;3933:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;3933:27:0::1;::::0;;3871:97::o;4202:173::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;4278:5:::1;:11:::0;;-1:-1:-1;;;;;;4278:11:0::1;-1:-1:-1::0;;;;;4278:11:0;::::1;::::0;;::::1;::::0;;4300:19;;;-1:-1:-1;4300:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;4300:26:0::1;::::0;;::::1;::::0;;;4342:25;;;;;;;::::1;::::0;;;;;;;;;::::1;4202:173:::0;:::o;25927:347::-;3710:24;3723:10;3710:12;:24::i;:::-;3702:48;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;26024:23:0;::::1;26042:4;26024:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;26061:4:0::1;::::0;-1:-1:-1;;;;;26051:14:0;;::::1;26061:4:::0;::::1;26051:14;;26024:41;26016:50;;;::::0;::::1;;-1:-1:-1::0;;;;;26077:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;26077:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;26121:146:::1;;26146:11;::::0;:31:::1;::::0;;-1:-1:-1;;;26146:31:0;;-1:-1:-1;;;;;26146:31:0;;::::1;;::::0;::::1;::::0;:11:::1;:31:::0;;;;;;;;:11;::::1;::::0;:20:::1;::::0;:31;;;;;:11;;:31;;;;;;:11;;:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26121:146;;;26208:11;::::0;-1:-1:-1;;;;;26208:11:0::1;:20;26229:6:::0;26237:17:::1;26229:6:::0;26237:9:::1;:17::i;:::-;26208:47;;;;;;;;;;;;;-1:-1:-1::0;;;;;26208:47:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;26540:128:::0;3710:24;3723:10;3710:12;:24::i;:::-;3702:48;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;26628:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;26628:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26540:128::o;13725:24::-;;;-1:-1:-1;;;;;13725:24:0;;:::o;13146:29::-;;;;:::o;13091:46::-;;;;;;;;;;;;;;;:::o;4087:107::-;-1:-1:-1;;;;;4167:19:0;4143:4;4167:19;;;:14;:19;;;;;;;;;4087:107::o;13527:36::-;;;;:::o;13825:31::-;;;-1:-1:-1;;;13825:31:0;;;;;:::o;1012:132::-;1070:7;1097:39;1101:1;1104;1097:39;;;;;;;;;;;;;;;;;:3;:39::i;756:250::-;814:7;838:6;834:47;;-1:-1:-1;868:1:0;861:8;;834:47;905:5;;;909:1;905;:5;:1;929:5;;;;;:10;921:56;;;;-1:-1:-1;;;921:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;231:179;289:7;321:5;;;345:6;;;;337:46;;;;;-1:-1:-1;;;337:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;20879:388;20972:4;20989:15;21007:16;21018:4;;21007:6;:10;;:16;;;;:::i;:::-;20989:34;;21054:54;21076:7;21054:54;;;;;;;;;;;;;-1:-1:-1;;;21054:54:0;;;:9;:17;21064:6;-1:-1:-1;;;;;21054:17:0;-1:-1:-1;;;;;21054:17:0;;;;;;;;;;;;;:21;;:54;;;;;:::i;:::-;-1:-1:-1;;;;;21034:17:0;;;;;;;:9;:17;;;;;;:74;;;;21142:20;;;;;;;:33;;21167:7;21142:24;:33::i;:::-;-1:-1:-1;;;;;21119:20:0;;;;;;;:9;:20;;;;;:56;;;;21231:4;;21191:46;;;;;;21219:17;;:7;;:11;:17::i;:::-;21191:46;;;;;;;;;;;;;;;-1:-1:-1;21255:4:0;;20879:388;-1:-1:-1;;;;20879:388:0:o;558:192::-;644:7;680:12;672:6;;;;664:29;;;;-1:-1:-1;;;664:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;716:5:0;;;558:192::o;18727:2136::-;18839:6;;18819:4;;18839:6;;;;;18836:63;;;18855:41;18870:6;18878:9;18889:6;18855:14;:41::i;:::-;18848:48;;;;18836:63;-1:-1:-1;;;;;18915:22:0;;;;;;:14;:22;;;;;;;;18911:97;;18961:11;;-1:-1:-1;;;18961:11:0;;;;18953:43;;;;;-1:-1:-1;;;18953:43:0;;;;;;;;;;;;-1:-1:-1;;;18953:43:0;;;;;;;;;;;;;;;19020:15;19038:16;19049:4;;19038:6;:10;;:16;;;;:::i;:::-;-1:-1:-1;;;;;19072:22:0;;;;;;:14;:22;;;;;;19020:34;;-1:-1:-1;19072:22:0;;19071:23;:53;;;;-1:-1:-1;;;;;;19098:26:0;;19119:4;19098:26;;19071:53;:84;;;;-1:-1:-1;19150:4:0;;-1:-1:-1;;;;;19129:26:0;;;19150:4;;19129:26;;19071:84;:105;;;;-1:-1:-1;19172:4:0;;-1:-1:-1;;;;;19159:17:0;;;19172:4;;19159:17;;19071:105;:142;;;;-1:-1:-1;19193:20:0;;-1:-1:-1;;;;;19180:33:0;;;19193:20;;19180:33;;19071:142;:177;;;;-1:-1:-1;19230:18:0;;-1:-1:-1;;;;;19217:31:0;;;19230:18;;19217:31;;19071:177;:216;;;;-1:-1:-1;19266:21:0;;-1:-1:-1;;;;;19253:34:0;;;19266:21;;19253:34;;19071:216;19067:409;;;19303:18;19324:20;19334:9;19324;:20::i;:::-;19303:41;;19393:15;;19381:7;19368:10;:20;19367:41;;19359:115;;;;-1:-1:-1;;;19359:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19067:409;;19510:4;;-1:-1:-1;;;;;19500:14:0;;;19510:4;;19500:14;:49;;;;-1:-1:-1;19531:18:0;;;;19500:49;:94;;;;-1:-1:-1;;;;;;19567:27:0;;;;;;:16;:27;;;;;;;;19566:28;19500:94;19496:281;;;-1:-1:-1;;;;;19619:24:0;;;;;;:13;:24;;;;;;19646:15;-1:-1:-1;19611:73:0;;;;;-1:-1:-1;;;19611:73:0;;;;;;;;;;;;-1:-1:-1;;;19611:73:0;;;;;;;;;;;;;;;19744:21;;-1:-1:-1;;;;;19699:24:0;;;;;;:13;:24;;;;;19744:21;;;;;;19726:15;:39;19699:66;;19496:281;19814:13;;;;19811:122;;;-1:-1:-1;;;;;19852:21:0;;;;;;:13;:21;;;;;;;;19851:22;:51;;;;-1:-1:-1;;;;;;19878:24:0;;;;;;:13;:24;;;;;;;;19877:25;19851:51;19843:74;;;;;-1:-1:-1;;;19843:74:0;;;;;;;;;;;;-1:-1:-1;;;19843:74:0;;;;;;;;;;;;;;;19986:29;19999:6;20007:7;19986:12;:29::i;:::-;20031:16;:14;:16::i;:::-;20028:35;;;20050:10;:8;:10::i;:::-;20122:54;;;;;;;;;;;-1:-1:-1;;;20122:54:0;;;;;;;;-1:-1:-1;;;;;20122:17:0;;-1:-1:-1;20122:17:0;;;:9;:17;;;;;;;;:54;;20144:7;;20122:21;:54::i;:::-;-1:-1:-1;;;;;20102:17:0;;;;;;:9;:17;;;;;:74;;;;20216:21;20112:6;20216:13;:21::i;:::-;20215:22;:51;;;;20242:24;20256:9;20242:13;:24::i;:::-;20241:25;20215:51;20214:110;;20318:4;;20280:44;;20288:6;;20296:7;;-1:-1:-1;;;;;20305:17:0;;;20318:4;;20305:17;20280:7;:44::i;:::-;20214:110;;;20270:7;20214:110;-1:-1:-1;;;;;20358:20:0;;;;;;:9;:20;;;;;;20189:135;;-1:-1:-1;20358:40:0;;20189:135;20358:24;:40::i;:::-;-1:-1:-1;;;;;20335:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;20444:24;;;;;:16;:24;;;;;;;20440:119;;20489:11;;-1:-1:-1;;;;;20489:11:0;:20;20510:6;20518:17;20510:6;20518:9;:17::i;:::-;20489:47;;;;;;;;;;;;;-1:-1:-1;;;;;20489:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20485:63;;-1:-1:-1;;;;;20575:27:0;;;;;;:16;:27;;;;;;;;20571:129;;20623:11;;-1:-1:-1;;;;;20623:11:0;:20;20644:9;20655:20;20644:9;20655;:20::i;:::-;20623:53;;;;;;;;;;;;;-1:-1:-1;;;;;20623:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20619:69;;20716:11;;20736:14;;20716:35;;;-1:-1:-1;;;;;;20716:35:0;;;;;;;;;;-1:-1:-1;;;;;20716:11:0;;;;:19;;:35;;;;;:11;;:35;;;;;;;;:11;;:35;;;;;;;;;;;;;;;;;;;;;;;;;20712:51;20797:9;-1:-1:-1;;;;;20780:53:0;20789:6;-1:-1:-1;;;;;20780:53:0;;20808:24;20827:4;;20808:14;:18;;:24;;;;:::i;:::-;20780:53;;;;;;;;;;;;;;;-1:-1:-1;20851:4:0;;18727:2136;-1:-1:-1;;;;;18727:2136:0:o;416:136::-;474:7;501:43;505:1;508;501:43;;;;;;;;;;;;;;;;;:3;:43::i;1150:189::-;1236:7;1271:12;1264:5;1256:28;;;;-1:-1:-1;;;1256:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1295:9;1311:1;1307;:5;;;;;;;1150:189;-1:-1:-1;;;;;1150:189:0:o;21275:168::-;21374:12;;21363:7;:23;;:50;;;-1:-1:-1;;;;;;21390:23:0;;;;;;:15;:23;;;;;;;;21363:50;21355:80;;;;;-1:-1:-1;;;21355:80:0;;;;;;;;;;;;-1:-1:-1;;;21355:80:0;;;;;;;;;;;;;;22297:197;22384:4;;22346;;-1:-1:-1;;;;;22384:4:0;22370:10;:18;;;;:38;;-1:-1:-1;22402:6:0;;;;;;;22401:7;22370:38;:62;;;;-1:-1:-1;22421:11:0;;;;22370:62;:116;;;;-1:-1:-1;;22473:13:0;;22463:4;22445:24;;;;:9;:24;;;;;;:41;;;22297:197::o;23977:1942::-;14221:6;:13;;-1:-1:-1;;14221:13:0;;;;;24056:12:::1;::::0;24120:4:::1;::::0;24102:13:::1;::::0;14221;;24102:23:::1;::::0;:13;:17:::1;:23::i;:::-;24079:46;;24138:23;24164:58;24220:1;24164:51;24195:19;24164:26;24181:8;;24164:12;:16;;:26;;;;:::i;:58::-;24138:84:::0;-1:-1:-1;24233:20:0::1;24256:33;:12:::0;24138:84;24256:16:::1;:33::i;:::-;24326:16;::::0;;24340:1:::1;24326:16:::0;;;;;::::1;::::0;;24233:56;;-1:-1:-1;24302:21:0::1;::::0;24326:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;24326:16:0::1;24302:40;;24371:4;24353;24358:1;24353:7;;;;;;;;-1:-1:-1::0;;;;;24353:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;24397:4:::1;::::0;24387:7;;24397:4;::::1;::::0;24387;;24397;;24387:7;::::1;;;;;-1:-1:-1::0;;;;;24387:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:14;;;;24472:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;24472:188:0;;::::1;::::0;::::1;::::0;;;24414:21:::1;24472:188:::0;;;;;;24614:4:::1;24472:188:::0;;;;;;24634:15:::1;24472:188:::0;;;;;;;;;;;;;;;;;;;;;24438:21:::1;::::0;24472:6;;;::::1;::::0;:57:::1;::::0;24544:12;;24414:21;;24587:4;;24472:188;;;;;;;;;;::::1;::::0;::::1;::::0;;;24414:21;24472:188:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24673:17;24693:40;24719:13;24693:21;:25;;:40;;;;:::i;:::-;24673:60:::0;-1:-1:-1;24746:19:0::1;24768:40;24781:26;:19:::0;24805:1:::1;24781:23;:26::i;:::-;24768:8;::::0;;:12:::1;:40::i;:::-;24746:62:::0;-1:-1:-1;24829:26:0::1;24858:58;24914:1;24858:51;24746:62:::0;24858:51;:9;24872:19;24858:13:::1;:34::i;:58::-;24829:87;;24927:27;24957:41;24986:11;24957:24;24971:9;;24957;:13;;:24;;;;:::i;:41::-;24927:71;;25009:26;25038:44;25070:11;25038:27;25052:12;;25038:9;:13;;:27;;;;:::i;:44::-;25009:73;;25093:24;25120:42;25150:11;25120:25;25134:10;;25120:9;:13;;:25;;;;:::i;:42::-;25093:69;;25179:11;;;;;;;;;-1:-1:-1::0;;;;;25179:11:0::1;-1:-1:-1::0;;;;;25179:19:0::1;;25206;25179:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;25175:65:::0;25279:20:::1;::::0;25271:77:::1;::::0;25251:15:::1;::::0;-1:-1:-1;;;;;25279:20:0::1;::::0;25338:5:::1;::::0;25313:18;;25251:15;25271:77;25251:15;25271:77;25313:18;25279:20;25338:5;25271:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;25383:18:0::1;::::0;25375:73:::1;::::0;25250:98;;-1:-1:-1;;;;;;25383:18:0::1;::::0;25438:5:::1;::::0;25415:16;;25383:18:::1;25375:73:::0;25383:18;25375:73;25415:16;25383:18;25438:5;25375:73:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;25522:5:0::1;::::0;-1:-1:-1;;25543:19:0;;;-1:-1:-1;25540:372:0::1;;25578:6;::::0;25752:21:::1;::::0;25578:244:::1;::::0;;-1:-1:-1;;;25578:244:0;;25654:4:::1;25578:244;::::0;::::1;::::0;;;;;;;:6:::1;:244:::0;;;;;;;;;;-1:-1:-1;;;;;25752:21:0;;::::1;25578:244:::0;;;;25792:15:::1;25578:244:::0;;;;;;:6;;;::::1;::::0;:22:::1;::::0;25608:18;;25578:244;;;;;::::1;::::0;;;;;;;;;25608:18;25578:6;:244;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;25894:4:0::1;::::0;25842:58:::1;::::0;25854:18;;25874:25:::1;::::0;:15;;:19:::1;:25::i;:::-;25842:58;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;::::1;25540:372;-1:-1:-1::0;;14239:6:0;:14;;-1:-1:-1;;14239:14:0;;;-1:-1:-1;;;;;;;;;;;23977:1942:0:o;21451:114::-;-1:-1:-1;;;;;21538:19:0;21513:4;21538:19;;;:11;:19;;;;;;;;21537:20;;21451:114::o;21573:716::-;21654:7;21705:3;21719:64;;;;-1:-1:-1;21757:14:0;;21719:64;21798:14;;;;;;;:25;;;;;21817:6;21816:7;21798:25;21795:72;;;-1:-1:-1;21854:1:0;21795:72;21879:17;21899:63;21951:10;21899:47;21937:8;;21899:33;21911:14;;21928:3;21911:20;21899:7;:11;;:33;;;;:::i;:63::-;21879:83;;21979:6;21978:7;:51;;;;;22017:12;22003:10;;21990;;:23;21989:40;21978:51;21975:118;;;22057:24;22078:2;22057:16;:7;22069:3;22057:11;:16::i;:24::-;22045:36;;21975:118;22150:4;22132:24;;;;:9;:24;;;;;;:39;;22161:9;22132:28;:39::i;:::-;22123:4;22105:24;;;;:9;:24;;;;;:66;;;;22233:4;;-1:-1:-1;;;;;22187:52:0;;;;;22219:19;;:9;;:13;:19::i;:::-;22187:52;;;;;;;;;;;;;;;22259:22;:7;22271:9;22259:11;:22::i;:::-;22252:29;21573:716;-1:-1:-1;;;;;;21573:716:0:o

Swarm Source

ipfs://a09e8c082618d732d8064ee9a59b4c65586363bdb850780c853fb433589b6d7c
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
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.