Contract 0x57ff9294b05065b88cb3ec148beedfb50eda3127

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xc865d96b19a441c4bfac93ea35b90d888a7be06ee4b201d648385c56c52f0a34Set Prices With ...566412842023-01-30 13:41:44442 days 10 hrs ago0xb7778a862cba236cd11f61260922ff61c01451ba IN  0x57ff9294b05065b88cb3ec148beedfb50eda31270 ETH0.00004385 0.1
0x3dc41ce974458e38d6ebced171dd24ffde26e08c6f5deafe63d82f56befa50d0Set Prices With ...566405942023-01-30 13:38:29442 days 10 hrs ago0xb7778a862cba236cd11f61260922ff61c01451ba IN  0x57ff9294b05065b88cb3ec148beedfb50eda31270 ETH0.00004357 0.1
0xf244fab01047e93161005834dd488fea23d8485200269e77b11cbbadfee47d32Set Prices With ...566404372023-01-30 13:37:44442 days 10 hrs ago0xb7778a862cba236cd11f61260922ff61c01451ba IN  0x57ff9294b05065b88cb3ec148beedfb50eda31270 ETH0.00004357 0.1
0x87319421e3f9d23931acb360de315ee7a46285e6f14827c9b5c4a07fb6f2e329Set Prices With ...566397582023-01-30 13:34:29442 days 10 hrs ago0xb7778a862cba236cd11f61260922ff61c01451ba IN  0x57ff9294b05065b88cb3ec148beedfb50eda31270 ETH0.00004558 0.1
0x27e41bf6ba4e81ac387e09e8c520aa3dbd306ac6d9e9a0e124df37dd8eeead9eSet Prices With ...566391632023-01-30 13:31:27442 days 10 hrs ago0xb7778a862cba236cd11f61260922ff61c01451ba IN  0x57ff9294b05065b88cb3ec148beedfb50eda31270 ETH0.00004558 0.1
0xfc1b426e74cf65f006ee71822597a1d18a7144e516ad72be6dae507bf0701c4bSet Prices With ...566386572023-01-30 13:29:02442 days 10 hrs ago0xb7778a862cba236cd11f61260922ff61c01451ba IN  0x57ff9294b05065b88cb3ec148beedfb50eda31270 ETH0.00004542 0.1
0x720166c8170db4ee9b16cbe869b05603fd59059bf6610a02dc554ad7c9b92e3aSet Prices With ...566383122023-01-30 13:27:29442 days 10 hrs ago0xb7778a862cba236cd11f61260922ff61c01451ba IN  0x57ff9294b05065b88cb3ec148beedfb50eda31270 ETH0.0000457 0.1
0xb6ab9be75020ba57af1c0945fd1717453a97585d65b15f9817aaa2a455bc25d3Set Prices With ...566376772023-01-30 13:24:20442 days 10 hrs ago0xb7778a862cba236cd11f61260922ff61c01451ba IN  0x57ff9294b05065b88cb3ec148beedfb50eda31270 ETH0.0000443 0.1
0x2a568e0c51112dc829162ab88449a3435ae09a2370596759f12c9a96bb7fd235Set Prices With ...566376732023-01-30 13:24:19442 days 10 hrs ago0xb7778a862cba236cd11f61260922ff61c01451ba IN  0x57ff9294b05065b88cb3ec148beedfb50eda31270 ETH0.0000457 0.1
0x75005780e8934b0918294973433952e031b7a16de2031e10e06163f9d0d58790Set Prices With ...566371842023-01-30 13:22:00442 days 10 hrs ago0xb7778a862cba236cd11f61260922ff61c01451ba IN  0x57ff9294b05065b88cb3ec148beedfb50eda31270 ETH0.00004434 0.1
0x3b5db7e855a7ed32a8549be43f7eb3000f2df063e87956093fe64e34d2abe4a1Set Prices With ...566371782023-01-30 13:21:59442 days 10 hrs ago0xb7778a862cba236cd11f61260922ff61c01451ba IN  0x57ff9294b05065b88cb3ec148beedfb50eda31270 ETH0.00004518 0.1
0xc56330685ec83860bcc973b852b89a28e73a12cd41804f0ddcbeee644d455e0bSet Prices With ...566367322023-01-30 13:19:44442 days 10 hrs ago0xb7778a862cba236cd11f61260922ff61c01451ba IN  0x57ff9294b05065b88cb3ec148beedfb50eda31270 ETH0.00004518 0.1
0x7149f0942140ea42407c76d103fb39876281f523a67f0d1fc2f1d54a3ae57830Set Prices With ...566361132023-01-30 13:16:39442 days 10 hrs ago0xb7778a862cba236cd11f61260922ff61c01451ba IN  0x57ff9294b05065b88cb3ec148beedfb50eda31270 ETH0.0001397 0.1
0xee53f692a4d3ec39a31cb60f28cb69120e7c17e6e05f82ca221c4a469d6a375dSet Prices With ...566361092023-01-30 13:16:38442 days 10 hrs ago0xb7778a862cba236cd11f61260922ff61c01451ba IN  0x57ff9294b05065b88cb3ec148beedfb50eda31270 ETH0.00005784 0.1
0xe0d2e67d7d9065288ea2438cf0bfb2b78612ff0c182587123ee4103efbb30becSet Prices With ...566355932023-01-30 13:13:59442 days 10 hrs ago0xb7778a862cba236cd11f61260922ff61c01451ba IN  0x57ff9294b05065b88cb3ec148beedfb50eda31270 ETH0.00004525 0.1
0x3dfa4f644c1f62f9d1696e5f31ea3a12b7227b4c8f55781ca5ab6ddda15729a7Set Prices With ...566349542023-01-30 13:10:51442 days 10 hrs ago0xb7778a862cba236cd11f61260922ff61c01451ba IN  0x57ff9294b05065b88cb3ec148beedfb50eda31270 ETH0.00010186 0.1
0xe8e3d55c86fed983021bea51181a6061501993f95b2af2808419d6615188c3dfSet Prices With ...566348062023-01-30 13:10:07442 days 10 hrs ago0xb7778a862cba236cd11f61260922ff61c01451ba IN  0x57ff9294b05065b88cb3ec148beedfb50eda31270 ETH0.00004298 0.1
0x22f04253156f08912a7d6d0e3cc6d15aef2387ef5b8240fbbe11aaed6df0617fSet Prices With ...566348022023-01-30 13:10:05442 days 10 hrs ago0xb7778a862cba236cd11f61260922ff61c01451ba IN  0x57ff9294b05065b88cb3ec148beedfb50eda31270 ETH0.00004438 0.1
0xdca83688fb0a31f174410c409d8d73cb9010d2d96db5774e3ed720a6f8f04d13Set Prices With ...566347342023-01-30 13:09:47442 days 10 hrs ago0xb7778a862cba236cd11f61260922ff61c01451ba IN  0x57ff9294b05065b88cb3ec148beedfb50eda31270 ETH0.00004466 0.1
0x97ce2f77157cdd494f3126a30ffaa99c352b91d4453544c2dcfc7c2d1e6ab47cSet Prices With ...566345242023-01-30 13:08:46442 days 10 hrs ago0xb7778a862cba236cd11f61260922ff61c01451ba IN  0x57ff9294b05065b88cb3ec148beedfb50eda31270 ETH0.00004438 0.1
0x2c535e9670efa4e19b9fcc189f5d268b8caa3006e94ba305bed43e3df41ddb61Set Prices With ...566339022023-01-30 13:05:44442 days 10 hrs ago0xb7778a862cba236cd11f61260922ff61c01451ba IN  0x57ff9294b05065b88cb3ec148beedfb50eda31270 ETH0.00004438 0.1
0x0cbf74d918d76248df6587a9100bda6c36d0a5a4bd8d04111cbc125abe48f6a4Set Prices With ...566332182023-01-30 13:02:30442 days 10 hrs ago0xb7778a862cba236cd11f61260922ff61c01451ba IN  0x57ff9294b05065b88cb3ec148beedfb50eda31270 ETH0.00004406 0.1
0x9fa585ac408a6faad6dba542cdc453d4674960749d81d32bc869740dee857bc9Set Prices With ...566328612023-01-30 13:00:48442 days 10 hrs ago0xb7778a862cba236cd11f61260922ff61c01451ba IN  0x57ff9294b05065b88cb3ec148beedfb50eda31270 ETH0.00004434 0.1
0x293ef75459724c6c06734c3ed6d2b31f5ba00e7a674b9febebf021426cd4f2b1Set Prices With ...566325372023-01-30 12:59:13442 days 10 hrs ago0xb7778a862cba236cd11f61260922ff61c01451ba IN  0x57ff9294b05065b88cb3ec148beedfb50eda31270 ETH0.00004434 0.1
0x1f02f9017cc653895bc6bf0f485d301727150337bc0ec5cd64e0eb93c884b1e1Set Prices With ...566319072023-01-30 12:56:12442 days 10 hrs ago0xb7778a862cba236cd11f61260922ff61c01451ba IN  0x57ff9294b05065b88cb3ec148beedfb50eda31270 ETH0.0000409 0.1
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xc865d96b19a441c4bfac93ea35b90d888a7be06ee4b201d648385c56c52f0a34566412842023-01-30 13:41:44442 days 10 hrs ago 0x57ff9294b05065b88cb3ec148beedfb50eda3127 0x3934ca8b69d05533769b0d96d1a11c44c1d2fa3b0 ETH
0xc865d96b19a441c4bfac93ea35b90d888a7be06ee4b201d648385c56c52f0a34566412842023-01-30 13:41:44442 days 10 hrs ago 0x57ff9294b05065b88cb3ec148beedfb50eda3127 0x3934ca8b69d05533769b0d96d1a11c44c1d2fa3b0 ETH
0xc865d96b19a441c4bfac93ea35b90d888a7be06ee4b201d648385c56c52f0a34566412842023-01-30 13:41:44442 days 10 hrs ago 0x57ff9294b05065b88cb3ec148beedfb50eda3127 0x3934ca8b69d05533769b0d96d1a11c44c1d2fa3b0 ETH
0xc865d96b19a441c4bfac93ea35b90d888a7be06ee4b201d648385c56c52f0a34566412842023-01-30 13:41:44442 days 10 hrs ago 0x57ff9294b05065b88cb3ec148beedfb50eda3127 0x3934ca8b69d05533769b0d96d1a11c44c1d2fa3b0 ETH
0xc865d96b19a441c4bfac93ea35b90d888a7be06ee4b201d648385c56c52f0a34566412842023-01-30 13:41:44442 days 10 hrs ago 0x57ff9294b05065b88cb3ec148beedfb50eda3127 0x3934ca8b69d05533769b0d96d1a11c44c1d2fa3b0 ETH
0xc865d96b19a441c4bfac93ea35b90d888a7be06ee4b201d648385c56c52f0a34566412842023-01-30 13:41:44442 days 10 hrs ago 0x57ff9294b05065b88cb3ec148beedfb50eda3127 0x3934ca8b69d05533769b0d96d1a11c44c1d2fa3b0 ETH
0xc865d96b19a441c4bfac93ea35b90d888a7be06ee4b201d648385c56c52f0a34566412842023-01-30 13:41:44442 days 10 hrs ago 0x57ff9294b05065b88cb3ec148beedfb50eda3127 0x3934ca8b69d05533769b0d96d1a11c44c1d2fa3b0 ETH
0x3dc41ce974458e38d6ebced171dd24ffde26e08c6f5deafe63d82f56befa50d0566405942023-01-30 13:38:29442 days 10 hrs ago 0x57ff9294b05065b88cb3ec148beedfb50eda3127 0x3934ca8b69d05533769b0d96d1a11c44c1d2fa3b0 ETH
0x3dc41ce974458e38d6ebced171dd24ffde26e08c6f5deafe63d82f56befa50d0566405942023-01-30 13:38:29442 days 10 hrs ago 0x57ff9294b05065b88cb3ec148beedfb50eda3127 0x3934ca8b69d05533769b0d96d1a11c44c1d2fa3b0 ETH
0x3dc41ce974458e38d6ebced171dd24ffde26e08c6f5deafe63d82f56befa50d0566405942023-01-30 13:38:29442 days 10 hrs ago 0x57ff9294b05065b88cb3ec148beedfb50eda3127 0x3934ca8b69d05533769b0d96d1a11c44c1d2fa3b0 ETH
0x3dc41ce974458e38d6ebced171dd24ffde26e08c6f5deafe63d82f56befa50d0566405942023-01-30 13:38:29442 days 10 hrs ago 0x57ff9294b05065b88cb3ec148beedfb50eda3127 0x3934ca8b69d05533769b0d96d1a11c44c1d2fa3b0 ETH
0x3dc41ce974458e38d6ebced171dd24ffde26e08c6f5deafe63d82f56befa50d0566405942023-01-30 13:38:29442 days 10 hrs ago 0x57ff9294b05065b88cb3ec148beedfb50eda3127 0x3934ca8b69d05533769b0d96d1a11c44c1d2fa3b0 ETH
0x3dc41ce974458e38d6ebced171dd24ffde26e08c6f5deafe63d82f56befa50d0566405942023-01-30 13:38:29442 days 10 hrs ago 0x57ff9294b05065b88cb3ec148beedfb50eda3127 0x3934ca8b69d05533769b0d96d1a11c44c1d2fa3b0 ETH
0x3dc41ce974458e38d6ebced171dd24ffde26e08c6f5deafe63d82f56befa50d0566405942023-01-30 13:38:29442 days 10 hrs ago 0x57ff9294b05065b88cb3ec148beedfb50eda3127 0x3934ca8b69d05533769b0d96d1a11c44c1d2fa3b0 ETH
0xf244fab01047e93161005834dd488fea23d8485200269e77b11cbbadfee47d32566404372023-01-30 13:37:44442 days 10 hrs ago 0x57ff9294b05065b88cb3ec148beedfb50eda3127 0x3934ca8b69d05533769b0d96d1a11c44c1d2fa3b0 ETH
0xf244fab01047e93161005834dd488fea23d8485200269e77b11cbbadfee47d32566404372023-01-30 13:37:44442 days 10 hrs ago 0x57ff9294b05065b88cb3ec148beedfb50eda3127 0x3934ca8b69d05533769b0d96d1a11c44c1d2fa3b0 ETH
0xf244fab01047e93161005834dd488fea23d8485200269e77b11cbbadfee47d32566404372023-01-30 13:37:44442 days 10 hrs ago 0x57ff9294b05065b88cb3ec148beedfb50eda3127 0x3934ca8b69d05533769b0d96d1a11c44c1d2fa3b0 ETH
0xf244fab01047e93161005834dd488fea23d8485200269e77b11cbbadfee47d32566404372023-01-30 13:37:44442 days 10 hrs ago 0x57ff9294b05065b88cb3ec148beedfb50eda3127 0x3934ca8b69d05533769b0d96d1a11c44c1d2fa3b0 ETH
0xf244fab01047e93161005834dd488fea23d8485200269e77b11cbbadfee47d32566404372023-01-30 13:37:44442 days 10 hrs ago 0x57ff9294b05065b88cb3ec148beedfb50eda3127 0x3934ca8b69d05533769b0d96d1a11c44c1d2fa3b0 ETH
0xf244fab01047e93161005834dd488fea23d8485200269e77b11cbbadfee47d32566404372023-01-30 13:37:44442 days 10 hrs ago 0x57ff9294b05065b88cb3ec148beedfb50eda3127 0x3934ca8b69d05533769b0d96d1a11c44c1d2fa3b0 ETH
0xf244fab01047e93161005834dd488fea23d8485200269e77b11cbbadfee47d32566404372023-01-30 13:37:44442 days 10 hrs ago 0x57ff9294b05065b88cb3ec148beedfb50eda3127 0x3934ca8b69d05533769b0d96d1a11c44c1d2fa3b0 ETH
0x87319421e3f9d23931acb360de315ee7a46285e6f14827c9b5c4a07fb6f2e329566397582023-01-30 13:34:29442 days 10 hrs ago 0x57ff9294b05065b88cb3ec148beedfb50eda3127 0x3934ca8b69d05533769b0d96d1a11c44c1d2fa3b0 ETH
0x87319421e3f9d23931acb360de315ee7a46285e6f14827c9b5c4a07fb6f2e329566397582023-01-30 13:34:29442 days 10 hrs ago 0x57ff9294b05065b88cb3ec148beedfb50eda3127 0x3934ca8b69d05533769b0d96d1a11c44c1d2fa3b0 ETH
0x87319421e3f9d23931acb360de315ee7a46285e6f14827c9b5c4a07fb6f2e329566397582023-01-30 13:34:29442 days 10 hrs ago 0x57ff9294b05065b88cb3ec148beedfb50eda3127 0x3934ca8b69d05533769b0d96d1a11c44c1d2fa3b0 ETH
0x87319421e3f9d23931acb360de315ee7a46285e6f14827c9b5c4a07fb6f2e329566397582023-01-30 13:34:29442 days 10 hrs ago 0x57ff9294b05065b88cb3ec148beedfb50eda3127 0x3934ca8b69d05533769b0d96d1a11c44c1d2fa3b0 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FastPriceFeed

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 1 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan.io on 2022-08-19
*/

// Sources flattened with hardhat v2.9.3 https://hardhat.org

// File contracts/libraries/math/SafeMath.sol

// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

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

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}


// File contracts/oracle/interfaces/ISecondaryPriceFeed.sol


pragma solidity 0.6.12;

interface ISecondaryPriceFeed {
    function getPrice(
        address _token,
        uint256 _referencePrice,
        bool _maximise
    ) external view returns (uint256);
}


// File contracts/oracle/interfaces/IFastPriceFeed.sol


pragma solidity 0.6.12;

interface IFastPriceFeed {
    function lastUpdatedAt() external view returns (uint256);

    function lastUpdatedBlock() external view returns (uint256);
}


// File contracts/oracle/interfaces/IFastPriceEvents.sol


pragma solidity 0.6.12;

interface IFastPriceEvents {
    function emitPriceEvent(address _token, uint256 _price) external;
}


// File contracts/core/interfaces/IPositionRouter.sol


pragma solidity 0.6.12;

interface IPositionRouter {
    function executeIncreasePositions(uint256 _count, address payable _executionFeeReceiver) external;

    function executeDecreasePositions(uint256 _count, address payable _executionFeeReceiver) external;
}


// File contracts/access/Governable.sol


pragma solidity 0.6.12;

contract Governable {
    address public gov;

    constructor() public {
        gov = msg.sender;
    }

    modifier onlyGov() {
        require(msg.sender == gov, "Governable: forbidden");
        _;
    }

    function setGov(address _gov) external onlyGov {
        gov = _gov;
    }
}


// File contracts/oracle/FastPriceFeed.sol

pragma solidity 0.6.12;

contract FastPriceFeed is ISecondaryPriceFeed, IFastPriceFeed, Governable {
    using SafeMath for uint256;

    uint256 public constant PRICE_PRECISION = 10**30;

    // uint256(~0) is 256 bits of 1s
    // shift the 1s by (256 - 32) to get (256 - 32) 0s followed by 32 1s
    uint256 public constant PRICE_BITMASK = uint256(~0) >> (256 - 32);

    uint256 public constant BASIS_POINTS_DIVISOR = 10000;

    uint256 public constant MAX_PRICE_DURATION = 30 minutes;

    bool public isInitialized;
    bool public isSpreadEnabled = false;
    address public fastPriceEvents;

    address public tokenManager;

    address public positionRouter;

    uint256 public override lastUpdatedAt;
    uint256 public override lastUpdatedBlock;

    uint256 public priceDuration;
    uint256 public minBlockInterval;
    uint256 public maxTimeDeviation;

    // volatility basis points
    uint256 public volBasisPoints;
    // max deviation from primary price
    uint256 public maxDeviationBasisPoints;

    uint256 public minAuthorizations;
    uint256 public disableFastPriceVoteCount = 0;

    mapping(address => bool) public isUpdater;

    mapping(address => uint256) public prices;

    mapping(address => bool) public isSigner;
    mapping(address => bool) public disableFastPriceVotes;

    // array of tokens used in setCompactedPrices, saves L1 calldata gas costs
    address[] public tokens;
    // array of tokenPrecisions used in setCompactedPrices, saves L1 calldata gas costs
    // if the token price will be sent with 3 decimals, then tokenPrecision for that token
    // should be 10 ** 3
    uint256[] public tokenPrecisions;

    event DisableFastPrice(address signer);
    event EnableFastPrice(address signer);

    modifier onlySigner() {
        require(isSigner[msg.sender], "FastPriceFeed: forbidden");
        _;
    }

    modifier onlyUpdater() {
        require(isUpdater[msg.sender], "FastPriceFeed: forbidden");
        _;
    }

    modifier onlyTokenManager() {
        require(msg.sender == tokenManager, "FastPriceFeed: forbidden");
        _;
    }

    constructor(
        uint256 _priceDuration,
        uint256 _minBlockInterval,
        uint256 _maxDeviationBasisPoints,
        address _fastPriceEvents,
        address _tokenManager,
        address _positionRouter
    ) public {
        require(_priceDuration <= MAX_PRICE_DURATION, "FastPriceFeed: invalid _priceDuration");
        priceDuration = _priceDuration;
        minBlockInterval = _minBlockInterval;
        maxDeviationBasisPoints = _maxDeviationBasisPoints;
        fastPriceEvents = _fastPriceEvents;
        tokenManager = _tokenManager;
        positionRouter = _positionRouter;
    }

    function initialize(
        uint256 _minAuthorizations,
        address[] memory _signers,
        address[] memory _updaters
    ) public onlyGov {
        require(!isInitialized, "FastPriceFeed: already initialized");
        isInitialized = true;

        minAuthorizations = _minAuthorizations;

        for (uint256 i = 0; i < _signers.length; i++) {
            address signer = _signers[i];
            isSigner[signer] = true;
        }

        for (uint256 i = 0; i < _updaters.length; i++) {
            address updater = _updaters[i];
            isUpdater[updater] = true;
        }
    }

    function setTokenManager(address _tokenManager) external onlyGov {
        tokenManager = _tokenManager;
    }

    function setSigner(address _account, bool _isActive) external onlyGov {
        isSigner[_account] = _isActive;
    }

    function setUpdater(address _account, bool _isActive) external onlyGov {
        isUpdater[_account] = _isActive;
    }

    function setFastPriceEvents(address _fastPriceEvents) external onlyGov {
        fastPriceEvents = _fastPriceEvents;
    }

    function setPriceDuration(uint256 _priceDuration) external onlyGov {
        require(_priceDuration <= MAX_PRICE_DURATION, "FastPriceFeed: invalid _priceDuration");
        priceDuration = _priceDuration;
    }

    function setMinBlockInterval(uint256 _minBlockInterval) external onlyGov {
        minBlockInterval = _minBlockInterval;
    }

    function setIsSpreadEnabled(bool _isSpreadEnabled) external onlyUpdater {
        isSpreadEnabled = _isSpreadEnabled;
    }

    function setMaxTimeDeviation(uint256 _maxTimeDeviation) external onlyGov {
        maxTimeDeviation = _maxTimeDeviation;
    }

    function setLastUpdatedAt(uint256 _lastUpdatedAt) external onlyGov {
        lastUpdatedAt = _lastUpdatedAt;
    }

    function setVolBasisPoints(uint256 _volBasisPoints) external onlyGov {
        volBasisPoints = _volBasisPoints;
    }

    function setMaxDeviationBasisPoints(uint256 _maxDeviationBasisPoints) external onlyGov {
        maxDeviationBasisPoints = _maxDeviationBasisPoints;
    }

    function setMinAuthorizations(uint256 _minAuthorizations) external onlyTokenManager {
        minAuthorizations = _minAuthorizations;
    }

    function setTokens(address[] memory _tokens, uint256[] memory _tokenPrecisions) external onlyGov {
        require(_tokens.length == _tokenPrecisions.length, "FastPriceFeed: invalid lengths");
        tokens = _tokens;
        tokenPrecisions = _tokenPrecisions;
    }

    function setPrices(
        address[] memory _tokens,
        uint256[] memory _prices,
        uint256 _timestamp
    ) external onlyUpdater {
        bool shouldUpdate = _setLastUpdatedValues(_timestamp);

        if (shouldUpdate) {
            address _fastPriceEvents = fastPriceEvents;

            for (uint256 i = 0; i < _tokens.length; i++) {
                address token = _tokens[i];
                prices[token] = _prices[i];
                _emitPriceEvent(_fastPriceEvents, token, _prices[i]);
            }
        }
    }

    function setCompactedPrices(uint256[] memory _priceBitArray, uint256 _timestamp) external onlyUpdater {
        bool shouldUpdate = _setLastUpdatedValues(_timestamp);

        if (shouldUpdate) {
            address _fastPriceEvents = fastPriceEvents;

            for (uint256 i = 0; i < _priceBitArray.length; i++) {
                uint256 priceBits = _priceBitArray[i];

                for (uint256 j = 0; j < 8; j++) {
                    uint256 index = i * 8 + j;
                    if (index >= tokens.length) {
                        return;
                    }

                    uint256 startBit = 32 * j;
                    uint256 price = (priceBits >> startBit) & PRICE_BITMASK;

                    address token = tokens[i * 8 + j];
                    uint256 tokenPrecision = tokenPrecisions[i * 8 + j];
                    uint256 adjustedPrice = price.mul(PRICE_PRECISION).div(tokenPrecision);
                    prices[token] = adjustedPrice;

                    _emitPriceEvent(_fastPriceEvents, token, adjustedPrice);
                }
            }
        }
    }

    function setPricesWithBits(uint256 _priceBits, uint256 _timestamp) external onlyUpdater {
        _setPricesWithBits(_priceBits, _timestamp);
    }

    function setPricesWithBitsAndExecute(
        uint256 _priceBits,
        uint256 _timestamp,
        uint256 _endIndexForIncreasePositions,
        uint256 _endIndexForDecreasePositions
    ) external onlyUpdater {
        _setPricesWithBits(_priceBits, _timestamp);

        IPositionRouter _positionRouter = IPositionRouter(positionRouter);
        _positionRouter.executeIncreasePositions(_endIndexForIncreasePositions, payable(msg.sender));
        _positionRouter.executeDecreasePositions(_endIndexForDecreasePositions, payable(msg.sender));
    }

    function disableFastPrice() external onlySigner {
        require(!disableFastPriceVotes[msg.sender], "FastPriceFeed: already voted");
        disableFastPriceVotes[msg.sender] = true;
        disableFastPriceVoteCount = disableFastPriceVoteCount.add(1);

        emit DisableFastPrice(msg.sender);
    }

    function enableFastPrice() external onlySigner {
        require(disableFastPriceVotes[msg.sender], "FastPriceFeed: already enabled");
        disableFastPriceVotes[msg.sender] = false;
        disableFastPriceVoteCount = disableFastPriceVoteCount.sub(1);

        emit EnableFastPrice(msg.sender);
    }

    function getPrice(
        address _token,
        uint256 _refPrice,
        bool _maximise
    ) external view override returns (uint256) {
        // If it has been longer than priceDuration since return parameter given
        if (block.timestamp > lastUpdatedAt.add(priceDuration)) {
            return _refPrice;
        }

        uint256 fastPrice = prices[_token];
        if (fastPrice == 0) {
            return _refPrice;
        }

        uint256 maxPrice = _refPrice.mul(BASIS_POINTS_DIVISOR.add(maxDeviationBasisPoints)).div(BASIS_POINTS_DIVISOR);
        uint256 minPrice = _refPrice.mul(BASIS_POINTS_DIVISOR.sub(maxDeviationBasisPoints)).div(BASIS_POINTS_DIVISOR);

        if (favorFastPrice()) {
            if (fastPrice >= minPrice && fastPrice <= maxPrice) {
                if (_maximise) {
                    if (_refPrice > fastPrice) {
                        uint256 volPrice = fastPrice.mul(BASIS_POINTS_DIVISOR.add(volBasisPoints)).div(
                            BASIS_POINTS_DIVISOR
                        );
                        // the volPrice should not be more than _refPrice
                        return volPrice > _refPrice ? _refPrice : volPrice;
                    }
                    return fastPrice;
                }

                if (_refPrice < fastPrice) {
                    uint256 volPrice = fastPrice.mul(BASIS_POINTS_DIVISOR.sub(volBasisPoints)).div(
                        BASIS_POINTS_DIVISOR
                    );
                    // the volPrice should not be less than _refPrice
                    return volPrice < _refPrice ? _refPrice : volPrice;
                }

                return fastPrice;
            }
        }

        if (_maximise) {
            if (_refPrice > fastPrice) {
                return _refPrice;
            }
            return fastPrice > maxPrice ? maxPrice : fastPrice;
        }

        if (_refPrice < fastPrice) {
            return _refPrice;
        }
        return fastPrice < minPrice ? minPrice : fastPrice;
    }

    function favorFastPrice() public view returns (bool) {
        if (isSpreadEnabled) {
            return false;
        }

        if (disableFastPriceVoteCount >= minAuthorizations) {
            return false;
        }

        return true;
    }

    function _setPricesWithBits(uint256 _priceBits, uint256 _timestamp) private {
        bool shouldUpdate = _setLastUpdatedValues(_timestamp);

        if (shouldUpdate) {
            address _fastPriceEvents = fastPriceEvents;

            for (uint256 j = 0; j < 8; j++) {
                uint256 index = j;
                if (index >= tokens.length) {
                    return;
                }

                uint256 startBit = 32 * j;
                uint256 price = (_priceBits >> startBit) & PRICE_BITMASK;

                address token = tokens[j];
                uint256 tokenPrecision = tokenPrecisions[j];
                uint256 adjustedPrice = price.mul(PRICE_PRECISION).div(tokenPrecision);
                prices[token] = adjustedPrice;

                _emitPriceEvent(_fastPriceEvents, token, adjustedPrice);
            }
        }
    }

    function _emitPriceEvent(
        address _fastPriceEvents,
        address _token,
        uint256 _price
    ) private {
        if (_fastPriceEvents == address(0)) {
            return;
        }

        IFastPriceEvents(_fastPriceEvents).emitPriceEvent(_token, _price);
    }

    function _setLastUpdatedValues(uint256 _timestamp) private returns (bool) {
        if (minBlockInterval > 0) {
            require(
                block.number.sub(lastUpdatedBlock) >= minBlockInterval,
                "FastPriceFeed: minBlockInterval not yet passed"
            );
        }

        require(_timestamp > block.timestamp.sub(maxTimeDeviation), "FastPriceFeed: _timestamp below allowed range");
        require(_timestamp < block.timestamp.add(maxTimeDeviation), "FastPriceFeed: _timestamp exceeds allowed range");

        // do not update prices if _timestamp is before the current lastUpdatedAt value
        if (_timestamp < lastUpdatedAt) {
            return false;
        }

        lastUpdatedAt = _timestamp;
        lastUpdatedBlock = block.number;

        return true;
    }
}

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"_priceDuration","type":"uint256"},{"internalType":"uint256","name":"_minBlockInterval","type":"uint256"},{"internalType":"uint256","name":"_maxDeviationBasisPoints","type":"uint256"},{"internalType":"address","name":"_fastPriceEvents","type":"address"},{"internalType":"address","name":"_tokenManager","type":"address"},{"internalType":"address","name":"_positionRouter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"signer","type":"address"}],"name":"DisableFastPrice","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"signer","type":"address"}],"name":"EnableFastPrice","type":"event"},{"inputs":[],"name":"BASIS_POINTS_DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PRICE_DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE_BITMASK","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE_PRECISION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableFastPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableFastPriceVoteCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"disableFastPriceVotes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableFastPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fastPriceEvents","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"favorFastPrice","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_refPrice","type":"uint256"},{"internalType":"bool","name":"_maximise","type":"bool"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gov","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minAuthorizations","type":"uint256"},{"internalType":"address[]","name":"_signers","type":"address[]"},{"internalType":"address[]","name":"_updaters","type":"address[]"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSigner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSpreadEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isUpdater","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUpdatedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUpdatedBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxDeviationBasisPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTimeDeviation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minAuthorizations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minBlockInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"positionRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"prices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_priceBitArray","type":"uint256[]"},{"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"setCompactedPrices","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_fastPriceEvents","type":"address"}],"name":"setFastPriceEvents","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_gov","type":"address"}],"name":"setGov","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isSpreadEnabled","type":"bool"}],"name":"setIsSpreadEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastUpdatedAt","type":"uint256"}],"name":"setLastUpdatedAt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxDeviationBasisPoints","type":"uint256"}],"name":"setMaxDeviationBasisPoints","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTimeDeviation","type":"uint256"}],"name":"setMaxTimeDeviation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minAuthorizations","type":"uint256"}],"name":"setMinAuthorizations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minBlockInterval","type":"uint256"}],"name":"setMinBlockInterval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_priceDuration","type":"uint256"}],"name":"setPriceDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_prices","type":"uint256[]"},{"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"setPrices","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_priceBits","type":"uint256"},{"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"setPricesWithBits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_priceBits","type":"uint256"},{"internalType":"uint256","name":"_timestamp","type":"uint256"},{"internalType":"uint256","name":"_endIndexForIncreasePositions","type":"uint256"},{"internalType":"uint256","name":"_endIndexForDecreasePositions","type":"uint256"}],"name":"setPricesWithBitsAndExecute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"bool","name":"_isActive","type":"bool"}],"name":"setSigner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenManager","type":"address"}],"name":"setTokenManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_tokenPrecisions","type":"uint256[]"}],"name":"setTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"bool","name":"_isActive","type":"bool"}],"name":"setUpdater","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_volBasisPoints","type":"uint256"}],"name":"setVolBasisPoints","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenPrecisions","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokens","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"volBasisPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

60806040526000805460ff60a81b19168155600c5534801561002057600080fd5b5060405161235f38038061235f833981810160405260c081101561004357600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319163317905593949293919290916107088611156100bb5760405162461bcd60e51b815260040180806020018281038252602581526020018061233a6025913960400191505060405180910390fd5b600695909555600793909355600a91909155600180546001600160a01b039283166001600160a01b031991821617909155600280549383169382169390931790925560038054919093169116179055612221806101196000396000f3fe608060405234801561001057600080fd5b50600436106102305760003560e01c806303b049361461023557806303cd25711461026f57806303f4d7dc146102895780630e9272ea1461032e578063114fbeb314610352578063126082cf1461035a57806312d43a51146103625780631389a3cc1461036a57806314dd2dce14610399578063162ac4e0146103b657806317835d1c146103dc5780631a153391146103ff578063287800c91461042d5780632a709b141461043557806331cb61051461043d578063392e53cd1461046b5780633aa08f861461047357806344c231931461047b5780634d11fb4a146104985780634f64b2be146104b55780634fdfb086146104d257806354aea127146104f857806361ef161f14610500578063668d3d6514610508578063695d4184146105105780636ccd47c414610518578063715c753614610520578063776d16c114610528578063782661bc146105455780637cb2b79c1461066a5780637df73e27146106905780637fbc79c6146106b65780637fece368146107e057806382553aad1461081457806395082d25146108315780639e4de0e314610839578063b0a2566614610856578063b3606b561461085e578063c0e4de8e14610866578063c8390a481461086e578063c84a912414610991578063ce98dfa814610999578063cfad57a2146109b8578063cfed246b146109de578063d6a153f114610a04578063d925351a14610a21578063f67e3bf014610a3e578063f90ce5ba14610a46575b600080fd5b61025b6004803603602081101561024b57600080fd5b50356001600160a01b0316610a4e565b604080519115158252519081900360200190f35b610277610a63565b60408051918252519081900360200190f35b61032c6004803603604081101561029f57600080fd5b810190602081018135600160201b8111156102b957600080fd5b8201836020820111156102cb57600080fd5b803590602001918460208302840111600160201b831117156102ec57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505091359250610a69915050565b005b610336610bf1565b604080516001600160a01b039092168252519081900360200190f35b610277610c00565b610277610c06565b610336610c0c565b61032c6004803603608081101561038057600080fd5b5080359060208101359060408101359060600135610c1b565b61032c600480360360208110156103af57600080fd5b5035610d4f565b61032c600480360360208110156103cc57600080fd5b50356001600160a01b0316610da1565b61032c600480360360408110156103f257600080fd5b5080359060200135610e10565b61032c6004803603604081101561041557600080fd5b506001600160a01b0381351690602001351515610e6c565b610277610ee4565b610336610eea565b61032c6004803603604081101561045357600080fd5b506001600160a01b0381351690602001351515610ef9565b61025b610f71565b610277610f81565b61032c6004803603602081101561049157600080fd5b5035610f87565b610277600480360360208110156104ae57600080fd5b503561101a565b610336600480360360208110156104cb57600080fd5b5035611038565b61025b600480360360208110156104e857600080fd5b50356001600160a01b031661105f565b610277611074565b61033661107a565b610277611089565b61025b61108f565b61032c61109f565b6102776111b2565b61032c6004803603602081101561053e57600080fd5b50356111b8565b61032c6004803603606081101561055b57600080fd5b810190602081018135600160201b81111561057557600080fd5b82018360208201111561058757600080fd5b803590602001918460208302840111600160201b831117156105a857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156105f757600080fd5b82018360208201111561060957600080fd5b803590602001918460208302840111600160201b8311171561062a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550509135925061120a915050565b61032c6004803603602081101561068057600080fd5b50356001600160a01b031661130c565b61025b600480360360208110156106a657600080fd5b50356001600160a01b031661137b565b61032c600480360360608110156106cc57600080fd5b81359190810190604081016020820135600160201b8111156106ed57600080fd5b8201836020820111156106ff57600080fd5b803590602001918460208302840111600160201b8311171561072057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561076f57600080fd5b82018360208201111561078157600080fd5b803590602001918460208302840111600160201b831117156107a257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611390945050505050565b610277600480360360608110156107f657600080fd5b506001600160a01b03813516906020810135906040013515156114e9565b61032c6004803603602081101561082a57600080fd5b50356116a7565b6102776116f9565b61032c6004803603602081101561084f57600080fd5b5035611709565b61027761175b565b610277611761565b61025b611767565b61032c6004803603604081101561088457600080fd5b810190602081018135600160201b81111561089e57600080fd5b8201836020820111156108b057600080fd5b803590602001918460208302840111600160201b831117156108d157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561092057600080fd5b82018360208201111561093257600080fd5b803590602001918460208302840111600160201b8311171561095357600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061179c945050505050565b61032c611866565b61032c600480360360208110156109af57600080fd5b5035151561197d565b61032c600480360360208110156109ce57600080fd5b50356001600160a01b03166119ed565b610277600480360360208110156109f457600080fd5b50356001600160a01b0316611a5c565b61032c60048036036020811015610a1a57600080fd5b5035611a6e565b61032c60048036036020811015610a3757600080fd5b5035611ac0565b610277611b12565b610277611b1a565b60106020526000908152604090205460ff1681565b60065481565b336000908152600d602052604090205460ff16610abb576040805162461bcd60e51b815260206004820152601860248201526000805160206120ff833981519152604482015290519081900360640190fd5b6000610ac682611b20565b90508015610beb576001546001600160a01b031660005b8451811015610be8576000858281518110610af457fe5b6020026020010151905060005b6008811015610bde57601154600884028201908110610b2557505050505050610bed565b60118054602084029185831c63ffffffff169160009190600889028701908110610b4b57fe5b6000918252602082200154601280546001600160a01b0390921693509060088a028801908110610b7757fe5b60009182526020822001549150610ba482610b9e8668327cb2734119d3b7a9601e1b611c33565b90611c95565b6001600160a01b0384166000908152600e602052604090208190559050610bcc8a8483611cd4565b505060019094019350610b0192505050565b5050600101610add565b50505b505b5050565b6001546001600160a01b031681565b60095481565b61271081565b6000546001600160a01b031681565b336000908152600d602052604090205460ff16610c6d576040805162461bcd60e51b815260206004820152601860248201526000805160206120ff833981519152604482015290519081900360640190fd5b610c778484611d5b565b60035460408051629a208160e81b81526004810185905233602482015290516001600160a01b03909216918291639a20810091604480830192600092919082900301818387803b158015610cca57600080fd5b505af1158015610cde573d6000803e3d6000fd5b50506040805163f3883d8b60e01b81526004810186905233602482015290516001600160a01b038516935063f3883d8b9250604480830192600092919082900301818387803b158015610d3057600080fd5b505af1158015610d44573d6000803e3d6000fd5b505050505050505050565b6000546001600160a01b03163314610d9c576040805162461bcd60e51b815260206004820152601560248201526000805160206120df833981519152604482015290519081900360640190fd5b600455565b6000546001600160a01b03163314610dee576040805162461bcd60e51b815260206004820152601560248201526000805160206120df833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152600d602052604090205460ff16610e62576040805162461bcd60e51b815260206004820152601860248201526000805160206120ff833981519152604482015290519081900360640190fd5b610bed8282611d5b565b6000546001600160a01b03163314610eb9576040805162461bcd60e51b815260206004820152601560248201526000805160206120df833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b600b5481565b6002546001600160a01b031681565b6000546001600160a01b03163314610f46576040805162461bcd60e51b815260206004820152601560248201526000805160206120df833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b600054600160a01b900460ff1681565b60085481565b6000546001600160a01b03163314610fd4576040805162461bcd60e51b815260206004820152601560248201526000805160206120df833981519152604482015290519081900360640190fd5b6107088111156110155760405162461bcd60e51b81526004018080602001828103825260258152602001806120ba6025913960400191505060405180910390fd5b600655565b6012818154811061102757fe5b600091825260209091200154905081565b6011818154811061104557fe5b6000918252602090912001546001600160a01b0316905081565b600d6020526000908152604090205460ff1681565b60045481565b6003546001600160a01b031681565b61070881565b600054600160a81b900460ff1681565b336000908152600f602052604090205460ff166110f1576040805162461bcd60e51b815260206004820152601860248201526000805160206120ff833981519152604482015290519081900360640190fd5b3360009081526010602052604090205460ff16611155576040805162461bcd60e51b815260206004820152601e60248201527f466173745072696365466565643a20616c726561647920656e61626c65640000604482015290519081900360640190fd5b336000908152601060205260409020805460ff19169055600c5461117a906001611e43565b600c556040805133815290517f9fe0c305c33aa92757a537936872a60be0d91549a4303cc99fd8b7fce8a002759181900360200190a1565b600a5481565b6000546001600160a01b03163314611205576040805162461bcd60e51b815260206004820152601560248201526000805160206120df833981519152604482015290519081900360640190fd5b600855565b336000908152600d602052604090205460ff1661125c576040805162461bcd60e51b815260206004820152601860248201526000805160206120ff833981519152604482015290519081900360640190fd5b600061126782611b20565b90508015611306576001546001600160a01b031660005b855181101561130357600086828151811061129557fe5b602002602001015190508582815181106112ab57fe5b6020026020010151600e6000836001600160a01b03166001600160a01b03168152602001908152602001600020819055506112fa83828885815181106112ed57fe5b6020026020010151611cd4565b5060010161127e565b50505b50505050565b6000546001600160a01b03163314611359576040805162461bcd60e51b815260206004820152601560248201526000805160206120df833981519152604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600f6020526000908152604090205460ff1681565b6000546001600160a01b031633146113dd576040805162461bcd60e51b815260206004820152601560248201526000805160206120df833981519152604482015290519081900360640190fd5b600054600160a01b900460ff16156114265760405162461bcd60e51b81526004018080602001828103825260228152602001806121ca6022913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b178155600b8490555b825181101561149257600083828151811061145657fe5b6020908102919091018101516001600160a01b03166000908152600f90915260409020805460ff1916600190811790915591909101905061143f565b5060005b81518110156113065760008282815181106114ad57fe5b6020908102919091018101516001600160a01b03166000908152600d90915260409020805460ff19166001908117909155919091019050611496565b6000611502600654600454611e8590919063ffffffff16565b4211156115105750816116a0565b6001600160a01b0384166000908152600e60205260409020548061153757839150506116a0565b6000611560612710610b9e611559600a54612710611e8590919063ffffffff16565b8890611c33565b9050600061158b612710610b9e611584600a54612710611e4390919063ffffffff16565b8990611c33565b9050611595611767565b15611646578083101580156115aa5750818311155b1561164657841561160d57828611156116025760006115e6612710610b9e6115df600954612710611e8590919063ffffffff16565b8790611c33565b90508681116115f557806115f7565b865b9450505050506116a0565b8293505050506116a0565b82861015611602576000611637612710610b9e6115df600954612710611e4390919063ffffffff16565b90508681106115f557806115f7565b8415611678578286111561165f578593505050506116a0565b81831161166c578261166e565b815b93505050506116a0565b8286101561168b578593505050506116a0565b808310611698578261169a565b805b93505050505b9392505050565b6000546001600160a01b031633146116f4576040805162461bcd60e51b815260206004820152601560248201526000805160206120df833981519152604482015290519081900360640190fd5b600a55565b68327cb2734119d3b7a9601e1b81565b6000546001600160a01b03163314611756576040805162461bcd60e51b815260206004820152601560248201526000805160206120df833981519152604482015290519081900360640190fd5b600955565b600c5481565b60075481565b60008054600160a81b900460ff161561178257506000611799565b600b54600c541061179557506000611799565b5060015b90565b6000546001600160a01b031633146117e9576040805162461bcd60e51b815260206004820152601560248201526000805160206120df833981519152604482015290519081900360640190fd5b805182511461183f576040805162461bcd60e51b815260206004820152601e60248201527f466173745072696365466565643a20696e76616c6964206c656e677468730000604482015290519081900360640190fd5b8151611852906011906020850190611fd9565b508051610beb90601290602084019061203e565b336000908152600f602052604090205460ff166118b8576040805162461bcd60e51b815260206004820152601860248201526000805160206120ff833981519152604482015290519081900360640190fd5b3360009081526010602052604090205460ff161561191c576040805162461bcd60e51b815260206004820152601c60248201527b11985cdd141c9a58d9519959590e88185b1c9958591e481d9bdd195960221b604482015290519081900360640190fd5b336000908152601060205260409020805460ff19166001908117909155600c5461194591611e85565b600c556040805133815290517f4c0c5fabf50e808e3bc8d19577d305e3a7163eea7e8a74a50caa8896694cd44b9181900360200190a1565b336000908152600d602052604090205460ff166119cf576040805162461bcd60e51b815260206004820152601860248201526000805160206120ff833981519152604482015290519081900360640190fd5b60008054911515600160a81b0260ff60a81b19909216919091179055565b6000546001600160a01b03163314611a3a576040805162461bcd60e51b815260206004820152601560248201526000805160206120df833981519152604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b600e6020526000908152604090205481565b6000546001600160a01b03163314611abb576040805162461bcd60e51b815260206004820152601560248201526000805160206120df833981519152604482015290519081900360640190fd5b600755565b6002546001600160a01b03163314611b0d576040805162461bcd60e51b815260206004820152601860248201526000805160206120ff833981519152604482015290519081900360640190fd5b600b55565b63ffffffff81565b60055481565b60075460009015611b7957600754600554611b3c904390611e43565b1015611b795760405162461bcd60e51b815260040180806020018281038252602e81526020018061219c602e913960400191505060405180910390fd5b600854611b87904290611e43565b8211611bc45760405162461bcd60e51b815260040180806020018281038252602d81526020018061216f602d913960400191505060405180910390fd5b600854611bd2904290611e85565b8210611c0f5760405162461bcd60e51b815260040180806020018281038252602f81526020018061211f602f913960400191505060405180910390fd5b600454821015611c2157506000611c2e565b5060048190554360055560015b919050565b600082611c4257506000611c8f565b82820282848281611c4f57fe5b0414611c8c5760405162461bcd60e51b815260040180806020018281038252602181526020018061214e6021913960400191505060405180910390fd5b90505b92915050565b6000611c8c83836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b815250611edd565b6001600160a01b038316611ce757610beb565b826001600160a01b031663e0409c7183836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611d3e57600080fd5b505af1158015611d52573d6000803e3d6000fd5b50505050505050565b6000611d6682611b20565b90508015610beb576001546001600160a01b031660005b6008811015610be85760115481908110611d9a5750505050610bed565b60118054602084029188831c63ffffffff16916000919086908110611dbb57fe5b6000918252602082200154601280546001600160a01b0390921693509087908110611de257fe5b60009182526020822001549150611e0982610b9e8668327cb2734119d3b7a9601e1b611c33565b6001600160a01b0384166000908152600e602052604090208190559050611e31888483611cd4565b505060019094019350611d7d92505050565b6000611c8c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f7f565b600082820183811015611c8c576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b60008183611f695760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611f2e578181015183820152602001611f16565b50505050905090810190601f168015611f5b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611f7557fe5b0495945050505050565b60008184841115611fd15760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611f2e578181015183820152602001611f16565b505050900390565b82805482825590600052602060002090810192821561202e579160200282015b8281111561202e57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611ff9565b5061203a929150612085565b5090565b828054828255906000526020600020908101928215612079579160200282015b8281111561207957825182559160200191906001019061205e565b5061203a9291506120a4565b5b8082111561203a5780546001600160a01b0319168155600101612086565b5b8082111561203a57600081556001016120a556fe466173745072696365466565643a20696e76616c6964205f70726963654475726174696f6e476f7665726e61626c653a20666f7262696464656e0000000000000000000000466173745072696365466565643a20666f7262696464656e0000000000000000466173745072696365466565643a205f74696d657374616d70206578636565647320616c6c6f7765642072616e6765536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77466173745072696365466565643a205f74696d657374616d702062656c6f7720616c6c6f7765642072616e6765466173745072696365466565643a206d696e426c6f636b496e74657276616c206e6f742079657420706173736564466173745072696365466565643a20616c726561647920696e697469616c697a6564a26469706673582212208b7367d1d0a6c6122c60ba9e881c570af6c8dfc65c70ca6725ec4aa5929c91ad64736f6c634300060c0033466173745072696365466565643a20696e76616c6964205f70726963654475726174696f6e000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa0000000000000000000000003934ca8b69d05533769b0d96d1a11c44c1d2fa3b0000000000000000000000008da386b8e9e3c27411ec5972c5d91399ad0b9d02000000000000000000000000e510571cac76279dadf6c4b6eace5370f86e3dc2

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102305760003560e01c806303b049361461023557806303cd25711461026f57806303f4d7dc146102895780630e9272ea1461032e578063114fbeb314610352578063126082cf1461035a57806312d43a51146103625780631389a3cc1461036a57806314dd2dce14610399578063162ac4e0146103b657806317835d1c146103dc5780631a153391146103ff578063287800c91461042d5780632a709b141461043557806331cb61051461043d578063392e53cd1461046b5780633aa08f861461047357806344c231931461047b5780634d11fb4a146104985780634f64b2be146104b55780634fdfb086146104d257806354aea127146104f857806361ef161f14610500578063668d3d6514610508578063695d4184146105105780636ccd47c414610518578063715c753614610520578063776d16c114610528578063782661bc146105455780637cb2b79c1461066a5780637df73e27146106905780637fbc79c6146106b65780637fece368146107e057806382553aad1461081457806395082d25146108315780639e4de0e314610839578063b0a2566614610856578063b3606b561461085e578063c0e4de8e14610866578063c8390a481461086e578063c84a912414610991578063ce98dfa814610999578063cfad57a2146109b8578063cfed246b146109de578063d6a153f114610a04578063d925351a14610a21578063f67e3bf014610a3e578063f90ce5ba14610a46575b600080fd5b61025b6004803603602081101561024b57600080fd5b50356001600160a01b0316610a4e565b604080519115158252519081900360200190f35b610277610a63565b60408051918252519081900360200190f35b61032c6004803603604081101561029f57600080fd5b810190602081018135600160201b8111156102b957600080fd5b8201836020820111156102cb57600080fd5b803590602001918460208302840111600160201b831117156102ec57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505091359250610a69915050565b005b610336610bf1565b604080516001600160a01b039092168252519081900360200190f35b610277610c00565b610277610c06565b610336610c0c565b61032c6004803603608081101561038057600080fd5b5080359060208101359060408101359060600135610c1b565b61032c600480360360208110156103af57600080fd5b5035610d4f565b61032c600480360360208110156103cc57600080fd5b50356001600160a01b0316610da1565b61032c600480360360408110156103f257600080fd5b5080359060200135610e10565b61032c6004803603604081101561041557600080fd5b506001600160a01b0381351690602001351515610e6c565b610277610ee4565b610336610eea565b61032c6004803603604081101561045357600080fd5b506001600160a01b0381351690602001351515610ef9565b61025b610f71565b610277610f81565b61032c6004803603602081101561049157600080fd5b5035610f87565b610277600480360360208110156104ae57600080fd5b503561101a565b610336600480360360208110156104cb57600080fd5b5035611038565b61025b600480360360208110156104e857600080fd5b50356001600160a01b031661105f565b610277611074565b61033661107a565b610277611089565b61025b61108f565b61032c61109f565b6102776111b2565b61032c6004803603602081101561053e57600080fd5b50356111b8565b61032c6004803603606081101561055b57600080fd5b810190602081018135600160201b81111561057557600080fd5b82018360208201111561058757600080fd5b803590602001918460208302840111600160201b831117156105a857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156105f757600080fd5b82018360208201111561060957600080fd5b803590602001918460208302840111600160201b8311171561062a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550509135925061120a915050565b61032c6004803603602081101561068057600080fd5b50356001600160a01b031661130c565b61025b600480360360208110156106a657600080fd5b50356001600160a01b031661137b565b61032c600480360360608110156106cc57600080fd5b81359190810190604081016020820135600160201b8111156106ed57600080fd5b8201836020820111156106ff57600080fd5b803590602001918460208302840111600160201b8311171561072057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561076f57600080fd5b82018360208201111561078157600080fd5b803590602001918460208302840111600160201b831117156107a257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611390945050505050565b610277600480360360608110156107f657600080fd5b506001600160a01b03813516906020810135906040013515156114e9565b61032c6004803603602081101561082a57600080fd5b50356116a7565b6102776116f9565b61032c6004803603602081101561084f57600080fd5b5035611709565b61027761175b565b610277611761565b61025b611767565b61032c6004803603604081101561088457600080fd5b810190602081018135600160201b81111561089e57600080fd5b8201836020820111156108b057600080fd5b803590602001918460208302840111600160201b831117156108d157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561092057600080fd5b82018360208201111561093257600080fd5b803590602001918460208302840111600160201b8311171561095357600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061179c945050505050565b61032c611866565b61032c600480360360208110156109af57600080fd5b5035151561197d565b61032c600480360360208110156109ce57600080fd5b50356001600160a01b03166119ed565b610277600480360360208110156109f457600080fd5b50356001600160a01b0316611a5c565b61032c60048036036020811015610a1a57600080fd5b5035611a6e565b61032c60048036036020811015610a3757600080fd5b5035611ac0565b610277611b12565b610277611b1a565b60106020526000908152604090205460ff1681565b60065481565b336000908152600d602052604090205460ff16610abb576040805162461bcd60e51b815260206004820152601860248201526000805160206120ff833981519152604482015290519081900360640190fd5b6000610ac682611b20565b90508015610beb576001546001600160a01b031660005b8451811015610be8576000858281518110610af457fe5b6020026020010151905060005b6008811015610bde57601154600884028201908110610b2557505050505050610bed565b60118054602084029185831c63ffffffff169160009190600889028701908110610b4b57fe5b6000918252602082200154601280546001600160a01b0390921693509060088a028801908110610b7757fe5b60009182526020822001549150610ba482610b9e8668327cb2734119d3b7a9601e1b611c33565b90611c95565b6001600160a01b0384166000908152600e602052604090208190559050610bcc8a8483611cd4565b505060019094019350610b0192505050565b5050600101610add565b50505b505b5050565b6001546001600160a01b031681565b60095481565b61271081565b6000546001600160a01b031681565b336000908152600d602052604090205460ff16610c6d576040805162461bcd60e51b815260206004820152601860248201526000805160206120ff833981519152604482015290519081900360640190fd5b610c778484611d5b565b60035460408051629a208160e81b81526004810185905233602482015290516001600160a01b03909216918291639a20810091604480830192600092919082900301818387803b158015610cca57600080fd5b505af1158015610cde573d6000803e3d6000fd5b50506040805163f3883d8b60e01b81526004810186905233602482015290516001600160a01b038516935063f3883d8b9250604480830192600092919082900301818387803b158015610d3057600080fd5b505af1158015610d44573d6000803e3d6000fd5b505050505050505050565b6000546001600160a01b03163314610d9c576040805162461bcd60e51b815260206004820152601560248201526000805160206120df833981519152604482015290519081900360640190fd5b600455565b6000546001600160a01b03163314610dee576040805162461bcd60e51b815260206004820152601560248201526000805160206120df833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152600d602052604090205460ff16610e62576040805162461bcd60e51b815260206004820152601860248201526000805160206120ff833981519152604482015290519081900360640190fd5b610bed8282611d5b565b6000546001600160a01b03163314610eb9576040805162461bcd60e51b815260206004820152601560248201526000805160206120df833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b600b5481565b6002546001600160a01b031681565b6000546001600160a01b03163314610f46576040805162461bcd60e51b815260206004820152601560248201526000805160206120df833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b600054600160a01b900460ff1681565b60085481565b6000546001600160a01b03163314610fd4576040805162461bcd60e51b815260206004820152601560248201526000805160206120df833981519152604482015290519081900360640190fd5b6107088111156110155760405162461bcd60e51b81526004018080602001828103825260258152602001806120ba6025913960400191505060405180910390fd5b600655565b6012818154811061102757fe5b600091825260209091200154905081565b6011818154811061104557fe5b6000918252602090912001546001600160a01b0316905081565b600d6020526000908152604090205460ff1681565b60045481565b6003546001600160a01b031681565b61070881565b600054600160a81b900460ff1681565b336000908152600f602052604090205460ff166110f1576040805162461bcd60e51b815260206004820152601860248201526000805160206120ff833981519152604482015290519081900360640190fd5b3360009081526010602052604090205460ff16611155576040805162461bcd60e51b815260206004820152601e60248201527f466173745072696365466565643a20616c726561647920656e61626c65640000604482015290519081900360640190fd5b336000908152601060205260409020805460ff19169055600c5461117a906001611e43565b600c556040805133815290517f9fe0c305c33aa92757a537936872a60be0d91549a4303cc99fd8b7fce8a002759181900360200190a1565b600a5481565b6000546001600160a01b03163314611205576040805162461bcd60e51b815260206004820152601560248201526000805160206120df833981519152604482015290519081900360640190fd5b600855565b336000908152600d602052604090205460ff1661125c576040805162461bcd60e51b815260206004820152601860248201526000805160206120ff833981519152604482015290519081900360640190fd5b600061126782611b20565b90508015611306576001546001600160a01b031660005b855181101561130357600086828151811061129557fe5b602002602001015190508582815181106112ab57fe5b6020026020010151600e6000836001600160a01b03166001600160a01b03168152602001908152602001600020819055506112fa83828885815181106112ed57fe5b6020026020010151611cd4565b5060010161127e565b50505b50505050565b6000546001600160a01b03163314611359576040805162461bcd60e51b815260206004820152601560248201526000805160206120df833981519152604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600f6020526000908152604090205460ff1681565b6000546001600160a01b031633146113dd576040805162461bcd60e51b815260206004820152601560248201526000805160206120df833981519152604482015290519081900360640190fd5b600054600160a01b900460ff16156114265760405162461bcd60e51b81526004018080602001828103825260228152602001806121ca6022913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b178155600b8490555b825181101561149257600083828151811061145657fe5b6020908102919091018101516001600160a01b03166000908152600f90915260409020805460ff1916600190811790915591909101905061143f565b5060005b81518110156113065760008282815181106114ad57fe5b6020908102919091018101516001600160a01b03166000908152600d90915260409020805460ff19166001908117909155919091019050611496565b6000611502600654600454611e8590919063ffffffff16565b4211156115105750816116a0565b6001600160a01b0384166000908152600e60205260409020548061153757839150506116a0565b6000611560612710610b9e611559600a54612710611e8590919063ffffffff16565b8890611c33565b9050600061158b612710610b9e611584600a54612710611e4390919063ffffffff16565b8990611c33565b9050611595611767565b15611646578083101580156115aa5750818311155b1561164657841561160d57828611156116025760006115e6612710610b9e6115df600954612710611e8590919063ffffffff16565b8790611c33565b90508681116115f557806115f7565b865b9450505050506116a0565b8293505050506116a0565b82861015611602576000611637612710610b9e6115df600954612710611e4390919063ffffffff16565b90508681106115f557806115f7565b8415611678578286111561165f578593505050506116a0565b81831161166c578261166e565b815b93505050506116a0565b8286101561168b578593505050506116a0565b808310611698578261169a565b805b93505050505b9392505050565b6000546001600160a01b031633146116f4576040805162461bcd60e51b815260206004820152601560248201526000805160206120df833981519152604482015290519081900360640190fd5b600a55565b68327cb2734119d3b7a9601e1b81565b6000546001600160a01b03163314611756576040805162461bcd60e51b815260206004820152601560248201526000805160206120df833981519152604482015290519081900360640190fd5b600955565b600c5481565b60075481565b60008054600160a81b900460ff161561178257506000611799565b600b54600c541061179557506000611799565b5060015b90565b6000546001600160a01b031633146117e9576040805162461bcd60e51b815260206004820152601560248201526000805160206120df833981519152604482015290519081900360640190fd5b805182511461183f576040805162461bcd60e51b815260206004820152601e60248201527f466173745072696365466565643a20696e76616c6964206c656e677468730000604482015290519081900360640190fd5b8151611852906011906020850190611fd9565b508051610beb90601290602084019061203e565b336000908152600f602052604090205460ff166118b8576040805162461bcd60e51b815260206004820152601860248201526000805160206120ff833981519152604482015290519081900360640190fd5b3360009081526010602052604090205460ff161561191c576040805162461bcd60e51b815260206004820152601c60248201527b11985cdd141c9a58d9519959590e88185b1c9958591e481d9bdd195960221b604482015290519081900360640190fd5b336000908152601060205260409020805460ff19166001908117909155600c5461194591611e85565b600c556040805133815290517f4c0c5fabf50e808e3bc8d19577d305e3a7163eea7e8a74a50caa8896694cd44b9181900360200190a1565b336000908152600d602052604090205460ff166119cf576040805162461bcd60e51b815260206004820152601860248201526000805160206120ff833981519152604482015290519081900360640190fd5b60008054911515600160a81b0260ff60a81b19909216919091179055565b6000546001600160a01b03163314611a3a576040805162461bcd60e51b815260206004820152601560248201526000805160206120df833981519152604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b600e6020526000908152604090205481565b6000546001600160a01b03163314611abb576040805162461bcd60e51b815260206004820152601560248201526000805160206120df833981519152604482015290519081900360640190fd5b600755565b6002546001600160a01b03163314611b0d576040805162461bcd60e51b815260206004820152601860248201526000805160206120ff833981519152604482015290519081900360640190fd5b600b55565b63ffffffff81565b60055481565b60075460009015611b7957600754600554611b3c904390611e43565b1015611b795760405162461bcd60e51b815260040180806020018281038252602e81526020018061219c602e913960400191505060405180910390fd5b600854611b87904290611e43565b8211611bc45760405162461bcd60e51b815260040180806020018281038252602d81526020018061216f602d913960400191505060405180910390fd5b600854611bd2904290611e85565b8210611c0f5760405162461bcd60e51b815260040180806020018281038252602f81526020018061211f602f913960400191505060405180910390fd5b600454821015611c2157506000611c2e565b5060048190554360055560015b919050565b600082611c4257506000611c8f565b82820282848281611c4f57fe5b0414611c8c5760405162461bcd60e51b815260040180806020018281038252602181526020018061214e6021913960400191505060405180910390fd5b90505b92915050565b6000611c8c83836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b815250611edd565b6001600160a01b038316611ce757610beb565b826001600160a01b031663e0409c7183836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611d3e57600080fd5b505af1158015611d52573d6000803e3d6000fd5b50505050505050565b6000611d6682611b20565b90508015610beb576001546001600160a01b031660005b6008811015610be85760115481908110611d9a5750505050610bed565b60118054602084029188831c63ffffffff16916000919086908110611dbb57fe5b6000918252602082200154601280546001600160a01b0390921693509087908110611de257fe5b60009182526020822001549150611e0982610b9e8668327cb2734119d3b7a9601e1b611c33565b6001600160a01b0384166000908152600e602052604090208190559050611e31888483611cd4565b505060019094019350611d7d92505050565b6000611c8c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f7f565b600082820183811015611c8c576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b60008183611f695760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611f2e578181015183820152602001611f16565b50505050905090810190601f168015611f5b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611f7557fe5b0495945050505050565b60008184841115611fd15760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611f2e578181015183820152602001611f16565b505050900390565b82805482825590600052602060002090810192821561202e579160200282015b8281111561202e57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611ff9565b5061203a929150612085565b5090565b828054828255906000526020600020908101928215612079579160200282015b8281111561207957825182559160200191906001019061205e565b5061203a9291506120a4565b5b8082111561203a5780546001600160a01b0319168155600101612086565b5b8082111561203a57600081556001016120a556fe466173745072696365466565643a20696e76616c6964205f70726963654475726174696f6e476f7665726e61626c653a20666f7262696464656e0000000000000000000000466173745072696365466565643a20666f7262696464656e0000000000000000466173745072696365466565643a205f74696d657374616d70206578636565647320616c6c6f7765642072616e6765536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77466173745072696365466565643a205f74696d657374616d702062656c6f7720616c6c6f7765642072616e6765466173745072696365466565643a206d696e426c6f636b496e74657276616c206e6f742079657420706173736564466173745072696365466565643a20616c726561647920696e697469616c697a6564a26469706673582212208b7367d1d0a6c6122c60ba9e881c570af6c8dfc65c70ca6725ec4aa5929c91ad64736f6c634300060c0033

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

000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa0000000000000000000000003934ca8b69d05533769b0d96d1a11c44c1d2fa3b0000000000000000000000008da386b8e9e3c27411ec5972c5d91399ad0b9d02000000000000000000000000e510571cac76279dadf6c4b6eace5370f86e3dc2

-----Decoded View---------------
Arg [0] : _priceDuration (uint256): 300
Arg [1] : _minBlockInterval (uint256): 0
Arg [2] : _maxDeviationBasisPoints (uint256): 250
Arg [3] : _fastPriceEvents (address): 0x3934cA8b69D05533769B0D96d1A11C44c1D2fA3B
Arg [4] : _tokenManager (address): 0x8DA386B8e9E3C27411ec5972C5D91399ad0b9D02
Arg [5] : _positionRouter (address): 0xE510571cAc76279DADf6c4b6eAcE5370F86e3dC2

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000000000012c
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000fa
Arg [3] : 0000000000000000000000003934ca8b69d05533769b0d96d1a11c44c1d2fa3b
Arg [4] : 0000000000000000000000008da386b8e9e3c27411ec5972c5d91399ad0b9d02
Arg [5] : 000000000000000000000000e510571cac76279dadf6c4b6eace5370f86e3dc2


Deployed ByteCode Sourcemap

7097:12832:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8369:53;;;;;;;;;;;;;;;;-1:-1:-1;8369:53:0;-1:-1:-1;;;;;8369:53:0;;:::i;:::-;;;;;;;;;;;;;;;;;;7861:28;;;:::i;:::-;;;;;;;;;;;;;;;;13047:1125;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13047:1125:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13047:1125:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13047:1125:0;;-1:-1:-1;;13047:1125:0;;;-1:-1:-1;13047:1125:0;;-1:-1:-1;;13047:1125:0:i;:::-;;7655:30;;;:::i;:::-;;;;-1:-1:-1;;;;;7655:30:0;;;;;;;;;;;;;;8006:29;;;:::i;7456:52::-;;;:::i;6739:18::-;;;:::i;14337:564::-;;;;;;;;;;;;;;;;-1:-1:-1;14337:564:0;;;;;;;;;;;;;;;;;:::i;11639:116::-;;;;;;;;;;;;;;;;-1:-1:-1;11639:116:0;;:::i;10881:124::-;;;;;;;;;;;;;;;;-1:-1:-1;10881:124:0;-1:-1:-1;;;;;10881:124:0;;:::i;14180:149::-;;;;;;;;;;;;;;;;-1:-1:-1;14180:149:0;;;;;;;:::i;10752:121::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10752:121:0;;;;;;;;;;:::i;8130:32::-;;;:::i;7694:27::-;;;:::i;10625:119::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10625:119:0;;;;;;;;;;:::i;7581:25::-;;;:::i;7934:31::-;;;:::i;11013:213::-;;;;;;;;;;;;;;;;-1:-1:-1;11013:213:0;;:::i;8748:32::-;;;;;;;;;;;;;;;;-1:-1:-1;8748:32:0;;:::i;8511:23::-;;;;;;;;;;;;;;;;-1:-1:-1;8511:23:0;;:::i;8222:41::-;;;;;;;;;;;;;;;;-1:-1:-1;8222:41:0;-1:-1:-1;;;;;8222:41:0;;:::i;7768:37::-;;;:::i;7730:29::-;;;:::i;7517:55::-;;;:::i;7613:35::-;;;:::i;15227:310::-;;;:::i;8083:38::-;;;:::i;11503:128::-;;;;;;;;;;;;;;;;-1:-1:-1;11503:128:0;;:::i;12484:555::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12484:555:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12484:555:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12484:555:0;;;;;;;;-1:-1:-1;12484:555:0;;-1:-1:-1;;;;;12484:555:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12484:555:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12484:555:0;;-1:-1:-1;;12484:555:0;;;-1:-1:-1;12484:555:0;;-1:-1:-1;;12484:555:0:i;10505:112::-;;;;;;;;;;;;;;;;-1:-1:-1;10505:112:0;-1:-1:-1;;;;;10505:112:0;;:::i;8322:40::-;;;;;;;;;;;;;;;;-1:-1:-1;8322:40:0;-1:-1:-1;;;;;8322:40:0;;:::i;9876:621::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9876:621:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9876:621:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9876:621:0;;;;;;;;-1:-1:-1;9876:621:0;;-1:-1:-1;;;;;9876:621:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9876:621:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9876:621:0;;-1:-1:-1;9876:621:0;;-1:-1:-1;;;;;9876:621:0:i;15545:2091::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15545:2091:0;;;;;;;;;;;;;;;:::i;11891:156::-;;;;;;;;;;;;;;;;-1:-1:-1;11891:156:0;;:::i;7213:48::-;;;:::i;11763:120::-;;;;;;;;;;;;;;;;-1:-1:-1;11763:120:0;;:::i;8169:44::-;;;:::i;7896:31::-;;;:::i;17644:258::-;;;:::i;12204:272::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12204:272:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12204:272:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12204:272:0;;;;;;;;-1:-1:-1;12204:272:0;;-1:-1:-1;;;;;12204:272:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12204:272:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12204:272:0;;-1:-1:-1;12204:272:0;;-1:-1:-1;;;;;12204:272:0:i;14909:310::-;;;:::i;11370:125::-;;;;;;;;;;;;;;;;-1:-1:-1;11370:125:0;;;;:::i;6939:76::-;;;;;;;;;;;;;;;;-1:-1:-1;6939:76:0;-1:-1:-1;;;;;6939:76:0;;:::i;8272:41::-;;;;;;;;;;;;;;;;-1:-1:-1;8272:41:0;-1:-1:-1;;;;;8272:41:0;;:::i;11234:128::-;;;;;;;;;;;;;;;;-1:-1:-1;11234:128:0;;:::i;12055:141::-;;;;;;;;;;;;;;;;-1:-1:-1;12055:141:0;;:::i;7382:65::-;;;:::i;7812:40::-;;;:::i;8369:53::-;;;;;;;;;;;;;;;:::o;7861:28::-;;;;:::o;13047:1125::-;9050:10;9040:21;;;;:9;:21;;;;;;;;9032:58;;;;;-1:-1:-1;;;9032:58:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9032:58:0;;;;;;;;;;;;;;;13160:17:::1;13180:33;13202:10;13180:21;:33::i;:::-;13160:53;;13230:12;13226:939;;;13286:15;::::0;-1:-1:-1;;;;;13286:15:0::1;13259:24;13318:836;13342:14;:21;13338:1;:25;13318:836;;;13389:17;13409:14;13424:1;13409:17;;;;;;;;;;;;;;13389:37;;13452:9;13447:692;13471:1;13467;:5;13447:692;;;13563:6;:13:::0;13522:1:::1;13518:5:::0;::::1;:9:::0;::::1;::::0;13554:22;::::1;13550:85;;13605:7;;;;;;;;13550:85;13803:6;:17:::0;;13678:2:::1;:6:::0;::::1;::::0;13724:21;;::::1;7422:25:::0;13723:39:::1;::::0;13659:16:::1;::::0;13803:6;13814:1:::1;13810:5:::0;::::1;:9:::0;::::1;::::0;13803:17;::::1;;;;;;::::0;;;::::1;::::0;;::::1;::::0;13868:15:::1;:26:::0;;-1:-1:-1;;;;;13803:17:0;;::::1;::::0;-1:-1:-1;13868:15:0;13888:1:::1;13884:5:::0;::::1;:9:::0;::::1;::::0;13868:26;::::1;;;;;;::::0;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;13941:46:0::1;13868:26:::0;13941::::1;:5:::0;-1:-1:-1;;;13941:9:0::1;:26::i;:::-;:30:::0;::::1;:46::i;:::-;-1:-1:-1::0;;;;;14010:13:0;::::1;;::::0;;;:6:::1;:13;::::0;;;;:29;;;13917:70;-1:-1:-1;14064:55:0::1;14080:16:::0;14017:5;13917:70;14064:15:::1;:55::i;:::-;-1:-1:-1::0;;13474:3:0::1;::::0;;::::1;::::0;-1:-1:-1;13447:692:0::1;::::0;-1:-1:-1;;;13447:692:0::1;;-1:-1:-1::0;;13365:3:0::1;;13318:836;;;;13226:939;;9101:1;;13047:1125:::0;;:::o;7655:30::-;;;-1:-1:-1;;;;;7655:30:0;;:::o;8006:29::-;;;;:::o;7456:52::-;7503:5;7456:52;:::o;6739:18::-;;;-1:-1:-1;;;;;6739:18:0;;:::o;14337:564::-;9050:10;9040:21;;;;:9;:21;;;;;;;;9032:58;;;;;-1:-1:-1;;;9032:58:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9032:58:0;;;;;;;;;;;;;;;14567:42:::1;14586:10;14598;14567:18;:42::i;:::-;14672:14;::::0;14698:92:::1;::::0;;-1:-1:-1;;;14698:92:0;;::::1;::::0;::::1;::::0;;;14778:10:::1;14698:92:::0;;;;;;-1:-1:-1;;;;;14672:14:0;;::::1;::::0;;;14698:40:::1;::::0;:92;;;;;14622:31:::1;::::0;14698:92;;;;;;;14622:31;14672:14;14698:92;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;14801:92:0::1;::::0;;-1:-1:-1;;;14801:92:0;;::::1;::::0;::::1;::::0;;;14881:10:::1;14801:92:::0;;;;;;-1:-1:-1;;;;;14801:40:0;::::1;::::0;-1:-1:-1;14801:40:0::1;::::0;-1:-1:-1;14801:92:0;;;;;-1:-1:-1;;14801:92:0;;;;;;;-1:-1:-1;14801:40:0;:92;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9101:1;14337:564:::0;;;;:::o;11639:116::-;6882:3;;-1:-1:-1;;;;;6882:3:0;6868:10;:17;6860:51;;;;;-1:-1:-1;;;6860:51:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6860:51:0;;;;;;;;;;;;;;;11717:13:::1;:30:::0;11639:116::o;10881:124::-;6882:3;;-1:-1:-1;;;;;6882:3:0;6868:10;:17;6860:51;;;;;-1:-1:-1;;;6860:51:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6860:51:0;;;;;;;;;;;;;;;10963:15:::1;:34:::0;;-1:-1:-1;;;;;;10963:34:0::1;-1:-1:-1::0;;;;;10963:34:0;;;::::1;::::0;;;::::1;::::0;;10881:124::o;14180:149::-;9050:10;9040:21;;;;:9;:21;;;;;;;;9032:58;;;;;-1:-1:-1;;;9032:58:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9032:58:0;;;;;;;;;;;;;;;14279:42:::1;14298:10;14310;14279:18;:42::i;10752:121::-:0;6882:3;;-1:-1:-1;;;;;6882:3:0;6868:10;:17;6860:51;;;;;-1:-1:-1;;;6860:51:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6860:51:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;10834:19:0;;;::::1;;::::0;;;:9:::1;:19;::::0;;;;:31;;-1:-1:-1;;10834:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10752:121::o;8130:32::-;;;;:::o;7694:27::-;;;-1:-1:-1;;;;;7694:27:0;;:::o;10625:119::-;6882:3;;-1:-1:-1;;;;;6882:3:0;6868:10;:17;6860:51;;;;;-1:-1:-1;;;6860:51:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6860:51:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;10706:18:0;;;::::1;;::::0;;;:8:::1;:18;::::0;;;;:30;;-1:-1:-1;;10706:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10625:119::o;7581:25::-;;;-1:-1:-1;;;7581:25:0;;;;;:::o;7934:31::-;;;;:::o;11013:213::-;6882:3;;-1:-1:-1;;;;;6882:3:0;6868:10;:17;6860:51;;;;;-1:-1:-1;;;6860:51:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6860:51:0;;;;;;;;;;;;;;;7562:10:::1;11099:14;:36;;11091:86;;;;-1:-1:-1::0;;;11091:86:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11188:13;:30:::0;11013:213::o;8748:32::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8748:32:0;:::o;8511:23::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8511:23:0;;-1:-1:-1;8511:23:0;:::o;8222:41::-;;;;;;;;;;;;;;;:::o;7768:37::-;;;;:::o;7730:29::-;;;-1:-1:-1;;;;;7730:29:0;;:::o;7517:55::-;7562:10;7517:55;:::o;7613:35::-;;;-1:-1:-1;;;7613:35:0;;;;;:::o;15227:310::-;8930:10;8921:20;;;;:8;:20;;;;;;;;8913:57;;;;;-1:-1:-1;;;8913:57:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8913:57:0;;;;;;;;;;;;;;;15315:10:::1;15293:33;::::0;;;:21:::1;:33;::::0;;;;;::::1;;15285:76;;;::::0;;-1:-1:-1;;;15285:76:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;15394:10;15408:5;15372:33:::0;;;:21:::1;:33;::::0;;;;:41;;-1:-1:-1;;15372:41:0::1;::::0;;15452:25:::1;::::0;:32:::1;::::0;15372:41;15452:29:::1;:32::i;:::-;15424:25;:60:::0;15502:27:::1;::::0;;15518:10:::1;15502:27:::0;;;;::::1;::::0;;;;::::1;::::0;;::::1;15227:310::o:0;8083:38::-;;;;:::o;11503:128::-;6882:3;;-1:-1:-1;;;;;6882:3:0;6868:10;:17;6860:51;;;;;-1:-1:-1;;;6860:51:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6860:51:0;;;;;;;;;;;;;;;11587:16:::1;:36:::0;11503:128::o;12484:555::-;9050:10;9040:21;;;;:9;:21;;;;;;;;9032:58;;;;;-1:-1:-1;;;9032:58:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9032:58:0;;;;;;;;;;;;;;;12641:17:::1;12661:33;12683:10;12661:21;:33::i;:::-;12641:53;;12711:12;12707:325;;;12767:15;::::0;-1:-1:-1;;;;;12767:15:0::1;12740:24;12799:222;12823:7;:14;12819:1;:18;12799:222;;;12863:13;12879:7;12887:1;12879:10;;;;;;;;;;;;;;12863:26;;12924:7;12932:1;12924:10;;;;;;;;;;;;;;12908:6;:13;12915:5;-1:-1:-1::0;;;;;12908:13:0::1;-1:-1:-1::0;;;;;12908:13:0::1;;;;;;;;;;;;:26;;;;12953:52;12969:16;12987:5;12994:7;13002:1;12994:10;;;;;;;;;;;;;;12953:15;:52::i;:::-;-1:-1:-1::0;12839:3:0::1;;12799:222;;;;12707:325;;9101:1;12484:555:::0;;;:::o;10505:112::-;6882:3;;-1:-1:-1;;;;;6882:3:0;6868:10;:17;6860:51;;;;;-1:-1:-1;;;6860:51:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6860:51:0;;;;;;;;;;;;;;;10581:12:::1;:28:::0;;-1:-1:-1;;;;;;10581:28:0::1;-1:-1:-1::0;;;;;10581:28:0;;;::::1;::::0;;;::::1;::::0;;10505:112::o;8322:40::-;;;;;;;;;;;;;;;:::o;9876:621::-;6882:3;;-1:-1:-1;;;;;6882:3:0;6868:10;:17;6860:51;;;;;-1:-1:-1;;;6860:51:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6860:51:0;;;;;;;;;;;;;;;10048:13:::1;::::0;-1:-1:-1;;;10048:13:0;::::1;;;10047:14;10039:61;;;;-1:-1:-1::0;;;10039:61:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10111:13;:20:::0;;-1:-1:-1;;;;10111:20:0::1;-1:-1:-1::0;;;10111:20:0::1;::::0;;10144:17:::1;:38:::0;;;10195:139:::1;10219:8;:15;10215:1;:19;10195:139;;;10256:14;10273:8;10282:1;10273:11;;;;;;;;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;10299:16:0::1;;::::0;;;:8:::1;:16:::0;;;;;;:23;;-1:-1:-1;;10299:23:0::1;10318:4;10299:23:::0;;::::1;::::0;;;10236:3;;;::::1;::::0;-1:-1:-1;10195:139:0::1;;;;10351:9;10346:144;10370:9;:16;10366:1;:20;10346:144;;;10408:15;10426:9;10436:1;10426:12;;;;;;;;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;10453:18:0::1;;::::0;;;:9:::1;:18:::0;;;;;;:25;;-1:-1:-1;;10453:25:0::1;10474:4;10453:25:::0;;::::1;::::0;;;10388:3;;;::::1;::::0;-1:-1:-1;10346:144:0::1;;15545:2091:::0;15680:7;15804:32;15822:13;;15804;;:17;;:32;;;;:::i;:::-;15786:15;:50;15782:99;;;-1:-1:-1;15860:9:0;15853:16;;15782:99;-1:-1:-1;;;;;15913:14:0;;15893:17;15913:14;;;:6;:14;;;;;;15942;15938:63;;15980:9;15973:16;;;;;15938:63;16013:16;16032:90;7503:5;16032:64;16046:49;16071:23;;7503:5;16046:24;;:49;;;;:::i;:::-;16032:9;;:13;:64::i;:90::-;16013:109;;16133:16;16152:90;7503:5;16152:64;16166:49;16191:23;;7503:5;16166:24;;:49;;;;:::i;:::-;16152:9;;:13;:64::i;:90::-;16133:109;;16259:16;:14;:16::i;:::-;16255:1035;;;16309:8;16296:9;:21;;:46;;;;;16334:8;16321:9;:21;;16296:46;16292:987;;;16367:9;16363:482;;;16417:9;16405;:21;16401:386;;;16455:16;16474:137;7503:5;16474:55;16488:40;16513:14;;7503:5;16488:24;;:40;;;;:::i;:::-;16474:9;;:13;:55::i;:137::-;16455:156;;16731:9;16720:8;:20;:43;;16755:8;16720:43;;;16743:9;16720:43;16713:50;;;;;;;;16401:386;16816:9;16809:16;;;;;;;16363:482;16881:9;16869;:21;16865:362;;;16915:16;16934:129;7503:5;16934:55;16948:40;16973:14;;7503:5;16948:24;;:40;;;;:::i;16934:129::-;16915:148;;17175:9;17164:8;:20;:43;;17199:8;17164:43;;16292:987;17306:9;17302:184;;;17348:9;17336;:21;17332:78;;;17385:9;17378:16;;;;;;;17332:78;17443:8;17431:9;:20;:43;;17465:9;17431:43;;;17454:8;17431:43;17424:50;;;;;;;17302:184;17514:9;17502;:21;17498:70;;;17547:9;17540:16;;;;;;;17498:70;17597:8;17585:9;:20;:43;;17619:9;17585:43;;;17608:8;17585:43;17578:50;;;;;15545:2091;;;;;;:::o;11891:156::-;6882:3;;-1:-1:-1;;;;;6882:3:0;6868:10;:17;6860:51;;;;;-1:-1:-1;;;6860:51:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6860:51:0;;;;;;;;;;;;;;;11989:23:::1;:50:::0;11891:156::o;7213:48::-;-1:-1:-1;;;7213:48:0;:::o;11763:120::-;6882:3;;-1:-1:-1;;;;;6882:3:0;6868:10;:17;6860:51;;;;;-1:-1:-1;;;6860:51:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6860:51:0;;;;;;;;;;;;;;;11843:14:::1;:32:::0;11763:120::o;8169:44::-;;;;:::o;7896:31::-;;;;:::o;17644:258::-;17691:4;17712:15;;-1:-1:-1;;;17712:15:0;;;;17708:60;;;-1:-1:-1;17751:5:0;17744:12;;17708:60;17813:17;;17784:25;;:46;17780:91;;-1:-1:-1;17854:5:0;17847:12;;17780:91;-1:-1:-1;17890:4:0;17644:258;;:::o;12204:272::-;6882:3;;-1:-1:-1;;;;;6882:3:0;6868:10;:17;6860:51;;;;;-1:-1:-1;;;6860:51:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6860:51:0;;;;;;;;;;;;;;;12338:16:::1;:23;12320:7;:14;:41;12312:84;;;::::0;;-1:-1:-1;;;12312:84:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;12407:16:::0;;::::1;::::0;:6:::1;::::0;:16:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;12434:34:0;;::::1;::::0;:15:::1;::::0;:34:::1;::::0;::::1;::::0;::::1;:::i;14909:310::-:0;8930:10;8921:20;;;;:8;:20;;;;;;;;8913:57;;;;;-1:-1:-1;;;8913:57:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8913:57:0;;;;;;;;;;;;;;;14999:10:::1;14977:33;::::0;;;:21:::1;:33;::::0;;;;;::::1;;14976:34;14968:75;;;::::0;;-1:-1:-1;;;14968:75:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;14968:75:0;;;;;;;;;;;;;::::1;;15076:10;15054:33;::::0;;;:21:::1;:33;::::0;;;;:40;;-1:-1:-1;;15054:40:0::1;15090:4;15054:40:::0;;::::1;::::0;;;15133:25:::1;::::0;:32:::1;::::0;:29:::1;:32::i;:::-;15105:25;:60:::0;15183:28:::1;::::0;;15200:10:::1;15183:28:::0;;;;::::1;::::0;;;;::::1;::::0;;::::1;14909:310::o:0;11370:125::-;9050:10;9040:21;;;;:9;:21;;;;;;;;9032:58;;;;;-1:-1:-1;;;9032:58:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9032:58:0;;;;;;;;;;;;;;;11453:15:::1;:34:::0;;;::::1;;-1:-1:-1::0;;;11453:34:0::1;-1:-1:-1::0;;;;11453:34:0;;::::1;::::0;;;::::1;::::0;;11370:125::o;6939:76::-;6882:3;;-1:-1:-1;;;;;6882:3:0;6868:10;:17;6860:51;;;;;-1:-1:-1;;;6860:51:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6860:51:0;;;;;;;;;;;;;;;6997:3:::1;:10:::0;;-1:-1:-1;;;;;;6997:10:0::1;-1:-1:-1::0;;;;;6997:10:0;;;::::1;::::0;;;::::1;::::0;;6939:76::o;8272:41::-;;;;;;;;;;;;;:::o;11234:128::-;6882:3;;-1:-1:-1;;;;;6882:3:0;6868:10;:17;6860:51;;;;;-1:-1:-1;;;6860:51:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6860:51:0;;;;;;;;;;;;;;;11318:16:::1;:36:::0;11234:128::o;12055:141::-;9179:12;;-1:-1:-1;;;;;9179:12:0;9165:10;:26;9157:63;;;;;-1:-1:-1;;;9157:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9157:63:0;;;;;;;;;;;;;;;12150:17:::1;:38:::0;12055:141::o;7382:65::-;7422:25;7382:65;:::o;7812:40::-;;;;:::o;19100:826::-;19189:16;;19168:4;;19189:20;19185:215;;19290:16;;19269;;19252:34;;:12;;:16;:34::i;:::-;:54;;19226:162;;;;-1:-1:-1;;;19226:162:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19453:16;;19433:37;;:15;;:19;:37::i;:::-;19420:10;:50;19412:108;;;;-1:-1:-1;;;19412:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19572:16;;19552:37;;:15;;:19;:37::i;:::-;19539:10;:50;19531:110;;;;-1:-1:-1;;;19531:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19760:13;;19747:10;:26;19743:71;;;-1:-1:-1;19797:5:0;19790:12;;19743:71;-1:-1:-1;19826:13:0;:26;;;19882:12;19863:16;:31;19914:4;19100:826;;;;:::o;2403:471::-;2461:7;2706:6;2702:47;;-1:-1:-1;2736:1:0;2729:8;;2702:47;2773:5;;;2777:1;2773;:5;:1;2797:5;;;;;:10;2789:56;;;;-1:-1:-1;;;2789:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2865:1;-1:-1:-1;2403:471:0;;;;;:::o;3350:132::-;3408:7;3435:39;3439:1;3442;3435:39;;;;;;;;;;;;;-1:-1:-1;;;3435:39:0;;;:3;:39::i;18802:290::-;-1:-1:-1;;;;;18942:30:0;;18938:69;;18989:7;;18938:69;19036:16;-1:-1:-1;;;;;19019:49:0;;19069:6;19077;19019:65;;;;;;;;;;;;;-1:-1:-1;;;;;19019:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18802:290;;;:::o;17910:884::-;17997:17;18017:33;18039:10;18017:21;:33::i;:::-;17997:53;;18067:12;18063:724;;;18123:15;;-1:-1:-1;;;;;18123:15:0;18096:24;18155:621;18179:1;18175;:5;18155:621;;;18255:6;:13;18222:1;;18246:22;;18242:77;;18293:7;;;;;;18242:77;18476:6;:9;;18358:2;:6;;;18400:22;;;7422:25;18399:40;;18339:16;;18476:6;18363:1;;18476:9;;;;;;;;;;;;;;;18529:15;:18;;-1:-1:-1;;;;;18476:9:0;;;;-1:-1:-1;18529:15:0;18545:1;;18529:18;;;;;;;;;;;;;;;;-1:-1:-1;18590:46:0;18529:18;18590:26;:5;-1:-1:-1;;;18590:9:0;:26::i;:46::-;-1:-1:-1;;;;;18655:13:0;;;;;;:6;:13;;;;;:29;;;18566:70;-1:-1:-1;18705:55:0;18721:16;18662:5;18566:70;18705:15;:55::i;:::-;-1:-1:-1;;18182:3:0;;;;;-1:-1:-1;18155:621:0;;-1:-1:-1;;;18155:621:0;1479:136;1537:7;1564:43;1568:1;1571;1564:43;;;;;;;;;;;;;;;;;:3;:43::i;1015:181::-;1073:7;1105:5;;;1129:6;;;;1121:46;;;;;-1:-1:-1;;;1121:46:0;;;;;;;;;;;;-1:-1:-1;;;1121:46:0;;;;;;;;;;;;;;3978:312;4098:7;4133:12;4126:5;4118:28;;;;-1:-1:-1;;;4118:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4157:9;4173:1;4169;:5;;;;;;;3978:312;-1:-1:-1;;;;;3978:312:0:o;1918:226::-;2038:7;2074:12;2066:6;;;;2058:29;;;;-1:-1:-1;;;2058:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2110:5:0;;;1918:226::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Metadata Hash

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