UNPKG

@maplelabs/core-artifacts

Version:

Consist artifacts of the maple protocol

24,019 lines 1.18 MB
{
  "id": "a57037759e0da62be922ff69ad105e27",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.6.11",
  "solcLongVersion": "0.6.11+commit.5ef660b1",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/core/globals/v1/MapleGlobals.sol": {
        "content": "// SPDX-License-Identifier: AGPL-3.0-or-later // hevm: flattened sources of contracts/core/globals/v1/MapleGlobals.sol\npragma solidity =0.6.11 >=0.6.0 <0.8.0;\npragma experimental ABIEncoderV2;\n\n////// contracts/core/calculator/v1/interfaces/ICalc.sol\n/* pragma solidity 0.6.11; */\n\n/// @title Calc calculates.\ninterface ICalc {\n\n    /**\n        @dev The Calculator type.\n     */\n    function calcType() external pure returns (uint8);\n\n    /**\n        @dev The Calculator name.\n     */\n    function name() external pure returns (bytes32);\n\n}\n\n////// contracts/core/globals/v1/interfaces/IMapleGlobals.sol\n/* pragma solidity 0.6.11; */\n\n/// @title MapleGlobals maintains a central source of parameters and allowlists for the Maple protocol.\ninterface IMapleGlobals {\n\n    /**\n        @dev   Emits an event indicating the MapleGlobals contract was created.\n     */\n    event Initialized();\n\n    /**\n        @dev   Emits an event indicating the validity of a Collateral Asset was set.\n        @param asset    The Collateral Asset to assign validity to.\n        @param decimals The number of decimal places of `asset`.\n        @param symbol   The symbol of `asset`.\n        @param valid    The new validity status of `asset`.\n     */\n    event CollateralAssetSet(address asset, uint256 decimals, string symbol, bool valid);\n\n    /**\n        @dev   Emits an event indicating the validity of a Liquidity Asset was set.\n        @param asset    The Liquidity Asset to assign validity to.\n        @param decimals The number of decimal places of `asset`.\n        @param symbol   The symbol of `asset`.\n        @param valid    The new validity status of `asset`.\n     */\n    event LiquidityAssetSet(address asset, uint256 decimals, string symbol, bool valid);\n\n    /**\n        @dev   Emits an event indicating the Oracle for an asset was set.\n        @param asset  The asset to update price for.\n        @param oracle The new Oracle to use.\n     */\n    event OracleSet(address asset, address oracle);\n\n    /**\n        @dev This is unused.\n     */\n    event TransferRestrictionExemptionSet(address indexed exemptedContract, bool valid);\n\n    /**\n        @dev   Emits an event indicating the validity of a Balancer Pool was set.\n        @param balancerPool The address of Balancer Pool contract.\n        @param valid        The new validity status of a Balancer Pool.\n     */\n    event BalancerPoolSet(address balancerPool, bool valid);\n\n    /**\n        @dev   Emits an event indicating a PendingGovernor was set.\n        @param pendingGovernor The address of the new Pending Governor.\n     */\n    event PendingGovernorSet(address indexed pendingGovernor);\n\n    /**\n        @dev   Emits an event indicating Governorship was accepted by a new account.\n        @param governor The account that has accepted Governorship.\n     */\n    event GovernorAccepted(address indexed governor);\n\n    /**\n        @dev   Emits an event indicating that some Governor controlled parameter was set.\n        @param which The identifier of the parameter that was set.\n        @param value The value the parameter was set to.\n     */\n    event GlobalsParamSet(bytes32 indexed which, uint256 value);\n\n    /**\n        @dev   Emits an event indicating that some Governor controlled address was set.\n        @param which The identifier of the address that was set.\n        @param addr  The address that was set.\n     */\n    event GlobalsAddressSet(bytes32 indexed which, address addr);\n\n    /**\n        @dev   Emits an event indicating the protocol's paused state has been set.\n        @param pause Whether the protocol was paused.\n     */\n    event ProtocolPaused(bool pause);\n\n    /**\n        @dev   Emits an event indicating the GlobalAdmin was set.\n        @param newGlobalAdmin The address of the new GlobalAdmin.\n     */\n    event GlobalAdminSet(address indexed newGlobalAdmin);\n\n    /**\n        @dev   Emits an event indicating the validity of a Pool Delegate was set.\n        @param poolDelegate The address of a Pool Delegate.\n        @param valid        Whether `poolDelegate` is a valid Pool Delegate.\n     */\n    event PoolDelegateSet(address indexed poolDelegate, bool valid);\n\n    /**\n        @dev The ERC-2222 Maple Token for the Maple protocol.\n     */\n    function mpl() external pure returns (address);\n\n    /**\n        @dev The Governor that is declared for governorship transfer. \n        @dev Must be accepted for transfer to take effect. \n     */\n    function pendingGovernor() external view returns (address);\n\n    /**\n        @dev The Governor responsible for management of global Maple variables.\n     */\n    function governor() external view returns (address);\n\n    /**\n        @dev The MapleTreasury is the Treasury where all fees pass through for conversion, prior to distribution.\n     */\n    function mapleTreasury() external view returns (address);\n\n    /**\n        @dev The Global Admin of the whole network. \n        @dev Has the power to switch off/on the functionality of entire protocol. \n     */\n    function globalAdmin() external view returns (address);\n\n    /**\n        @dev The amount of time a Borrower has to make a missed payment before a default can be triggered. \n     */\n    function defaultGracePeriod() external view returns (uint256);\n\n    /**\n        @dev The minimum amount of Pool cover that a Pool Delegate has to provide before they can finalize a Pool.\n     */\n    function swapOutRequired() external view returns (uint256);\n\n    /**\n        @dev The amount of time to allow a Borrower to drawdown on their Loan after funding period ends.\n     */\n    function fundingPeriod() external view returns (uint256);\n\n    /**\n        @dev The portion of drawdown that goes to the Pool Delegates and individual Lenders.\n     */\n    function investorFee() external view returns (uint256);\n\n    /**\n        @dev The portion of drawdown that goes to the MapleTreasury.\n     */\n    function treasuryFee() external view returns (uint256);\n\n    /**\n        @dev The maximum amount of slippage for Uniswap transactions.\n     */\n    function maxSwapSlippage() external view returns (uint256);\n\n    /**\n        @dev The minimum amount of LoanFDTs required to trigger liquidations (basis points percentage of totalSupply).\n     */\n    function minLoanEquity() external view returns (uint256);\n\n    /**\n        @dev The period (in secs) after which Stakers are allowed to unstake their BPTs from a StakeLocker.\n     */\n    function stakerCooldownPeriod() external view returns (uint256);\n\n    /**\n        @dev The period (in secs) after which LPs are allowed to withdraw their funds from a Pool.\n     */\n    function lpCooldownPeriod() external view returns (uint256);\n\n    /**\n        @dev The window of time (in secs) after `stakerCooldownPeriod` that an account has to withdraw before their intent to unstake is invalidated.\n     */\n    function stakerUnstakeWindow() external view returns (uint256);\n\n    /**\n        @dev The window of time (in secs) after `lpCooldownPeriod` that an account has to withdraw before their intent to withdraw is invalidated.\n     */\n    function lpWithdrawWindow() external view returns (uint256);\n\n    /**\n        @dev Whether the functionality of the entire protocol is paused.\n     */\n    function protocolPaused() external view returns (bool);\n\n    /**\n        @param  liquidityAsset The address of a Liquidity Asset.\n        @return Whether `liquidityAsset` is valid.\n     */\n    function isValidLiquidityAsset(address liquidityAsset) external view returns (bool);\n\n    /**\n        @param  collateralAsset The address of a Collateral Asset.\n        @return Whether `collateralAsset` is valid.\n     */\n    function isValidCollateralAsset(address collateralAsset) external view returns (bool);\n\n    /**\n        @param  calc The address of a Calculator.\n        @return Whether `calc` is valid.\n     */\n    function validCalcs(address calc) external view returns (bool);\n\n    /**\n        @dev    Prevents unauthorized/unknown addresses from creating Pools.\n        @param  poolDelegate The address of a Pool Delegate.\n        @return Whether `poolDelegate` is valid.\n     */\n    function isValidPoolDelegate(address poolDelegate) external view returns (bool);\n\n    /**\n        @param  balancerPool The address of a Balancer Pool.\n        @return Whether Maple has approved `balancerPool` for BPT staking.\n     */\n    function isValidBalancerPool(address balancerPool) external view returns (bool);\n\n    /**\n        @dev Determines the liquidation path of various assets in Loans and the Treasury. \n        @dev The value provided will determine whether or not to perform a bilateral or triangular swap on Uniswap. \n        @dev For example, `defaultUniswapPath[WBTC][USDC]` value would indicate what asset to convert WBTC into before conversion to USDC. \n        @dev If `defaultUniswapPath[WBTC][USDC] == USDC`, then the swap is bilateral and no middle asset is swapped. \n        @dev If `defaultUniswapPath[WBTC][USDC] == WETH`, then swap WBTC for WETH, then WETH for USDC. \n        @param  tokenA The address of the asset being swapped.\n        @param  tokenB The address of the final asset to receive.\n        @return The intermediary asset for swaps, if any.\n     */\n    function defaultUniswapPath(address tokenA, address tokenB) external view returns (address);\n\n    /**\n        @param  asset The address of some token.\n        @return The Chainlink Oracle for the price of `asset`.\n     */\n    function oracleFor(address asset) external view returns (address);\n    \n    /**\n        @param  poolFactory The address of a Pool Factory.\n        @return Whether `poolFactory` is valid.\n     */\n    function isValidPoolFactory(address poolFactory) external view returns (bool);\n\n    /**\n        @param  loanFactory The address of a Loan Factory.\n        @return Whether `loanFactory` is valid.\n     */\n    function isValidLoanFactory(address loanFactory) external view returns (bool);\n    \n    /**\n        @param  superFactory The core factory (e.g. PoolFactory, LoanFactory).\n        @param  subFactory   The sub factory used by core factory (e.g. LiquidityLockerFactory).\n        @return Whether `subFactory` is valid as it relates to `superFactory`.\n     */\n    function validSubFactories(address superFactory, address subFactory) external view returns (bool);\n    \n    /**\n        @dev   Sets the Staker cooldown period. \n        @dev   This change will affect the existing cool down period for the Stakers that already intended to unstake. \n        @dev   Only the Governor can call this function. \n        @dev   It emits a `GlobalsParamSet` event. \n        @param newCooldownPeriod The new value for the cool down period.\n     */\n    function setStakerCooldownPeriod(uint256 newCooldownPeriod) external;\n\n    /**\n        @dev   Sets the Liquidity Pool cooldown period. \n        @dev   This change will affect the existing cool down period for the LPs that already intended to withdraw. \n        @dev   Only the Governor can call this function. \n        @dev   It emits a `GlobalsParamSet` event. \n        @param newCooldownPeriod The new value for the cool down period.\n     */\n    function setLpCooldownPeriod(uint256 newCooldownPeriod) external;\n\n    /**\n        @dev   Sets the Staker unstake window. \n        @dev   This change will affect the existing window for the Stakers that already intended to unstake. \n        @dev   Only the Governor can call this function. \n        @dev   It emits a `GlobalsParamSet` event. \n        @param newUnstakeWindow The new value for the unstake window.\n     */\n    function setStakerUnstakeWindow(uint256 newUnstakeWindow) external;\n\n    /**\n        @dev   Sets the Liquidity Pool withdraw window. \n        @dev   This change will affect the existing window for the LPs that already intended to withdraw. \n        @dev   Only the Governor can call this function. \n        @dev   It emits a `GlobalsParamSet` event. \n        @param newLpWithdrawWindow The new value for the withdraw window.\n     */\n    function setLpWithdrawWindow(uint256 newLpWithdrawWindow) external;\n\n    /**\n        @dev   Sets the allowed Uniswap slippage percentage, in basis points. \n        @dev   Only the Governor can call this function. \n        @dev   It emits a `GlobalsParamSet` event. \n        @param newMaxSlippage The new max slippage percentage (in basis points)\n     */\n    function setMaxSwapSlippage(uint256 newMaxSlippage) external;\n\n    /**\n      @dev   Sets the Global Admin. \n      @dev   Only the Governor can call this function. \n      @dev   It emits a `GlobalAdminSet` event. \n      @param newGlobalAdmin The new global admin address.\n     */\n    function setGlobalAdmin(address newGlobalAdmin) external;\n\n    /**\n        @dev   Sets the validity of a Balancer Pool. \n        @dev   Only the Governor can call this function. \n        @dev   It emits a `BalancerPoolSet` event. \n        @param balancerPool The address of Balancer Pool contract.\n        @param valid        The new validity status of a Balancer Pool.\n     */\n    function setValidBalancerPool(address balancerPool, bool valid) external;\n\n    /**\n        @dev   Sets the paused/unpaused state of the protocol. \n        @dev   Only the Global Admin can call this function. \n        @dev   It emits a `ProtocolPaused` event. \n        @param pause A boolean flag to switch externally facing functionality in the protocol on/off.\n     */\n    function setProtocolPause(bool pause) external;\n\n    /**\n        @dev   Sets the validity of a PoolFactory. \n        @dev   Only the Governor can call this function. \n        @param poolFactory The address of a PoolFactory.\n        @param valid       The new validity status of `poolFactory`.\n     */\n    function setValidPoolFactory(address poolFactory, bool valid) external;\n\n    /**\n        @dev   Sets the validity of a LoanFactory. \n        @dev   Only the Governor can call this function. \n        @param loanFactory The address of a LoanFactory.\n        @param valid       The new validity status of `loanFactory`.\n     */\n    function setValidLoanFactory(address loanFactory, bool valid) external;\n\n    /**\n        @dev   Sets the validity of `subFactory` as it relates to `superFactory`. \n        @dev   Only the Governor can call this function. \n        @param superFactory The core factory (e.g. PoolFactory, LoanFactory).\n        @param subFactory   The sub factory used by core factory (e.g. LiquidityLockerFactory).\n        @param valid        The new validity status of `subFactory` within context of `superFactory`.\n     */\n    function setValidSubFactory(address superFactory, address subFactory, bool valid) external;\n\n    /**\n        @dev   Sets the path to swap an asset through Uniswap. \n        @dev   Only the Governor can call this function. \n        @dev   Set to == mid to enable a bilateral swap (single path swap). \n        @dev   Set to != mid to enable a triangular swap (multi path swap). \n        @param from The address of the asset being swapped.\n        @param to   The address of the final asset to receive.\n        @param mid  The intermediary asset for swaps, if any.\n     */\n    function setDefaultUniswapPath(address from, address to, address mid) external;\n\n    /**\n        @dev   Sets the validity of a Pool Delegate (those allowed to create Pools). \n        @dev   Only the Governor can call this function. \n        @dev   It emits a `PoolDelegateSet` event. \n        @param poolDelegate The address to manage permissions for.\n        @param valid        The new validity status of a Pool Delegate.\n     */\n    function setPoolDelegateAllowlist(address poolDelegate, bool valid) external;\n\n    /**\n        @dev   Sets the validity of an asset for collateral. \n        @dev   Only the Governor can call this function. \n        @dev   It emits a `CollateralAssetSet` event. \n        @param asset The asset to assign validity to.\n        @param valid The new validity status of a Collateral Asset.\n     */\n    function setCollateralAsset(address asset, bool valid) external;\n\n    /**\n        @dev   Sets the validity of an asset for liquidity in Pools. \n        @dev   Only the Governor can call this function. \n        @dev   It emits a `LiquidityAssetSet` event. \n        @param asset The asset to assign validity to.\n        @param valid The new validity status a Liquidity Asset in Pools.\n     */\n    function setLiquidityAsset(address asset, bool valid) external;\n\n    /**\n        @dev   Sets the validity of a calculator contract. \n        @dev   Only the Governor can call this function. \n        @param calc  The Calculator address.\n        @param valid The new validity status of a Calculator.\n     */\n    function setCalc(address calc, bool valid) external;\n\n    /**\n        @dev   Sets the investor fee (in basis points). \n        @dev   Only the Governor can call this function. \n        @dev   It emits a `GlobalsParamSet` event. \n        @param _fee The fee, e.g., 50 = 0.50%.\n     */\n    function setInvestorFee(uint256 _fee) external;\n\n    /**\n        @dev   Sets the treasury fee (in basis points). \n        @dev   Only the Governor can call this function. \n        @dev   It emits a `GlobalsParamSet` event. \n        @param _fee The fee, e.g., 50 = 0.50%.\n     */\n    function setTreasuryFee(uint256 _fee) external;\n\n    /**\n        @dev   Sets the MapleTreasury. \n        @dev   Only the Governor can call this function. \n        @dev   It emits a `GlobalsParamSet` event. \n        @param _mapleTreasury A new MapleTreasury address.\n     */\n    function setMapleTreasury(address _mapleTreasury) external;\n\n    /**\n        @dev   Sets the default grace period. \n        @dev   Only the Governor can call this function. \n        @dev   It emits a `GlobalsParamSet` event. \n        @param _defaultGracePeriod The new number of seconds to set the grace period to.\n     */\n    function setDefaultGracePeriod(uint256 _defaultGracePeriod) external;\n\n    /**\n        @dev   Sets the minimum Loan equity. \n        @dev   Only the Governor can call this function. \n        @dev   It emits a `GlobalsParamSet` event. \n        @param _minLoanEquity The new minimum percentage of Loan equity an account must have to trigger liquidations.\n     */\n    function setMinLoanEquity(uint256 _minLoanEquity) external;\n\n    /**\n        @dev   Sets the funding period. \n        @dev   Only the Governor can call this function. \n        @dev   It emits a `GlobalsParamSet` event. \n        @param _fundingPeriod The number of seconds to set the drawdown grace period to.\n     */\n    function setFundingPeriod(uint256 _fundingPeriod) external;\n\n    /**\n        @dev   Sets the the minimum Pool cover required to finalize a Pool. \n        @dev   Only the Governor can call this function. \n        @dev   It emits a `GlobalsParamSet` event. \n        @param amt The new minimum swap out required.\n     */\n    function setSwapOutRequired(uint256 amt) external;\n\n    /**\n        @dev   Sets a price feed's oracle. \n        @dev   Only the Governor can call this function. \n        @dev   It emits a `OracleSet` event. \n        @param asset  The asset to update price for.\n        @param oracle The new Oracle to use for the price of `asset`.\n     */\n    function setPriceOracle(address asset, address oracle) external;\n\n    /**\n        @dev   Sets a new Pending Governor. \n        @dev   This address can become Governor if they accept. \n        @dev   Only the Governor can call this function. \n        @dev   It emits a `PendingGovernorSet` event. \n        @param _pendingGovernor The address of a new Pending Governor.\n     */\n    function setPendingGovernor(address _pendingGovernor) external;\n\n    /**\n        @dev Accept the Governor position. \n        @dev Only the Pending Governor can call this function. \n        @dev It emits a `GovernorAccepted` event. \n     */\n    function acceptGovernor() external;\n\n    /**\n        @dev    Fetch price for asset from Chainlink oracles.\n        @param  asset The asset to fetch the price of.\n        @return The price of asset in USD.\n     */\n    function getLatestPrice(address asset) external view returns (uint256);\n\n    /**\n        @dev   Checks that a `subFactory` is valid as it relates to `superFactory`.\n        @param superFactory The core factory (e.g. PoolFactory, LoanFactory).\n        @param subFactory   The sub factory used by core factory (e.g. LiquidityLockerFactory).\n        @param factoryType  The type expected for the subFactory. \n                                0 = COLLATERAL_LOCKER_FACTORY, \n                                1 = DEBT_LOCKER_FACTORY, \n                                2 = FUNDING_LOCKER_FACTORY, \n                                3 = LIQUIDITY_LOCKER_FACTORY, \n                                4 = STAKE_LOCKER_FACTORY. \n     */\n    function isValidSubFactory(address superFactory, address subFactory, uint8 factoryType) external view returns (bool);\n\n    /**\n        @dev   Checks that a Calculator is valid.\n        @param calc     The Calculator address.\n        @param calcType The Calculator type.\n     */\n    function isValidCalc(address calc, uint8 calcType) external view returns (bool);\n\n    /**\n        @dev    Returns the `lpCooldownPeriod` and `lpWithdrawWindow` as a tuple, for convenience.\n        @return The value of `lpCooldownPeriod`.\n        @return The value of `lpWithdrawWindow`.\n     */\n    function getLpCooldownParams() external view returns (uint256, uint256);\n\n}\n\n////// contracts/core/oracle/v1/interfaces/IOracle.sol\n/* pragma solidity 0.6.11; */\n\n/// @title Oracle is a price oracle feed.\ninterface IOracle {\n\n    /**\n        @dev Returns the price of the asset.\n     */\n    function getLatestPrice() external view returns (int256);\n\n}\n\n////// contracts/core/subfactory/v1/interfaces/ISubFactory.sol\n/* pragma solidity 0.6.11; */\n\n/// @title SubFactory creates instances downstream of another factory.\ninterface ISubFactory {\n\n    /**\n        @dev The type of the factory\n     */\n    function factoryType() external pure returns (uint8);\n\n}\n\n////// lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\n/* pragma solidity >=0.6.0 <0.8.0; */\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n    /**\n     * @dev Returns the amount of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the amount of tokens owned by `account`.\n     */\n    function balanceOf(address account) external view returns (uint256);\n\n    /**\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transfer(address recipient, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Returns the remaining number of tokens that `spender` will be\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\n     * zero by default.\n     *\n     * This value changes when {approve} or {transferFrom} are called.\n     */\n    function allowance(address owner, address spender) external view returns (uint256);\n\n    /**\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\n     * that someone may use both the old and the new allowance by unfortunate\n     * transaction ordering. One possible solution to mitigate this race\n     * condition is to first reduce the spender's allowance to 0 and set the\n     * desired value afterwards:\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address spender, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\n     * allowance mechanism. `amount` is then deducted from the caller's\n     * allowance.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\n     * another (`to`).\n     *\n     * Note that `value` may be zero.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    /**\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n     * a call to {approve}. `value` is the new allowance.\n     */\n    event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n\n////// contracts/external-interfaces/IERC20Details.sol\n/* pragma solidity 0.6.11; */\n\n/* import { IERC20 } from \"../../lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\"; */\n\ninterface IERC20Details is IERC20 {\n\n    function name() external view returns (string memory);\n\n    function symbol() external view returns (string memory);\n\n    function decimals() external view returns (uint256);\n\n}\n\n////// lib/openzeppelin-contracts/contracts/math/SafeMath.sol\n/* pragma solidity >=0.6.0 <0.8.0; */\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\n * checks.\n *\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises an\n * error, which is the standard behavior in high level programming languages.\n * `SafeMath` restores this intuition by reverting the transaction when an\n * operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeMath {\n    /**\n     * @dev Returns the addition of two unsigned integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `+` operator.\n     *\n     * Requirements:\n     *\n     * - Addition cannot overflow.\n     */\n    function add(uint256 a, uint256 b) internal pure returns (uint256) {\n        uint256 c = a + b;\n        require(c >= a, \"SafeMath: addition overflow\");\n\n        return c;\n    }\n\n    /**\n     * @dev Returns the subtraction of two unsigned integers, reverting on\n     * overflow (when the result is negative).\n     *\n     * Counterpart to Solidity's `-` operator.\n     *\n     * Requirements:\n     *\n     * - Subtraction cannot overflow.\n     */\n    function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n        return sub(a, b, \"SafeMath: subtraction overflow\");\n    }\n\n    /**\n     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n     * overflow (when the result is negative).\n     *\n     * Counterpart to Solidity's `-` operator.\n     *\n     * Requirements:\n     *\n     * - Subtraction cannot overflow.\n     */\n    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n        require(b <= a, errorMessage);\n        uint256 c = a - b;\n\n        return c;\n    }\n\n    /**\n     * @dev Returns the multiplication of two unsigned integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `*` operator.\n     *\n     * Requirements:\n     *\n     * - Multiplication cannot overflow.\n     */\n    function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n        // benefit is lost if 'b' is also tested.\n        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n        if (a == 0) {\n            return 0;\n        }\n\n        uint256 c = a * b;\n        require(c / a == b, \"SafeMath: multiplication overflow\");\n\n        return c;\n    }\n\n    /**\n     * @dev Returns the integer division of two unsigned integers. Reverts on\n     * division by zero. The result is rounded towards zero.\n     *\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\n     * uses an invalid opcode to revert (consuming all remaining gas).\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function div(uint256 a, uint256 b) internal pure returns (uint256) {\n        return div(a, b, \"SafeMath: division by zero\");\n    }\n\n    /**\n     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on\n     * division by zero. The result is rounded towards zero.\n     *\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\n     * uses an invalid opcode to revert (consuming all remaining gas).\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n        require(b > 0, errorMessage);\n        uint256 c = a / b;\n        // assert(a == b * c + a % b); // There is no case in which this doesn't hold\n\n        return c;\n    }\n\n    /**\n     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n     * Reverts when dividing by zero.\n     *\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\n     * invalid opcode to revert (consuming all remaining gas).\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n        return mod(a, b, \"SafeMath: modulo by zero\");\n    }\n\n    /**\n     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n     * Reverts with custom message when dividing by zero.\n     *\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\n     * invalid opcode to revert (consuming all remaining gas).\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n        require(b != 0, errorMessage);\n        return a % b;\n    }\n}\n\n////// contracts/core/globals/v1/MapleGlobals.sol\n/* pragma solidity 0.6.11; */\n/* pragma experimental ABIEncoderV2; */\n\n/* import { SafeMath } from \"../../../../lib/openzeppelin-contracts/contracts/math/SafeMath.sol\"; */\n\n/* import { IERC20Details } from \"../../../external-interfaces/IERC20Details.sol\"; */\n\n/* import { ICalc }       from \"../../calculator/v1/interfaces/ICalc.sol\"; */\n/* import { IOracle }     from \"../../oracle/v1/interfaces/IOracle.sol\"; */\n/* import { ISubFactory } from \"../../subfactory/v1/interfaces/ISubFactory.sol\"; */\n\n/* import { IMapleGlobals } from \"./interfaces/IMapleGlobals.sol\"; */\n\n/// @title MapleGlobals maintains a central source of parameters and allowlists for the Maple protocol.\ncontract MapleGlobals is IMapleGlobals {\n\n    using SafeMath for uint256;\n\n    address public override immutable mpl;\n\n    address public override pendingGovernor;\n    address public override governor;\n    address public override mapleTreasury;\n    address public override globalAdmin;\n\n    uint256 public override defaultGracePeriod;\n    uint256 public override swapOutRequired;\n    uint256 public override fundingPeriod;\n    uint256 public override investorFee;\n    uint256 public override treasuryFee;\n    uint256 public override maxSwapSlippage;\n    uint256 public override minLoanEquity;\n    uint256 public override stakerCooldownPeriod;\n    uint256 public override lpCooldownPeriod;\n    uint256 public override stakerUnstakeWindow;\n    uint256 public override lpWithdrawWindow;\n\n    bool public override protocolPaused;\n\n    mapping(address => bool) public override isValidLiquidityAsset;\n    mapping(address => bool) public override isValidCollateralAsset;\n    mapping(address => bool) public override validCalcs;\n    mapping(address => bool) public override isValidPoolDelegate;\n    mapping(address => bool) public override isValidBalancerPool;\n\n    mapping(address => mapping(address => address)) public override defaultUniswapPath;\n\n    mapping(address => address) public override oracleFor;\n\n    mapping(address => bool)                     public override isValidPoolFactory;\n    mapping(address => bool)                     public override isValidLoanFactory;\n    mapping(address => mapping(address => bool)) public override validSubFactories;\n\n    /**\n        @dev Checks that `msg.sender` is the Governor.\n     */\n    modifier isGovernor() {\n        require(msg.sender == governor, \"MG:NOT_GOV\");\n        _;\n    }\n\n    /**\n        @dev   Constructor function. \n        @dev   It emits an `Initialized` event. \n        @param _governor    Address of Governor.\n        @param _mpl         Address of the ERC-2222 Maple Token for the Maple protocol.\n        @param _globalAdmin Address the Global Admin.\n     */\n    constructor(address _governor, address _mpl, address _globalAdmin) public {\n        governor             = _governor;\n        mpl                  = _mpl;\n        swapOutRequired      = 10_000;     // $10,000 of Pool cover\n        fundingPeriod        = 10 days;\n        defaultGracePeriod   = 5 days;\n        investorFee          = 50;         // 0.5 %\n        treasuryFee          = 50;         // 0.5 %\n        maxSwapSlippage      = 1000;       // 10 %\n        minLoanEquity        = 2000;       // 20 %\n        globalAdmin          = _globalAdmin;\n        stakerCooldownPeriod = 10 days;\n        lpCooldownPeriod     = 10 days;\n        stakerUnstakeWindow  = 2 days;\n        lpWithdrawWindow     = 2 days;\n        emit Initialized();\n    }\n\n    /************************/\n    /*** Setter Functions ***/\n    /************************/\n\n    function setStakerCooldownPeriod(uint256 newCooldownPeriod) external override isGovernor {\n        stakerCooldownPeriod = newCooldownPeriod;\n        emit GlobalsParamSet(\"STAKER_COOLDOWN_PERIOD\", newCooldownPeriod);\n    }\n\n    function setLpCooldownPeriod(uint256 newCooldownPeriod) external override isGovernor {\n        lpCooldownPeriod = newCooldownPeriod;\n        emit GlobalsParamSet(\"LP_COOLDOWN_PERIOD\", newCooldownPeriod);\n    }\n\n    function setStakerUnstakeWindow(uint256 newUnstakeWindow) external override isGovernor {\n        stakerUnstakeWindow = newUnstakeWindow;\n        emit GlobalsParamSet(\"STAKER_UNSTAKE_WINDOW\", newUnstakeWindow);\n    }\n\n    function setLpWithdrawWindow(uint256 newLpWithdrawWindow) external override isGovernor {\n        lpWithdrawWindow = newLpWithdrawWindow;\n        emit GlobalsParamSet(\"LP_WITHDRAW_WINDOW\", newLpWithdrawWindow);\n    }\n\n    function setMaxSwapSlippage(uint256 newMaxSlippage) external override isGovernor {\n        _checkPercentageRange(newMaxSlippage);\n        maxSwapSlippage = newMaxSlippage;\n        emit GlobalsParamSet(\"MAX_SWAP_SLIPPAGE\", newMaxSlippage);\n    }\n\n    function setGlobalAdmin(address newGlobalAdmin) external override {\n        require(msg.sender == governor && newGlobalAdmin != address(0), \"MG:NOT_GOV_OR_ADMIN\");\n        require(!protocolPaused, \"MG:PROTO_PAUSED\");\n        globalAdmin = newGlobalAdmin;\n        emit GlobalAdminSet(newGlobalAdmin);\n    }\n\n    function setValidBalancerPool(address balancerPool, bool valid) external override isGovernor {\n        isValidBalancerPool[balancerPool] = valid;\n        emit BalancerPoolSet(balancerPool, valid);\n    }\n\n    function setProtocolPause(bool pause) external override {\n        require(msg.sender == globalAdmin, \"MG:NOT_ADMIN\");\n        protocolPaused = pause;\n        emit ProtocolPaused(pause);\n    }\n\n    function setValidPoolFactory(address poolFactory, bool valid) external override isGovernor {\n        isValidPoolFactory[poolFactory] = valid;\n    }\n\n    function setValidLoanFactory(address loanFactory, bool valid) external override isGovernor {\n        isValidLoanFactory[loanFactory] = valid;\n    }\n\n    function setValidSubFactory(address superFactory, address subFactory, bool valid) external override isGovernor {\n        require(isValidLoanFactory[superFactory] || isValidPoolFactory[superFactory], \"MG:INVALID_SUPER_F\");\n        validSubFactories[superFactory][subFactory] = valid;\n    }\n\n    function setDefaultUniswapPath(address from, address to, address mid) external override isGovernor {\n        defaultUniswapPath[from][to] = mid;\n    }\n\n    function setPoolDelegateAllowlist(address delegate, bool valid) external override isGovernor {\n        isValidPoolDelegate[delegate] = valid;\n        emit PoolDelegateSet(delegate, valid);\n    }\n\n    function setCollateralAsset(address asset, bool valid) external override isGovernor {\n        isValidCollateralAsset[asset] = valid;\n        emit CollateralAssetSet(asset, IERC20Details(asset).decimals(), IERC20Details(asset).symbol(), valid);\n    }\n\n    function setLiquidityAsset(address asset, bool valid) external override isGovernor {\n        isValidLiquidityAsset[asset] = valid;\n        emit LiquidityAssetSet(asset, IERC20Details(asset).decimals(), IERC20Details(asset).symbol(), valid);\n    }\n\n    function setCalc(address calc, bool valid) external override isGovernor {\n        validCalcs[calc] = valid;\n    }\n\n    function setInvestorFee(uint256 _fee) external override isGovernor {\n        _checkPercentageRange(treasuryFee.add(_fee));\n        investorFee = _fee;\n        emit GlobalsParamSet(\"INVESTOR_FEE\", _fee);\n    }\n\n    function setTreasuryFee(uint256 _fee) external override isGovernor {\n        _checkPercentageRange(investorFee.add(_fee));\n        treasuryFee = _fee;\n        emit GlobalsParamSet(\"TREASURY_FEE\", _fee);\n    }\n\n    function setMapleTreasury(address _mapleTreasury) external override isGovernor {\n        require(_mapleTreasury != address(0), \"MG:ZERO_ADDR\");\n        mapleTreasury = _mapleTreasury;\n        emit GlobalsAddressSet(\"MAPLE_TREASURY\", _mapleTreasury);\n    }\n\n    function setDefaultGracePeriod(uint256 _defaultGracePeriod) external override isGovernor {\n        defaultGracePeriod = _defaultGracePeriod;\n        emit GlobalsParamSet(\"DEFAULT_GRACE_PERIOD\", _defaultGracePeriod);\n    }\n\n    function setMinLoanEquity(uint256 _minLoanEquity) external override isGovernor {\n        _checkPercentageRange(_minLoanEquity);\n        minLoanEquity = _minLoanEquity;\n        emit GlobalsParamSet(\"MIN_LOAN_EQUITY\", _minLoanEquity);\n    }\n\n    function setFundingPeriod(uint256 _fundingPeriod) external override isGovernor {\n        fundingPeriod = _fundingPeriod;\n        emit GlobalsParamSet(\"FUNDING_PERIOD\", _fundingPeriod);\n    }\n\n    function setSwapOutRequired(uint256 amt) external override isGovernor {\n        require(amt >= uint256(10_000), \"MG:SWAP_OUT_TOO_LOW\");\n        swapOutRequired = amt;\n        emit GlobalsParamSet(\"SWAP_OUT_REQUIRED\", amt);\n    }\n\n    function setPriceOracle(address asset, address oracle) external override isGovernor {\n        oracleFor[asset] = oracle;\n        emit OracleSet(asset, oracle);\n    }\n\n    /************************************/\n    /*** Transfer Ownership Functions ***/\n    /************************************/\n\n    function setPendingGovernor(address _pendingGovernor) external override isGovernor {\n        require(_pendingGovernor != address(0), \"MG:ZERO_ADDR\");\n        pendingGovernor = _pendingGovernor;\n        emit PendingGovernorSet(_pendingGovernor);\n    }\n\n    function acceptGovernor() external override {\n        require(msg.sender == pendingGovernor, \"MG:NOT_PENDING_GOV\");\n        governor        = msg.sender;\n        pendingGovernor = address(0);\n        emit GovernorAccepted(msg.sender);\n    }\n\n    /************************/\n    /*** Getter Functions ***/\n    /************************/\n\n    function getLatestPrice(address asset) external override view returns (uint256) {\n        return uint256(IOracle(oracleFor[asset]).getLatestPrice());\n    }\n\n    function isValidSubFactory(address superFactory, address subFactory, uint8 factoryType) external override view returns (bool) {\n        return validSubFactories[superFactory][subFactory] && ISubFactory(subFactory).factoryType() == factoryType;\n    }\n\n    function isValidCalc(address calc, uint8 calcType) external override view returns (bool) {\n        return validCalcs[calc] && ICalc(calc).calcType() == calcType;\n    }\n\n    function getLpCooldownParams() external override view returns (uint256, uint256) {\n        return (lpCooldownPeriod, lpWithdrawWindow);\n    }\n\n    /************************/\n    /*** Helper Functions ***/\n    /************************/\n\n    /**\n        @dev Checks that percentage is less than 100%.\n     */\n    function _checkPercentageRange(uint256 percentage) internal pure {\n        require(percentage <= uint256(10_000), \"MG:PCT_OOB\");\n    }\n\n}\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers"
          ],
          "": [
            "ast"
          ]
        }
      }
    }
  },
  "output": {
    "contracts": {
      "contracts/core/globals/v1/MapleGlobals.sol": {
        "ICalc": {
          "abi": [
            {
              "inputs": [],
              "name": "calcType",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "calcType()": "9d8ae446",
              "name()": "06fdde03"
            }
          }
        },
        "IERC20": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        },
        "IERC20Details": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decimals()": "313ce567",
              "name()": "06fdde03",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        },
        "IMapleGlobals": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "balancerPool",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "valid",
                  "type": "bool"
                }
              ],
              "name": "BalancerPoolSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "decimals",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "symbol",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "valid",
                  "type": "bool"
                }
              ],
              "name": "CollateralAssetSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newGlobalAdmin",
                  "type": "address"
                }
              ],
              "name": "GlobalAdminSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "which",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                }
              ],
              "name": "GlobalsAddressSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "which",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "GlobalsParamSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "governor",
                  "type": "address"
                }
              ],
              "name": "GovernorAccepted",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "decimals",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "symbol",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "valid",
                  "type": "bool"
                }
              ],
              "name": "LiquidityAssetSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "oracle",
                  "type": "address"
                }
              ],
              "name": "OracleSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "pendingGovernor",
                  "type": "address"
                }
              ],
              "name": "PendingGovernorSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "poolDelegate",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "valid",
                  "type": "bool"
                }
              ],
              "name": "PoolDelegateSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "pause",
                  "type": "bool"
                }
              ],
              "name": "ProtocolPaused",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "exemptedContract",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "valid",
                  "type": "bool"
                }
              ],
              "name": "TransferRestrictionExemptionSet",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "acceptGovernor",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "defaultGracePeriod",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenA",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "tokenB",
                  "type": "address"
                }
              ],
              "name": "defaultUniswapPath",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "fundingPeriod",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "getLatestPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getLpCooldownParams",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "globalAdmin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "governor",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "investorFee",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "balancerPool",
                  "type": "address"
                }
              ],
              "name": "isValidBalancerPool",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "calc",
                  "type": "address"
                },
                {
                  "internalType": "uint8",
                  "name": "calcType",
                  "type": "uint8"
                }
              ],
              "name": "isValidCalc",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "collateralAsset",
                  "type": "address"
                }
              ],
              "name": "isValidCollateralAsset",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "liquidityAsset",
                  "type": "address"
                }
              ],
              "name": "isValidLiquidityAsset",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanFactory",
                  "type": "address"
                }
              ],
              "name": "isValidLoanFactory",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "poolDelegate",
                  "type": "address"
                }
              ],
              "name": "isValidPoolDelegate",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "poolFactory",
                  "type": "address"
                }
              ],
              "name": "isValidPoolFactory",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "superFactory",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "subFactory",
                  "type": "address"
                },
                {
                  "internalType": "uint8",
                  "name": "factoryType",
                  "type": "uint8"
                }
              ],
              "name": "isValidSubFactory",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "lpCooldownPeriod",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "lpWithdrawWindow",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "mapleTreasury",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "maxSwapSlippage",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "minLoanEquity",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "mpl",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "oracleFor",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "pendingGovernor",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "protocolPaused",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "calc",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "valid",
                  "type": "bool"
                }
              ],
              "name": "setCalc",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "valid",
                  "type": "bool"
                }
              ],
              "name": "setCollateralAsset",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_defaultGracePeriod",
                  "type": "uint256"
                }
              ],
              "name": "setDefaultGracePeriod",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "mid",
                  "type": "address"
                }
              ],
              "name": "setDefaultUniswapPath",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_fundingPeriod",
                  "type": "uint256"
                }
              ],
              "name": "setFundingPeriod",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newGlobalAdmin",
                  "type": "address"
                }
              ],
              "name": "setGlobalAdmin",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_fee",
                  "type": "uint256"
                }
              ],
              "name": "setInvestorFee",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "valid",
                  "type": "bool"
                }
              ],
              "name": "setLiquidityAsset",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newCooldownPeriod",
                  "type": "uint256"
                }
              ],
              "name": "setLpCooldownPeriod",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newLpWithdrawWindow",
                  "type": "uint256"
                }
              ],
              "name": "setLpWithdrawWindow",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_mapleTreasury",
                  "type": "address"
                }
              ],
              "name": "setMapleTreasury",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newMaxSlippage",
                  "type": "uint256"
                }
              ],
              "name": "setMaxSwapSlippage",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_minLoanEquity",
                  "type": "uint256"
                }
              ],
              "name": "setMinLoanEquity",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_pendingGovernor",
                  "type": "address"
                }
              ],
              "name": "setPendingGovernor",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "poolDelegate",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "valid",
                  "type": "bool"
                }
              ],
              "name": "setPoolDelegateAllowlist",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "oracle",
                  "type": "address"
                }
              ],
              "name": "setPriceOracle",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "pause",
                  "type": "bool"
                }
              ],
              "name": "setProtocolPause",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newCooldownPeriod",
                  "type": "uint256"
                }
              ],
              "name": "setStakerCooldownPeriod",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newUnstakeWindow",
                  "type": "uint256"
                }
              ],
              "name": "setStakerUnstakeWindow",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amt",
                  "type": "uint256"
                }
              ],
              "name": "setSwapOutRequired",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_fee",
                  "type": "uint256"
                }
              ],
              "name": "setTreasuryFee",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "balancerPool",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "valid",
                  "type": "bool"
                }
              ],
              "name": "setValidBalancerPool",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanFactory",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "valid",
                  "type": "bool"
                }
              ],
              "name": "setValidLoanFactory",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "poolFactory",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "valid",
                  "type": "bool"
                }
              ],
              "name": "setValidPoolFactory",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "superFactory",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "subFactory",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "valid",
                  "type": "bool"
                }
              ],
              "name": "setValidSubFactory",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "stakerCooldownPeriod",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "stakerUnstakeWindow",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "swapOutRequired",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "treasuryFee",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "calc",
                  "type": "address"
                }
              ],
              "name": "validCalcs",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "superFactory",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "subFactory",
                  "type": "address"
                }
              ],
              "name": "validSubFactories",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "acceptGovernor()": "e58bb639",
              "defaultGracePeriod()": "705d5f24",
              "defaultUniswapPath(address,address)": "4d866592",
              "fundingPeriod()": "74d7c62b",
              "getLatestPrice(address)": "16345f18",
              "getLpCooldownParams()": "9f51290b",
              "globalAdmin()": "ec9a9368",
              "governor()": "0c340a24",
              "investorFee()": "16a12d7a",
              "isValidBalancerPool(address)": "72a22d71",
              "isValidCalc(address,uint8)": "1b5833f7",
              "isValidCollateralAsset(address)": "8c14834b",
              "isValidLiquidityAsset(address)": "8695118a",
              "isValidLoanFactory(address)": "b53afda7",
              "isValidPoolDelegate(address)": "372e3546",
              "isValidPoolFactory(address)": "107c0240",
              "isValidSubFactory(address,address,uint8)": "13d459fb",
              "lpCooldownPeriod()": "dd02e0ec",
              "lpWithdrawWindow()": "df3d02bd",
              "mapleTreasury()": "a5a27605",
              "maxSwapSlippage()": "55323195",
              "minLoanEquity()": "4a2697c4",
              "mpl()": "a0530946",
              "oracleFor(address)": "aed019b9",
              "pendingGovernor()": "e3056a34",
              "protocolPaused()": "425fad58",
              "setCalc(address,bool)": "be44ed6b",
              "setCollateralAsset(address,bool)": "2fa6c88f",
              "setDefaultGracePeriod(uint256)": "44c14f71",
              "setDefaultUniswapPath(address,address,address)": "f3897663",
              "setFundingPeriod(uint256)": "2a5aa292",
              "setGlobalAdmin(address)": "c52bc31d",
              "setInvestorFee(uint256)": "5e045467",
              "setLiquidityAsset(address,bool)": "2daa0d89",
              "setLpCooldownPeriod(uint256)": "8608a6e1",
              "setLpWithdrawWindow(uint256)": "26718606",
              "setMapleTreasury(address)": "7303de25",
              "setMaxSwapSlippage(uint256)": "f33ef09a",
              "setMinLoanEquity(uint256)": "298b795d",
              "setPendingGovernor(address)": "f235757f",
              "setPoolDelegateAllowlist(address,bool)": "efdb16fc",
              "setPriceOracle(address,address)": "67a74ddc",
              "setProtocolPause(bool)": "4e989118",
              "setStakerCooldownPeriod(uint256)": "fd4a9121",
              "setStakerUnstakeWindow(uint256)": "d1cdf301",
              "setSwapOutRequired(uint256)": "dbc6c552",
              "setTreasuryFee(uint256)": "77e741c7",
              "setValidBalancerPool(address,bool)": "490dae64",
              "setValidLoanFactory(address,bool)": "c9c67240",
              "setValidPoolFactory(address,bool)": "6597b899",
              "setValidSubFactory(address,address,bool)": "f85ee6f8",
              "stakerCooldownPeriod()": "a965d6b5",
              "stakerUnstakeWindow()": "2018b870",
              "swapOutRequired()": "3106374c",
              "treasuryFee()": "cc32d176",
              "validCalcs(address)": "1beb84e7",
              "validSubFactories(address,address)": "1b1804aa"
            }
          }
        },
        "IOracle": {
          "abi": [
            {
              "inputs": [],
              "name": "getLatestPrice",
              "outputs": [
                {
                  "internalType": "int256",
                  "name": "",
                  "type": "int256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "getLatestPrice()": "8e15f473"
            }
          }
        },
        "ISubFactory": {
          "abi": [
            {
              "inputs": [],
              "name": "factoryType",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "factoryType()": "64e1fd55"
            }
          }
        },
        "MapleGlobals": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_governor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_mpl",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_globalAdmin",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "balancerPool",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "valid",
                  "type": "bool"
                }
              ],
              "name": "BalancerPoolSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "decimals",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "symbol",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "valid",
                  "type": "bool"
                }
              ],
              "name": "CollateralAssetSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newGlobalAdmin",
                  "type": "address"
                }
              ],
              "name": "GlobalAdminSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "which",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                }
              ],
              "name": "GlobalsAddressSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "which",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "GlobalsParamSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "governor",
                  "type": "address"
                }
              ],
              "name": "GovernorAccepted",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "decimals",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "symbol",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "valid",
                  "type": "bool"
                }
              ],
              "name": "LiquidityAssetSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "oracle",
                  "type": "address"
                }
              ],
              "name": "OracleSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "pendingGovernor",
                  "type": "address"
                }
              ],
              "name": "PendingGovernorSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "poolDelegate",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "valid",
                  "type": "bool"
                }
              ],
              "name": "PoolDelegateSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "pause",
                  "type": "bool"
                }
              ],
              "name": "ProtocolPaused",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "exemptedContract",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "valid",
                  "type": "bool"
                }
              ],
              "name": "TransferRestrictionExemptionSet",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "acceptGovernor",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "defaultGracePeriod",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "defaultUniswapPath",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "fundingPeriod",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "getLatestPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getLpCooldownParams",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "globalAdmin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "governor",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "investorFee",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "isValidBalancerPool",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "calc",
                  "type": "address"
                },
                {
                  "internalType": "uint8",
                  "name": "calcType",
                  "type": "uint8"
                }
              ],
              "name": "isValidCalc",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "isValidCollateralAsset",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "isValidLiquidityAsset",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "isValidLoanFactory",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "isValidPoolDelegate",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "isValidPoolFactory",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "superFactory",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "subFactory",
                  "type": "address"
                },
                {
                  "internalType": "uint8",
                  "name": "factoryType",
                  "type": "uint8"
                }
              ],
              "name": "isValidSubFactory",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "lpCooldownPeriod",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "lpWithdrawWindow",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "mapleTreasury",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "maxSwapSlippage",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "minLoanEquity",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "mpl",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "oracleFor",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "pendingGovernor",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "protocolPaused",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "calc",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "valid",
                  "type": "bool"
                }
              ],
              "name": "setCalc",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "valid",
                  "type": "bool"
                }
              ],
              "name": "setCollateralAsset",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_defaultGracePeriod",
                  "type": "uint256"
                }
              ],
              "name": "setDefaultGracePeriod",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "mid",
                  "type": "address"
                }
              ],
              "name": "setDefaultUniswapPath",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_fundingPeriod",
                  "type": "uint256"
                }
              ],
              "name": "setFundingPeriod",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newGlobalAdmin",
                  "type": "address"
                }
              ],
              "name": "setGlobalAdmin",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_fee",
                  "type": "uint256"
                }
              ],
              "name": "setInvestorFee",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "valid",
                  "type": "bool"
                }
              ],
              "name": "setLiquidityAsset",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newCooldownPeriod",
                  "type": "uint256"
                }
              ],
              "name": "setLpCooldownPeriod",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newLpWithdrawWindow",
                  "type": "uint256"
                }
              ],
              "name": "setLpWithdrawWindow",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_mapleTreasury",
                  "type": "address"
                }
              ],
              "name": "setMapleTreasury",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newMaxSlippage",
                  "type": "uint256"
                }
              ],
              "name": "setMaxSwapSlippage",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_minLoanEquity",
                  "type": "uint256"
                }
              ],
              "name": "setMinLoanEquity",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_pendingGovernor",
                  "type": "address"
                }
              ],
              "name": "setPendingGovernor",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "delegate",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "valid",
                  "type": "bool"
                }
              ],
              "name": "setPoolDelegateAllowlist",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "oracle",
                  "type": "address"
                }
              ],
              "name": "setPriceOracle",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "pause",
                  "type": "bool"
                }
              ],
              "name": "setProtocolPause",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newCooldownPeriod",
                  "type": "uint256"
                }
              ],
              "name": "setStakerCooldownPeriod",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newUnstakeWindow",
                  "type": "uint256"
                }
              ],
              "name": "setStakerUnstakeWindow",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amt",
                  "type": "uint256"
                }
              ],
              "name": "setSwapOutRequired",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_fee",
                  "type": "uint256"
                }
              ],
              "name": "setTreasuryFee",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "balancerPool",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "valid",
                  "type": "bool"
                }
              ],
              "name": "setValidBalancerPool",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "loanFactory",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "valid",
                  "type": "bool"
                }
              ],
              "name": "setValidLoanFactory",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "poolFactory",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "valid",
                  "type": "bool"
                }
              ],
              "name": "setValidPoolFactory",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "superFactory",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "subFactory",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "valid",
                  "type": "bool"
                }
              ],
              "name": "setValidSubFactory",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "stakerCooldownPeriod",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "stakerUnstakeWindow",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "swapOutRequired",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "treasuryFee",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "validCalcs",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "validSubFactories",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60a06040523480156200001157600080fd5b5060405162001f9638038062001f968339810160408190526200003491620000e8565b600180546001600160a01b038086166001600160a01b0319928316179092556001600160601b0319606085901b16608052612710600555620d2f00600681905562069780600455603260078190556008556103e86009556107d0600a556003805493851693909216929092179055600b819055600c556202a300600d819055600e556040517f5daa87a0e9463431830481fd4b6e3403442dfb9a12b9c07597e9f61d50b633c890600090a150505062000154565b600080600060608486031215620000fd578283fd5b83516200010a816200013b565b60208501519093506200011d816200013b565b604085015190925062000130816200013b565b809150509250925092565b6001600160a01b03811681146200015157600080fd5b50565b60805160601c611e2462000172600039806111be5250611e246000f3fe608060405234801561001057600080fd5b50600436106103835760003560e01c80637303de25116101de578063c9c672401161010f578063e58bb639116100ad578063f33ef09a1161007c578063f33ef09a146106e6578063f3897663146106f9578063f85ee6f81461070c578063fd4a91211461071f57610383565b8063e58bb639146106b0578063ec9a9368146106b8578063efdb16fc146106c0578063f235757f146106d357610383565b8063dbc6c552116100e9578063dbc6c55214610685578063dd02e0ec14610698578063df3d02bd146106a0578063e3056a34146106a857610383565b8063c9c6724014610657578063cc32d1761461066a578063d1cdf3011461067257610383565b8063a05309461161017c578063aed019b911610156578063aed019b91461060b578063b53afda71461061e578063be44ed6b14610631578063c52bc31d1461064457610383565b8063a0530946146105f3578063a5a27605146105fb578063a965d6b51461060357610383565b80638608a6e1116101b85780638608a6e1146105a45780638695118a146105b75780638c14834b146105ca5780639f51290b146105dd57610383565b80637303de251461057657806374d7c62b1461058957806377e741c71461059157610383565b80633106374c116102b85780634e989118116102565780636597b899116102305780636597b8991461053557806367a74ddc14610548578063705d5f241461055b57806372a22d711461056357610383565b80634e98911814610507578063553231951461051a5780635e0454671461052257610383565b806344c14f711161029257806344c14f71146104c6578063490dae64146104d95780634a2697c4146104ec5780634d866592146104f457610383565b80633106374c146104a3578063372e3546146104ab578063425fad58146104be57610383565b80631beb84e711610325578063298b795d116102ff578063298b795d146104575780632a5aa2921461046a5780632daa0d891461047d5780632fa6c88f1461049057610383565b80631beb84e7146104275780632018b8701461043a578063267186061461044257610383565b806316345f181161036157806316345f18146103d957806316a12d7a146103f95780631b1804aa146104015780631b5833f71461041457610383565b80630c340a2414610388578063107c0240146103a657806313d459fb146103c6575b600080fd5b610390610732565b60405161039d9190611b0a565b60405180910390f35b6103b96103b4366004611885565b610741565b60405161039d9190611ba4565b6103b96103d4366004611963565b610756565b6103ec6103e7366004611885565b61080a565b60405161039d9190611d55565b6103ec61089a565b6103b961040f3660046118a0565b6108a0565b6103b96104223660046119db565b6108c0565b6103b9610435366004611885565b610964565b6103ec610979565b610455610450366004611ad6565b61097f565b005b610455610465366004611ad6565b6109f7565b610455610478366004611ad6565b610a61565b61045561048b3660046119a0565b610ac1565b61045561049e3660046119a0565b610c31565b6103ec610cd7565b6103b96104b9366004611885565b610cdd565b6103b9610cf2565b6104556104d4366004611ad6565b610cfb565b6104556104e73660046119a0565b610d61565b6103ec610de1565b6103906105023660046118a0565b610de7565b610455610515366004611a07565b610e0d565b6103ec610e80565b610455610530366004611ad6565b610e86565b6104556105433660046119a0565b610f00565b6104556105563660046118a0565b610f55565b6103ec610fe0565b6103b9610571366004611885565b610fe6565b610455610584366004611885565b610ffb565b6103ec6110a9565b61045561059f366004611ad6565b6110af565b6104556105b2366004611ad6565b611124565b6103b96105c5366004611885565b611188565b6103b96105d8366004611885565b61119d565b6105e56111b2565b60405161039d929190611d5e565b6103906111bc565b6103906111e0565b6103ec6111ef565b610390610619366004611885565b6111f5565b6103b961062c366004611885565b611210565b61045561063f3660046119a0565b611225565b610455610652366004611885565b61127a565b6104556106653660046119a0565b611325565b6103ec61137a565b610455610680366004611ad6565b611380565b610455610693366004611ad6565b6113e7565b6103ec61146c565b6103ec611472565b610390611478565b610455611487565b6103906114f9565b6104556106ce3660046119a0565b611508565b6104556106e1366004611885565b611592565b6104556106f4366004611ad6565b61162a565b6104556107073660046118d4565b611696565b61045561071a366004611919565b6116fd565b61045561072d366004611ad6565b6117bc565b6001546001600160a01b031681565b60176020526000908152604090205460ff1681565b6001600160a01b03808416600090815260196020908152604080832093861683529290529081205460ff16801561080257508160ff16836001600160a01b03166364e1fd556040518163ffffffff1660e01b815260040160206040518083038186803b1580156107c557600080fd5b505afa1580156107d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fd9190611aee565b60ff16145b949350505050565b6001600160a01b038082166000908152601660209081526040808320548151638e15f47360e01b8152915193941692638e15f47392600480840193919291829003018186803b15801561085c57600080fd5b505afa158015610870573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108949190611a23565b92915050565b60075481565b601960209081526000928352604080842090915290825290205460ff1681565b6001600160a01b03821660009081526012602052604081205460ff16801561095d57508160ff16836001600160a01b0316639d8ae4466040518163ffffffff1660e01b815260040160206040518083038186803b15801561092057600080fd5b505afa158015610934573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109589190611aee565b60ff16145b9392505050565b60126020526000908152604090205460ff1681565b600d5481565b6001546001600160a01b031633146109b25760405162461bcd60e51b81526004016109a990611cdf565b60405180910390fd5b80600e81905550714c505f57495448445241575f57494e444f5760701b600080516020611dcf833981519152826040516109ec9190611d55565b60405180910390a250565b6001546001600160a01b03163314610a215760405162461bcd60e51b81526004016109a990611cdf565b610a2a81611824565b80600a819055506e4d494e5f4c4f414e5f45515549545960881b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610a8b5760405162461bcd60e51b81526004016109a990611cdf565b806006819055506d11955391125391d7d411549253d160921b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610aeb5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b038216600081815260106020908152604091829020805460ff1916851515179055815163313ce56760e01b815291517f18d231995d1f7e4354b1786418aa8f34f99996ded9cc6b1d43c3815eb6f5ab79938693909263313ce56792600480840193829003018186803b158015610b6757600080fd5b505afa158015610b7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9f9190611a23565b846001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015610bd857600080fd5b505afa158015610bec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c149190810190611a3b565b84604051610c259493929190611b53565b60405180910390a15050565b6001546001600160a01b03163314610c5b5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b038216600081815260116020908152604091829020805460ff1916851515179055815163313ce56760e01b815291517fb9456501e6a30eefbf8c4f9d199ef0c7ac7491abb068d594bbafbdec85447ccc938693909263313ce56792600480840193829003018186803b158015610b6757600080fd5b60055481565b60136020526000908152604090205460ff1681565b600f5460ff1681565b6001546001600160a01b03163314610d255760405162461bcd60e51b81526004016109a990611cdf565b80600481905550731111519055531517d1d49050d157d411549253d160621b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610d8b5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03821660009081526014602052604090819020805460ff1916831515179055517f936e0e50587b3c03d3e833e5cc880e9a62afb49d51808e96d00c4790ed03796290610c259084908490611b38565b600a5481565b60156020908152600092835260408084209091529082529020546001600160a01b031681565b6003546001600160a01b03163314610e375760405162461bcd60e51b81526004016109a990611d2f565b600f805460ff19168215151790556040517f6e0cb5fa7a57c38eb7939c1104f95fccb5b7a6a8c1a7cab76934305439b639f590610e75908390611ba4565b60405180910390a150565b60095481565b6001546001600160a01b03163314610eb05760405162461bcd60e51b81526004016109a990611cdf565b600854610ecc90610ec7908363ffffffff61184916565b611824565b806007819055506b494e564553544f525f46454560a01b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610f2a5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6001546001600160a01b03163314610f7f5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b038281166000908152601660205260409081902080546001600160a01b03191692841692909217909155517fc1d3048301c0d23629a2532c8defa6d68f8e1a0e4157918769e9fb1b2eeb888e90610c259084908490611b1e565b60045481565b60146020526000908152604090205460ff1681565b6001546001600160a01b031633146110255760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03811661104b5760405162461bcd60e51b81526004016109a990611cb9565b600280546001600160a01b0319166001600160a01b0383161790556040516d4d41504c455f545245415355525960901b907f806b6f19dfa971f58fc9140115f19907b73e8336024786c79c2ffc56f6678ec1906109ec908490611b0a565b60065481565b6001546001600160a01b031633146110d95760405162461bcd60e51b81526004016109a990611cdf565b6007546110f090610ec7908363ffffffff61184916565b806008819055506b54524541535552595f46454560a01b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b0316331461114e5760405162461bcd60e51b81526004016109a990611cdf565b80600c8190555071131417d0d3d3d31113d5d397d411549253d160721b600080516020611dcf833981519152826040516109ec9190611d55565b60106020526000908152604090205460ff1681565b60116020526000908152604090205460ff1681565b600c54600e549091565b7f000000000000000000000000000000000000000000000000000000000000000081565b6002546001600160a01b031681565b600b5481565b6016602052600090815260409020546001600160a01b031681565b60186020526000908152604090205460ff1681565b6001546001600160a01b0316331461124f5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6001546001600160a01b03163314801561129c57506001600160a01b03811615155b6112b85760405162461bcd60e51b81526004016109a990611bd3565b600f5460ff16156112db5760405162461bcd60e51b81526004016109a990611c63565b600380546001600160a01b0319166001600160a01b0383169081179091556040517fad3f8fa73ce3985d027e4c3bbe1194701a23e635a746bcf73d8632f677ac388290600090a250565b6001546001600160a01b0316331461134f5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b60085481565b6001546001600160a01b031633146113aa5760405162461bcd60e51b81526004016109a990611cdf565b80600d81905550745354414b45525f554e5354414b455f57494e444f5760581b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b031633146114115760405162461bcd60e51b81526004016109a990611cdf565b6127108110156114335760405162461bcd60e51b81526004016109a990611c8c565b806005819055507014d5d05417d3d55517d491545552549151607a1b600080516020611dcf833981519152826040516109ec9190611d55565b600c5481565b600e5481565b6000546001600160a01b031681565b6000546001600160a01b031633146114b15760405162461bcd60e51b81526004016109a990611c00565b60018054336001600160a01b031991821681179092556000805490911681556040517fb7a4788848eba3319c766bdd6428c7d7a10e4cba4fd6ade9b79b7102b7099b369190a2565b6003546001600160a01b031681565b6001546001600160a01b031633146115325760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03821660008181526013602052604090819020805460ff1916841515179055517fd2e6a599a52383178be9bf2d0be60c96615b89f8d9cf6c680f06962aa73679fc90611586908490611ba4565b60405180910390a25050565b6001546001600160a01b031633146115bc5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b0381166115e25760405162461bcd60e51b81526004016109a990611cb9565b600080546001600160a01b0319166001600160a01b038316908117825560405190917f56bddfa0cee9697cebddf9acd7f23dc6583663b05e007b877056d05017994def91a250565b6001546001600160a01b031633146116545760405162461bcd60e51b81526004016109a990611cdf565b61165d81611824565b80600981905550704d41585f535741505f534c49505041474560781b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b031633146116c05760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03928316600090815260156020908152604080832094861683529390529190912080546001600160a01b03191691909216179055565b6001546001600160a01b031633146117275760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03831660009081526018602052604090205460ff168061176657506001600160a01b03831660009081526017602052604090205460ff165b6117825760405162461bcd60e51b81526004016109a990611d03565b6001600160a01b03928316600090815260196020908152604080832094909516825292909252919020805460ff1916911515919091179055565b6001546001600160a01b031633146117e65760405162461bcd60e51b81526004016109a990611cdf565b80600b819055507514d51052d15497d0d3d3d31113d5d397d411549253d160521b600080516020611dcf833981519152826040516109ec9190611d55565b6127108111156118465760405162461bcd60e51b81526004016109a990611baf565b50565b60008282018381101561095d5760405162461bcd60e51b81526004016109a990611c2c565b80356001600160a01b038116811461089457600080fd5b600060208284031215611896578081fd5b61095d838361186e565b600080604083850312156118b2578081fd5b6118bc848461186e565b91506118cb846020850161186e565b90509250929050565b6000806000606084860312156118e8578081fd5b6118f2858561186e565b9250611901856020860161186e565b9150611910856040860161186e565b90509250925092565b60008060006060848603121561192d578283fd5b833561193881611d9c565b9250602084013561194881611d9c565b9150604084013561195881611db1565b809150509250925092565b600080600060608486031215611977578283fd5b611981858561186e565b9250611990856020860161186e565b9150604084013561195881611dbf565b600080604083850312156119b2578182fd5b6119bc848461186e565b9150602083013580151581146119d0578182fd5b809150509250929050565b600080604083850312156119ed578182fd5b6119f7848461186e565b915060208301356119d081611dbf565b600060208284031215611a18578081fd5b813561095d81611db1565b600060208284031215611a34578081fd5b5051919050565b600060208284031215611a4c578081fd5b815167ffffffffffffffff80821115611a63578283fd5b81840185601f820112611a74578384fd5b8051925081831115611a84578384fd5b604051601f8401601f191681016020018381118282101715611aa4578586fd5b604052838152818401602001871015611abb578485fd5b611acc846020830160208501611d6c565b9695505050505050565b600060208284031215611ae7578081fd5b5035919050565b600060208284031215611aff578081fd5b815161095d81611dbf565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039290921682521515602082015260400190565b600060018060a01b0386168252846020830152608060408301528351806080840152611b868160a0850160208801611d6c565b921515606083015250601f91909101601f19160160a0019392505050565b901515815260200190565b6020808252600a908201526926a39d2821aa2fa7a7a160b11b604082015260600190565b60208082526013908201527226a39d2727aa2fa3a7ab2fa7a92fa0a226a4a760691b604082015260600190565b60208082526012908201527126a39d2727aa2fa822a72224a723afa3a7ab60711b604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252600f908201526e1351ce941493d513d7d4105554d151608a1b604082015260600190565b6020808252601390820152724d473a535741505f4f55545f544f4f5f4c4f5760681b604082015260600190565b6020808252600c908201526b26a39d2d22a927afa0a2222960a11b604082015260600190565b6020808252600a908201526926a39d2727aa2fa3a7ab60b11b604082015260600190565b60208082526012908201527126a39d24a72b20a624a22fa9aaa822a92fa360711b604082015260600190565b6020808252600c908201526b26a39d2727aa2fa0a226a4a760a11b604082015260600190565b90815260200190565b918252602082015260400190565b60005b83811015611d87578181015183820152602001611d6f565b83811115611d96576000848401525b50505050565b6001600160a01b038116811461184657600080fd5b801515811461184657600080fd5b60ff8116811461184657600080fdfed8780a041c72589f51af8b3fade9cc8a466d00ecef64d45657dd6cdebf1ecf47a26469706673582212200137a24e6d83f2efff919fad035876bd2ab6890372959af09d2aa958eedc1fb964736f6c634300060b0033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1F96 CODESIZE SUB DUP1 PUSH3 0x1F96 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0xE8 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP6 SWAP1 SHL AND PUSH1 0x80 MSTORE PUSH2 0x2710 PUSH1 0x5 SSTORE PUSH3 0xD2F00 PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH3 0x69780 PUSH1 0x4 SSTORE PUSH1 0x32 PUSH1 0x7 DUP2 SWAP1 SSTORE PUSH1 0x8 SSTORE PUSH2 0x3E8 PUSH1 0x9 SSTORE PUSH2 0x7D0 PUSH1 0xA SSTORE PUSH1 0x3 DUP1 SLOAD SWAP4 DUP6 AND SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SSTORE PUSH1 0xB DUP2 SWAP1 SSTORE PUSH1 0xC SSTORE PUSH3 0x2A300 PUSH1 0xD DUP2 SWAP1 SSTORE PUSH1 0xE SSTORE PUSH1 0x40 MLOAD PUSH32 0x5DAA87A0E9463431830481FD4B6E3403442DFB9A12B9C07597E9F61D50B633C8 SWAP1 PUSH1 0x0 SWAP1 LOG1 POP POP POP PUSH3 0x154 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0xFD JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH3 0x10A DUP2 PUSH3 0x13B JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0x11D DUP2 PUSH3 0x13B JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x130 DUP2 PUSH3 0x13B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH2 0x1E24 PUSH3 0x172 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x11BE MSTORE POP PUSH2 0x1E24 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x383 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7303DE25 GT PUSH2 0x1DE JUMPI DUP1 PUSH4 0xC9C67240 GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xE58BB639 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xF33EF09A GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF33EF09A EQ PUSH2 0x6E6 JUMPI DUP1 PUSH4 0xF3897663 EQ PUSH2 0x6F9 JUMPI DUP1 PUSH4 0xF85EE6F8 EQ PUSH2 0x70C JUMPI DUP1 PUSH4 0xFD4A9121 EQ PUSH2 0x71F JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0xE58BB639 EQ PUSH2 0x6B0 JUMPI DUP1 PUSH4 0xEC9A9368 EQ PUSH2 0x6B8 JUMPI DUP1 PUSH4 0xEFDB16FC EQ PUSH2 0x6C0 JUMPI DUP1 PUSH4 0xF235757F EQ PUSH2 0x6D3 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0xDBC6C552 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xDBC6C552 EQ PUSH2 0x685 JUMPI DUP1 PUSH4 0xDD02E0EC EQ PUSH2 0x698 JUMPI DUP1 PUSH4 0xDF3D02BD EQ PUSH2 0x6A0 JUMPI DUP1 PUSH4 0xE3056A34 EQ PUSH2 0x6A8 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0xC9C67240 EQ PUSH2 0x657 JUMPI DUP1 PUSH4 0xCC32D176 EQ PUSH2 0x66A JUMPI DUP1 PUSH4 0xD1CDF301 EQ PUSH2 0x672 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0xA0530946 GT PUSH2 0x17C JUMPI DUP1 PUSH4 0xAED019B9 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xAED019B9 EQ PUSH2 0x60B JUMPI DUP1 PUSH4 0xB53AFDA7 EQ PUSH2 0x61E JUMPI DUP1 PUSH4 0xBE44ED6B EQ PUSH2 0x631 JUMPI DUP1 PUSH4 0xC52BC31D EQ PUSH2 0x644 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0xA0530946 EQ PUSH2 0x5F3 JUMPI DUP1 PUSH4 0xA5A27605 EQ PUSH2 0x5FB JUMPI DUP1 PUSH4 0xA965D6B5 EQ PUSH2 0x603 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x8608A6E1 GT PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x8608A6E1 EQ PUSH2 0x5A4 JUMPI DUP1 PUSH4 0x8695118A EQ PUSH2 0x5B7 JUMPI DUP1 PUSH4 0x8C14834B EQ PUSH2 0x5CA JUMPI DUP1 PUSH4 0x9F51290B EQ PUSH2 0x5DD JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x7303DE25 EQ PUSH2 0x576 JUMPI DUP1 PUSH4 0x74D7C62B EQ PUSH2 0x589 JUMPI DUP1 PUSH4 0x77E741C7 EQ PUSH2 0x591 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x3106374C GT PUSH2 0x2B8 JUMPI DUP1 PUSH4 0x4E989118 GT PUSH2 0x256 JUMPI DUP1 PUSH4 0x6597B899 GT PUSH2 0x230 JUMPI DUP1 PUSH4 0x6597B899 EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0x67A74DDC EQ PUSH2 0x548 JUMPI DUP1 PUSH4 0x705D5F24 EQ PUSH2 0x55B JUMPI DUP1 PUSH4 0x72A22D71 EQ PUSH2 0x563 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x4E989118 EQ PUSH2 0x507 JUMPI DUP1 PUSH4 0x55323195 EQ PUSH2 0x51A JUMPI DUP1 PUSH4 0x5E045467 EQ PUSH2 0x522 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x44C14F71 GT PUSH2 0x292 JUMPI DUP1 PUSH4 0x44C14F71 EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0x490DAE64 EQ PUSH2 0x4D9 JUMPI DUP1 PUSH4 0x4A2697C4 EQ PUSH2 0x4EC JUMPI DUP1 PUSH4 0x4D866592 EQ PUSH2 0x4F4 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x3106374C EQ PUSH2 0x4A3 JUMPI DUP1 PUSH4 0x372E3546 EQ PUSH2 0x4AB JUMPI DUP1 PUSH4 0x425FAD58 EQ PUSH2 0x4BE JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x1BEB84E7 GT PUSH2 0x325 JUMPI DUP1 PUSH4 0x298B795D GT PUSH2 0x2FF JUMPI DUP1 PUSH4 0x298B795D EQ PUSH2 0x457 JUMPI DUP1 PUSH4 0x2A5AA292 EQ PUSH2 0x46A JUMPI DUP1 PUSH4 0x2DAA0D89 EQ PUSH2 0x47D JUMPI DUP1 PUSH4 0x2FA6C88F EQ PUSH2 0x490 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x1BEB84E7 EQ PUSH2 0x427 JUMPI DUP1 PUSH4 0x2018B870 EQ PUSH2 0x43A JUMPI DUP1 PUSH4 0x26718606 EQ PUSH2 0x442 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x16345F18 GT PUSH2 0x361 JUMPI DUP1 PUSH4 0x16345F18 EQ PUSH2 0x3D9 JUMPI DUP1 PUSH4 0x16A12D7A EQ PUSH2 0x3F9 JUMPI DUP1 PUSH4 0x1B1804AA EQ PUSH2 0x401 JUMPI DUP1 PUSH4 0x1B5833F7 EQ PUSH2 0x414 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0xC340A24 EQ PUSH2 0x388 JUMPI DUP1 PUSH4 0x107C0240 EQ PUSH2 0x3A6 JUMPI DUP1 PUSH4 0x13D459FB EQ PUSH2 0x3C6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x390 PUSH2 0x732 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x39D SWAP2 SWAP1 PUSH2 0x1B0A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3B9 PUSH2 0x3B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x741 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x39D SWAP2 SWAP1 PUSH2 0x1BA4 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x3D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1963 JUMP JUMPDEST PUSH2 0x756 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x3E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x80A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x39D SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x89A JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x40F CALLDATASIZE PUSH1 0x4 PUSH2 0x18A0 JUMP JUMPDEST PUSH2 0x8A0 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x422 CALLDATASIZE PUSH1 0x4 PUSH2 0x19DB JUMP JUMPDEST PUSH2 0x8C0 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x435 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x964 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x979 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x450 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x97F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x455 PUSH2 0x465 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x9F7 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x478 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0xA61 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x48B CALLDATASIZE PUSH1 0x4 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0xAC1 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x49E CALLDATASIZE PUSH1 0x4 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0xC31 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0xCD7 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x4B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0xCDD JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0xCF2 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x4D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0xCFB JUMP JUMPDEST PUSH2 0x455 PUSH2 0x4E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0xD61 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0xDE1 JUMP JUMPDEST PUSH2 0x390 PUSH2 0x502 CALLDATASIZE PUSH1 0x4 PUSH2 0x18A0 JUMP JUMPDEST PUSH2 0xDE7 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x515 CALLDATASIZE PUSH1 0x4 PUSH2 0x1A07 JUMP JUMPDEST PUSH2 0xE0D JUMP JUMPDEST PUSH2 0x3EC PUSH2 0xE80 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x530 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0xE86 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x543 CALLDATASIZE PUSH1 0x4 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0xF00 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x556 CALLDATASIZE PUSH1 0x4 PUSH2 0x18A0 JUMP JUMPDEST PUSH2 0xF55 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0xFE0 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x571 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0xFE6 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x584 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0xFFB JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x10A9 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x59F CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x10AF JUMP JUMPDEST PUSH2 0x455 PUSH2 0x5B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x1124 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x5C5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x1188 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x5D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x119D JUMP JUMPDEST PUSH2 0x5E5 PUSH2 0x11B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x39D SWAP3 SWAP2 SWAP1 PUSH2 0x1D5E JUMP JUMPDEST PUSH2 0x390 PUSH2 0x11BC JUMP JUMPDEST PUSH2 0x390 PUSH2 0x11E0 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x11EF JUMP JUMPDEST PUSH2 0x390 PUSH2 0x619 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x11F5 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x62C CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x1210 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x63F CALLDATASIZE PUSH1 0x4 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0x1225 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x652 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x127A JUMP JUMPDEST PUSH2 0x455 PUSH2 0x665 CALLDATASIZE PUSH1 0x4 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0x1325 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x137A JUMP JUMPDEST PUSH2 0x455 PUSH2 0x680 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x1380 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x693 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x13E7 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x146C JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x1472 JUMP JUMPDEST PUSH2 0x390 PUSH2 0x1478 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x1487 JUMP JUMPDEST PUSH2 0x390 PUSH2 0x14F9 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x6CE CALLDATASIZE PUSH1 0x4 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0x1508 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x6E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x1592 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x6F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x162A JUMP JUMPDEST PUSH2 0x455 PUSH2 0x707 CALLDATASIZE PUSH1 0x4 PUSH2 0x18D4 JUMP JUMPDEST PUSH2 0x1696 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x71A CALLDATASIZE PUSH1 0x4 PUSH2 0x1919 JUMP JUMPDEST PUSH2 0x16FD JUMP JUMPDEST PUSH2 0x455 PUSH2 0x72D CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x17BC JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SWAP1 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x802 JUMPI POP DUP2 PUSH1 0xFF AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x64E1FD55 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7D9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7FD SWAP2 SWAP1 PUSH2 0x1AEE JUMP JUMPDEST PUSH1 0xFF AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD PUSH4 0x8E15F473 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 AND SWAP3 PUSH4 0x8E15F473 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x85C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x870 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x894 SWAP2 SWAP1 PUSH2 0x1A23 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x95D JUMPI POP DUP2 PUSH1 0xFF AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9D8AE446 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x920 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x934 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x958 SWAP2 SWAP1 PUSH2 0x1AEE JUMP JUMPDEST PUSH1 0xFF AND EQ JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x9B2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0xE DUP2 SWAP1 SSTORE POP PUSH18 0x4C505F57495448445241575F57494E444F57 PUSH1 0x70 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xA21 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH2 0xA2A DUP2 PUSH2 0x1824 JUMP JUMPDEST DUP1 PUSH1 0xA DUP2 SWAP1 SSTORE POP PUSH15 0x4D494E5F4C4F414E5F455155495459 PUSH1 0x88 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xA8B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST DUP1 PUSH1 0x6 DUP2 SWAP1 SSTORE POP PUSH14 0x11955391125391D7D411549253D1 PUSH1 0x92 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xAEB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP6 ISZERO ISZERO OR SWAP1 SSTORE DUP2 MLOAD PUSH4 0x313CE567 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 MLOAD PUSH32 0x18D231995D1F7E4354B1786418AA8F34F99996DED9CC6B1D43C3815EB6F5AB79 SWAP4 DUP7 SWAP4 SWAP1 SWAP3 PUSH4 0x313CE567 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB7B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB9F SWAP2 SWAP1 PUSH2 0x1A23 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95D89B41 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBEC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xC14 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1A3B JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD PUSH2 0xC25 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1B53 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xC5B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP6 ISZERO ISZERO OR SWAP1 SSTORE DUP2 MLOAD PUSH4 0x313CE567 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 MLOAD PUSH32 0xB9456501E6A30EEFBF8C4F9D199EF0C7AC7491ABB068D594BBAFBDEC85447CCC SWAP4 DUP7 SWAP4 SWAP1 SWAP3 PUSH4 0x313CE567 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xD25 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST DUP1 PUSH1 0x4 DUP2 SWAP1 SSTORE POP PUSH20 0x1111519055531517D1D49050D157D411549253D1 PUSH1 0x62 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xD8B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP4 ISZERO ISZERO OR SWAP1 SSTORE MLOAD PUSH32 0x936E0E50587B3C03D3E833E5CC880E9A62AFB49D51808E96D00C4790ED037962 SWAP1 PUSH2 0xC25 SWAP1 DUP5 SWAP1 DUP5 SWAP1 PUSH2 0x1B38 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xE37 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1D2F JUMP JUMPDEST PUSH1 0xF DUP1 SLOAD PUSH1 0xFF NOT AND DUP3 ISZERO ISZERO OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x6E0CB5FA7A57C38EB7939C1104F95FCCB5B7A6A8C1A7CAB76934305439B639F5 SWAP1 PUSH2 0xE75 SWAP1 DUP4 SWAP1 PUSH2 0x1BA4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xEB0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH2 0xECC SWAP1 PUSH2 0xEC7 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1849 AND JUMP JUMPDEST PUSH2 0x1824 JUMP JUMPDEST DUP1 PUSH1 0x7 DUP2 SWAP1 SSTORE POP PUSH12 0x494E564553544F525F464545 PUSH1 0xA0 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xF2A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xF7F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP3 DUP5 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD PUSH32 0xC1D3048301C0D23629A2532C8DEFA6D68F8E1A0E4157918769E9FB1B2EEB888E SWAP1 PUSH2 0xC25 SWAP1 DUP5 SWAP1 DUP5 SWAP1 PUSH2 0x1B1E JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1025 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x104B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CB9 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH14 0x4D41504C455F5452454153555259 PUSH1 0x90 SHL SWAP1 PUSH32 0x806B6F19DFA971F58FC9140115F19907B73E8336024786C79C2FFC56F6678EC1 SWAP1 PUSH2 0x9EC SWAP1 DUP5 SWAP1 PUSH2 0x1B0A JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x10D9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH2 0x10F0 SWAP1 PUSH2 0xEC7 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1849 AND JUMP JUMPDEST DUP1 PUSH1 0x8 DUP2 SWAP1 SSTORE POP PUSH12 0x54524541535552595F464545 PUSH1 0xA0 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x114E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST DUP1 PUSH1 0xC DUP2 SWAP1 SSTORE POP PUSH18 0x131417D0D3D3D31113D5D397D411549253D1 PUSH1 0x72 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0xE SLOAD SWAP1 SWAP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x124F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0x129C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO ISZERO JUMPDEST PUSH2 0x12B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1BD3 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x12DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1C63 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xAD3F8FA73CE3985D027E4C3BBE1194701A23E635A746BCF73D8632F677AC3882 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x134F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x13AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST DUP1 PUSH1 0xD DUP2 SWAP1 SSTORE POP PUSH21 0x5354414B45525F554E5354414B455F57494E444F57 PUSH1 0x58 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1411 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH2 0x2710 DUP2 LT ISZERO PUSH2 0x1433 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1C8C JUMP JUMPDEST DUP1 PUSH1 0x5 DUP2 SWAP1 SSTORE POP PUSH17 0x14D5D05417D3D55517D491545552549151 PUSH1 0x7A SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x14B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1C00 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x0 DUP1 SLOAD SWAP1 SWAP2 AND DUP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xB7A4788848EBA3319C766BDD6428C7D7A10E4CBA4FD6ADE9B79B7102B7099B36 SWAP2 SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1532 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP5 ISZERO ISZERO OR SWAP1 SSTORE MLOAD PUSH32 0xD2E6A599A52383178BE9BF2D0BE60C96615B89F8D9CF6C680F06962AA73679FC SWAP1 PUSH2 0x1586 SWAP1 DUP5 SWAP1 PUSH2 0x1BA4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x15BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x15E2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CB9 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 PUSH32 0x56BDDFA0CEE9697CEBDDF9ACD7F23DC6583663B05E007B877056D05017994DEF SWAP2 LOG2 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1654 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH2 0x165D DUP2 PUSH2 0x1824 JUMP JUMPDEST DUP1 PUSH1 0x9 DUP2 SWAP1 SSTORE POP PUSH17 0x4D41585F535741505F534C495050414745 PUSH1 0x78 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x16C0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x15 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP7 AND DUP4 MSTORE SWAP4 SWAP1 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1727 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x1766 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x1782 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1D03 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP6 AND DUP3 MSTORE SWAP3 SWAP1 SWAP3 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x17E6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST DUP1 PUSH1 0xB DUP2 SWAP1 SSTORE POP PUSH22 0x14D51052D15497D0D3D3D31113D5D397D411549253D1 PUSH1 0x52 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH2 0x2710 DUP2 GT ISZERO PUSH2 0x1846 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1BAF JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x95D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1C2C JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x894 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1896 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x95D DUP4 DUP4 PUSH2 0x186E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x18B2 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x18BC DUP5 DUP5 PUSH2 0x186E JUMP JUMPDEST SWAP2 POP PUSH2 0x18CB DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x186E JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x18E8 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x18F2 DUP6 DUP6 PUSH2 0x186E JUMP JUMPDEST SWAP3 POP PUSH2 0x1901 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x186E JUMP JUMPDEST SWAP2 POP PUSH2 0x1910 DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0x186E JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x192D JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1938 DUP2 PUSH2 0x1D9C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x1948 DUP2 PUSH2 0x1D9C JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x1958 DUP2 PUSH2 0x1DB1 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1977 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1981 DUP6 DUP6 PUSH2 0x186E JUMP JUMPDEST SWAP3 POP PUSH2 0x1990 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x186E JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x1958 DUP2 PUSH2 0x1DBF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x19B2 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x19BC DUP5 DUP5 PUSH2 0x186E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x19D0 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x19ED JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x19F7 DUP5 DUP5 PUSH2 0x186E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x19D0 DUP2 PUSH2 0x1DBF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A18 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x95D DUP2 PUSH2 0x1DB1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A34 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A4C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1A63 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD DUP6 PUSH1 0x1F DUP3 ADD SLT PUSH2 0x1A74 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP1 MLOAD SWAP3 POP DUP2 DUP4 GT ISZERO PUSH2 0x1A84 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP5 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1AA4 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE DUP2 DUP5 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x1ABB JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x1ACC DUP5 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP6 ADD PUSH2 0x1D6C JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1AE7 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1AFF JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x95D DUP2 PUSH2 0x1DBF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP7 AND DUP3 MSTORE DUP5 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x40 DUP4 ADD MSTORE DUP4 MLOAD DUP1 PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x1B86 DUP2 PUSH1 0xA0 DUP6 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x1D6C JUMP JUMPDEST SWAP3 ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD PUSH1 0xA0 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xA SWAP1 DUP3 ADD MSTORE PUSH10 0x26A39D2821AA2FA7A7A1 PUSH1 0xB1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x26A39D2727AA2FA3A7AB2FA7A92FA0A226A4A7 PUSH1 0x69 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH18 0x26A39D2727AA2FA822A72224A723AFA3A7AB PUSH1 0x71 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xF SWAP1 DUP3 ADD MSTORE PUSH15 0x1351CE941493D513D7D4105554D151 PUSH1 0x8A SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x4D473A535741505F4F55545F544F4F5F4C4F57 PUSH1 0x68 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xC SWAP1 DUP3 ADD MSTORE PUSH12 0x26A39D2D22A927AFA0A22229 PUSH1 0xA1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xA SWAP1 DUP3 ADD MSTORE PUSH10 0x26A39D2727AA2FA3A7AB PUSH1 0xB1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH18 0x26A39D24A72B20A624A22FA9AAA822A92FA3 PUSH1 0x71 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xC SWAP1 DUP3 ADD MSTORE PUSH12 0x26A39D2727AA2FA0A226A4A7 PUSH1 0xA1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1D87 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1D6F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1D96 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1846 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1846 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x1846 JUMPI PUSH1 0x0 DUP1 REVERT INVALID 0xD8 PUSH25 0xA041C72589F51AF8B3FADE9CC8A466D00ECEF64D45657DD6C 0xDE 0xBF 0x1E 0xCF SELFBALANCE LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADD CALLDATACOPY LOG2 0x4E PUSH14 0x83F2EFFF919FAD035876BD2AB689 SUB PUSH19 0x959AF09D2AA958EEDC1FB964736F6C63430006 SIGNEXTEND STOP CALLER ",
              "sourceMap": "31087:9829:0:-:0;;;33115:744;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33199:8;:32;;-1:-1:-1;;;;;33199:32:0;;;-1:-1:-1;;;;;;33199:32:0;;;;;;;-1:-1:-1;;;;;;33241:27:0;;;;;;;33301:6;33278:15;:29;33369:7;33346:13;:30;;;33409:6;33386:18;:29;33448:2;33425:11;:25;;;33477:11;:25;33552:4;33529:15;:27;33603:4;33580:13;:27;33631:11;:35;;;;;;;;;;;;;;;33676:20;:30;;;33716:16;:30;33779:6;33756:19;:29;;;33795:16;:29;33839:13;;;;33199:8;;33839:13;33115:744;;;31087:9829;;146:535:-1;;;;295:2;283:9;274:7;270:23;266:32;263:2;;;-1:-1;;301:12;263:2;89:6;83:13;101:33;128:5;101:33;:::i;:::-;464:2;514:22;;83:13;353:74;;-1:-1;101:33;83:13;101:33;:::i;:::-;583:2;633:22;;83:13;472:74;;-1:-1;101:33;83:13;101:33;:::i;:::-;591:74;;;;257:424;;;;;:::o;914:117::-;-1:-1;;;;;848:54;;973:35;;963:2;;1022:1;;1012:12;963:2;957:74;:::o;:::-;31087:9829:0;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "820": [
                  {
                    "length": 32,
                    "start": 4542
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106103835760003560e01c80637303de25116101de578063c9c672401161010f578063e58bb639116100ad578063f33ef09a1161007c578063f33ef09a146106e6578063f3897663146106f9578063f85ee6f81461070c578063fd4a91211461071f57610383565b8063e58bb639146106b0578063ec9a9368146106b8578063efdb16fc146106c0578063f235757f146106d357610383565b8063dbc6c552116100e9578063dbc6c55214610685578063dd02e0ec14610698578063df3d02bd146106a0578063e3056a34146106a857610383565b8063c9c6724014610657578063cc32d1761461066a578063d1cdf3011461067257610383565b8063a05309461161017c578063aed019b911610156578063aed019b91461060b578063b53afda71461061e578063be44ed6b14610631578063c52bc31d1461064457610383565b8063a0530946146105f3578063a5a27605146105fb578063a965d6b51461060357610383565b80638608a6e1116101b85780638608a6e1146105a45780638695118a146105b75780638c14834b146105ca5780639f51290b146105dd57610383565b80637303de251461057657806374d7c62b1461058957806377e741c71461059157610383565b80633106374c116102b85780634e989118116102565780636597b899116102305780636597b8991461053557806367a74ddc14610548578063705d5f241461055b57806372a22d711461056357610383565b80634e98911814610507578063553231951461051a5780635e0454671461052257610383565b806344c14f711161029257806344c14f71146104c6578063490dae64146104d95780634a2697c4146104ec5780634d866592146104f457610383565b80633106374c146104a3578063372e3546146104ab578063425fad58146104be57610383565b80631beb84e711610325578063298b795d116102ff578063298b795d146104575780632a5aa2921461046a5780632daa0d891461047d5780632fa6c88f1461049057610383565b80631beb84e7146104275780632018b8701461043a578063267186061461044257610383565b806316345f181161036157806316345f18146103d957806316a12d7a146103f95780631b1804aa146104015780631b5833f71461041457610383565b80630c340a2414610388578063107c0240146103a657806313d459fb146103c6575b600080fd5b610390610732565b60405161039d9190611b0a565b60405180910390f35b6103b96103b4366004611885565b610741565b60405161039d9190611ba4565b6103b96103d4366004611963565b610756565b6103ec6103e7366004611885565b61080a565b60405161039d9190611d55565b6103ec61089a565b6103b961040f3660046118a0565b6108a0565b6103b96104223660046119db565b6108c0565b6103b9610435366004611885565b610964565b6103ec610979565b610455610450366004611ad6565b61097f565b005b610455610465366004611ad6565b6109f7565b610455610478366004611ad6565b610a61565b61045561048b3660046119a0565b610ac1565b61045561049e3660046119a0565b610c31565b6103ec610cd7565b6103b96104b9366004611885565b610cdd565b6103b9610cf2565b6104556104d4366004611ad6565b610cfb565b6104556104e73660046119a0565b610d61565b6103ec610de1565b6103906105023660046118a0565b610de7565b610455610515366004611a07565b610e0d565b6103ec610e80565b610455610530366004611ad6565b610e86565b6104556105433660046119a0565b610f00565b6104556105563660046118a0565b610f55565b6103ec610fe0565b6103b9610571366004611885565b610fe6565b610455610584366004611885565b610ffb565b6103ec6110a9565b61045561059f366004611ad6565b6110af565b6104556105b2366004611ad6565b611124565b6103b96105c5366004611885565b611188565b6103b96105d8366004611885565b61119d565b6105e56111b2565b60405161039d929190611d5e565b6103906111bc565b6103906111e0565b6103ec6111ef565b610390610619366004611885565b6111f5565b6103b961062c366004611885565b611210565b61045561063f3660046119a0565b611225565b610455610652366004611885565b61127a565b6104556106653660046119a0565b611325565b6103ec61137a565b610455610680366004611ad6565b611380565b610455610693366004611ad6565b6113e7565b6103ec61146c565b6103ec611472565b610390611478565b610455611487565b6103906114f9565b6104556106ce3660046119a0565b611508565b6104556106e1366004611885565b611592565b6104556106f4366004611ad6565b61162a565b6104556107073660046118d4565b611696565b61045561071a366004611919565b6116fd565b61045561072d366004611ad6565b6117bc565b6001546001600160a01b031681565b60176020526000908152604090205460ff1681565b6001600160a01b03808416600090815260196020908152604080832093861683529290529081205460ff16801561080257508160ff16836001600160a01b03166364e1fd556040518163ffffffff1660e01b815260040160206040518083038186803b1580156107c557600080fd5b505afa1580156107d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fd9190611aee565b60ff16145b949350505050565b6001600160a01b038082166000908152601660209081526040808320548151638e15f47360e01b8152915193941692638e15f47392600480840193919291829003018186803b15801561085c57600080fd5b505afa158015610870573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108949190611a23565b92915050565b60075481565b601960209081526000928352604080842090915290825290205460ff1681565b6001600160a01b03821660009081526012602052604081205460ff16801561095d57508160ff16836001600160a01b0316639d8ae4466040518163ffffffff1660e01b815260040160206040518083038186803b15801561092057600080fd5b505afa158015610934573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109589190611aee565b60ff16145b9392505050565b60126020526000908152604090205460ff1681565b600d5481565b6001546001600160a01b031633146109b25760405162461bcd60e51b81526004016109a990611cdf565b60405180910390fd5b80600e81905550714c505f57495448445241575f57494e444f5760701b600080516020611dcf833981519152826040516109ec9190611d55565b60405180910390a250565b6001546001600160a01b03163314610a215760405162461bcd60e51b81526004016109a990611cdf565b610a2a81611824565b80600a819055506e4d494e5f4c4f414e5f45515549545960881b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610a8b5760405162461bcd60e51b81526004016109a990611cdf565b806006819055506d11955391125391d7d411549253d160921b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610aeb5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b038216600081815260106020908152604091829020805460ff1916851515179055815163313ce56760e01b815291517f18d231995d1f7e4354b1786418aa8f34f99996ded9cc6b1d43c3815eb6f5ab79938693909263313ce56792600480840193829003018186803b158015610b6757600080fd5b505afa158015610b7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9f9190611a23565b846001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015610bd857600080fd5b505afa158015610bec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c149190810190611a3b565b84604051610c259493929190611b53565b60405180910390a15050565b6001546001600160a01b03163314610c5b5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b038216600081815260116020908152604091829020805460ff1916851515179055815163313ce56760e01b815291517fb9456501e6a30eefbf8c4f9d199ef0c7ac7491abb068d594bbafbdec85447ccc938693909263313ce56792600480840193829003018186803b158015610b6757600080fd5b60055481565b60136020526000908152604090205460ff1681565b600f5460ff1681565b6001546001600160a01b03163314610d255760405162461bcd60e51b81526004016109a990611cdf565b80600481905550731111519055531517d1d49050d157d411549253d160621b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610d8b5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03821660009081526014602052604090819020805460ff1916831515179055517f936e0e50587b3c03d3e833e5cc880e9a62afb49d51808e96d00c4790ed03796290610c259084908490611b38565b600a5481565b60156020908152600092835260408084209091529082529020546001600160a01b031681565b6003546001600160a01b03163314610e375760405162461bcd60e51b81526004016109a990611d2f565b600f805460ff19168215151790556040517f6e0cb5fa7a57c38eb7939c1104f95fccb5b7a6a8c1a7cab76934305439b639f590610e75908390611ba4565b60405180910390a150565b60095481565b6001546001600160a01b03163314610eb05760405162461bcd60e51b81526004016109a990611cdf565b600854610ecc90610ec7908363ffffffff61184916565b611824565b806007819055506b494e564553544f525f46454560a01b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610f2a5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6001546001600160a01b03163314610f7f5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b038281166000908152601660205260409081902080546001600160a01b03191692841692909217909155517fc1d3048301c0d23629a2532c8defa6d68f8e1a0e4157918769e9fb1b2eeb888e90610c259084908490611b1e565b60045481565b60146020526000908152604090205460ff1681565b6001546001600160a01b031633146110255760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03811661104b5760405162461bcd60e51b81526004016109a990611cb9565b600280546001600160a01b0319166001600160a01b0383161790556040516d4d41504c455f545245415355525960901b907f806b6f19dfa971f58fc9140115f19907b73e8336024786c79c2ffc56f6678ec1906109ec908490611b0a565b60065481565b6001546001600160a01b031633146110d95760405162461bcd60e51b81526004016109a990611cdf565b6007546110f090610ec7908363ffffffff61184916565b806008819055506b54524541535552595f46454560a01b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b0316331461114e5760405162461bcd60e51b81526004016109a990611cdf565b80600c8190555071131417d0d3d3d31113d5d397d411549253d160721b600080516020611dcf833981519152826040516109ec9190611d55565b60106020526000908152604090205460ff1681565b60116020526000908152604090205460ff1681565b600c54600e549091565b7f000000000000000000000000000000000000000000000000000000000000000081565b6002546001600160a01b031681565b600b5481565b6016602052600090815260409020546001600160a01b031681565b60186020526000908152604090205460ff1681565b6001546001600160a01b0316331461124f5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6001546001600160a01b03163314801561129c57506001600160a01b03811615155b6112b85760405162461bcd60e51b81526004016109a990611bd3565b600f5460ff16156112db5760405162461bcd60e51b81526004016109a990611c63565b600380546001600160a01b0319166001600160a01b0383169081179091556040517fad3f8fa73ce3985d027e4c3bbe1194701a23e635a746bcf73d8632f677ac388290600090a250565b6001546001600160a01b0316331461134f5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b60085481565b6001546001600160a01b031633146113aa5760405162461bcd60e51b81526004016109a990611cdf565b80600d81905550745354414b45525f554e5354414b455f57494e444f5760581b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b031633146114115760405162461bcd60e51b81526004016109a990611cdf565b6127108110156114335760405162461bcd60e51b81526004016109a990611c8c565b806005819055507014d5d05417d3d55517d491545552549151607a1b600080516020611dcf833981519152826040516109ec9190611d55565b600c5481565b600e5481565b6000546001600160a01b031681565b6000546001600160a01b031633146114b15760405162461bcd60e51b81526004016109a990611c00565b60018054336001600160a01b031991821681179092556000805490911681556040517fb7a4788848eba3319c766bdd6428c7d7a10e4cba4fd6ade9b79b7102b7099b369190a2565b6003546001600160a01b031681565b6001546001600160a01b031633146115325760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03821660008181526013602052604090819020805460ff1916841515179055517fd2e6a599a52383178be9bf2d0be60c96615b89f8d9cf6c680f06962aa73679fc90611586908490611ba4565b60405180910390a25050565b6001546001600160a01b031633146115bc5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b0381166115e25760405162461bcd60e51b81526004016109a990611cb9565b600080546001600160a01b0319166001600160a01b038316908117825560405190917f56bddfa0cee9697cebddf9acd7f23dc6583663b05e007b877056d05017994def91a250565b6001546001600160a01b031633146116545760405162461bcd60e51b81526004016109a990611cdf565b61165d81611824565b80600981905550704d41585f535741505f534c49505041474560781b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b031633146116c05760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03928316600090815260156020908152604080832094861683529390529190912080546001600160a01b03191691909216179055565b6001546001600160a01b031633146117275760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03831660009081526018602052604090205460ff168061176657506001600160a01b03831660009081526017602052604090205460ff165b6117825760405162461bcd60e51b81526004016109a990611d03565b6001600160a01b03928316600090815260196020908152604080832094909516825292909252919020805460ff1916911515919091179055565b6001546001600160a01b031633146117e65760405162461bcd60e51b81526004016109a990611cdf565b80600b819055507514d51052d15497d0d3d3d31113d5d397d411549253d160521b600080516020611dcf833981519152826040516109ec9190611d55565b6127108111156118465760405162461bcd60e51b81526004016109a990611baf565b50565b60008282018381101561095d5760405162461bcd60e51b81526004016109a990611c2c565b80356001600160a01b038116811461089457600080fd5b600060208284031215611896578081fd5b61095d838361186e565b600080604083850312156118b2578081fd5b6118bc848461186e565b91506118cb846020850161186e565b90509250929050565b6000806000606084860312156118e8578081fd5b6118f2858561186e565b9250611901856020860161186e565b9150611910856040860161186e565b90509250925092565b60008060006060848603121561192d578283fd5b833561193881611d9c565b9250602084013561194881611d9c565b9150604084013561195881611db1565b809150509250925092565b600080600060608486031215611977578283fd5b611981858561186e565b9250611990856020860161186e565b9150604084013561195881611dbf565b600080604083850312156119b2578182fd5b6119bc848461186e565b9150602083013580151581146119d0578182fd5b809150509250929050565b600080604083850312156119ed578182fd5b6119f7848461186e565b915060208301356119d081611dbf565b600060208284031215611a18578081fd5b813561095d81611db1565b600060208284031215611a34578081fd5b5051919050565b600060208284031215611a4c578081fd5b815167ffffffffffffffff80821115611a63578283fd5b81840185601f820112611a74578384fd5b8051925081831115611a84578384fd5b604051601f8401601f191681016020018381118282101715611aa4578586fd5b604052838152818401602001871015611abb578485fd5b611acc846020830160208501611d6c565b9695505050505050565b600060208284031215611ae7578081fd5b5035919050565b600060208284031215611aff578081fd5b815161095d81611dbf565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039290921682521515602082015260400190565b600060018060a01b0386168252846020830152608060408301528351806080840152611b868160a0850160208801611d6c565b921515606083015250601f91909101601f19160160a0019392505050565b901515815260200190565b6020808252600a908201526926a39d2821aa2fa7a7a160b11b604082015260600190565b60208082526013908201527226a39d2727aa2fa3a7ab2fa7a92fa0a226a4a760691b604082015260600190565b60208082526012908201527126a39d2727aa2fa822a72224a723afa3a7ab60711b604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252600f908201526e1351ce941493d513d7d4105554d151608a1b604082015260600190565b6020808252601390820152724d473a535741505f4f55545f544f4f5f4c4f5760681b604082015260600190565b6020808252600c908201526b26a39d2d22a927afa0a2222960a11b604082015260600190565b6020808252600a908201526926a39d2727aa2fa3a7ab60b11b604082015260600190565b60208082526012908201527126a39d24a72b20a624a22fa9aaa822a92fa360711b604082015260600190565b6020808252600c908201526b26a39d2727aa2fa0a226a4a760a11b604082015260600190565b90815260200190565b918252602082015260400190565b60005b83811015611d87578181015183820152602001611d6f565b83811115611d96576000848401525b50505050565b6001600160a01b038116811461184657600080fd5b801515811461184657600080fd5b60ff8116811461184657600080fdfed8780a041c72589f51af8b3fade9cc8a466d00ecef64d45657dd6cdebf1ecf47a26469706673582212200137a24e6d83f2efff919fad035876bd2ab6890372959af09d2aa958eedc1fb964736f6c634300060b0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x383 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7303DE25 GT PUSH2 0x1DE JUMPI DUP1 PUSH4 0xC9C67240 GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xE58BB639 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xF33EF09A GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF33EF09A EQ PUSH2 0x6E6 JUMPI DUP1 PUSH4 0xF3897663 EQ PUSH2 0x6F9 JUMPI DUP1 PUSH4 0xF85EE6F8 EQ PUSH2 0x70C JUMPI DUP1 PUSH4 0xFD4A9121 EQ PUSH2 0x71F JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0xE58BB639 EQ PUSH2 0x6B0 JUMPI DUP1 PUSH4 0xEC9A9368 EQ PUSH2 0x6B8 JUMPI DUP1 PUSH4 0xEFDB16FC EQ PUSH2 0x6C0 JUMPI DUP1 PUSH4 0xF235757F EQ PUSH2 0x6D3 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0xDBC6C552 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xDBC6C552 EQ PUSH2 0x685 JUMPI DUP1 PUSH4 0xDD02E0EC EQ PUSH2 0x698 JUMPI DUP1 PUSH4 0xDF3D02BD EQ PUSH2 0x6A0 JUMPI DUP1 PUSH4 0xE3056A34 EQ PUSH2 0x6A8 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0xC9C67240 EQ PUSH2 0x657 JUMPI DUP1 PUSH4 0xCC32D176 EQ PUSH2 0x66A JUMPI DUP1 PUSH4 0xD1CDF301 EQ PUSH2 0x672 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0xA0530946 GT PUSH2 0x17C JUMPI DUP1 PUSH4 0xAED019B9 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xAED019B9 EQ PUSH2 0x60B JUMPI DUP1 PUSH4 0xB53AFDA7 EQ PUSH2 0x61E JUMPI DUP1 PUSH4 0xBE44ED6B EQ PUSH2 0x631 JUMPI DUP1 PUSH4 0xC52BC31D EQ PUSH2 0x644 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0xA0530946 EQ PUSH2 0x5F3 JUMPI DUP1 PUSH4 0xA5A27605 EQ PUSH2 0x5FB JUMPI DUP1 PUSH4 0xA965D6B5 EQ PUSH2 0x603 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x8608A6E1 GT PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x8608A6E1 EQ PUSH2 0x5A4 JUMPI DUP1 PUSH4 0x8695118A EQ PUSH2 0x5B7 JUMPI DUP1 PUSH4 0x8C14834B EQ PUSH2 0x5CA JUMPI DUP1 PUSH4 0x9F51290B EQ PUSH2 0x5DD JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x7303DE25 EQ PUSH2 0x576 JUMPI DUP1 PUSH4 0x74D7C62B EQ PUSH2 0x589 JUMPI DUP1 PUSH4 0x77E741C7 EQ PUSH2 0x591 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x3106374C GT PUSH2 0x2B8 JUMPI DUP1 PUSH4 0x4E989118 GT PUSH2 0x256 JUMPI DUP1 PUSH4 0x6597B899 GT PUSH2 0x230 JUMPI DUP1 PUSH4 0x6597B899 EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0x67A74DDC EQ PUSH2 0x548 JUMPI DUP1 PUSH4 0x705D5F24 EQ PUSH2 0x55B JUMPI DUP1 PUSH4 0x72A22D71 EQ PUSH2 0x563 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x4E989118 EQ PUSH2 0x507 JUMPI DUP1 PUSH4 0x55323195 EQ PUSH2 0x51A JUMPI DUP1 PUSH4 0x5E045467 EQ PUSH2 0x522 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x44C14F71 GT PUSH2 0x292 JUMPI DUP1 PUSH4 0x44C14F71 EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0x490DAE64 EQ PUSH2 0x4D9 JUMPI DUP1 PUSH4 0x4A2697C4 EQ PUSH2 0x4EC JUMPI DUP1 PUSH4 0x4D866592 EQ PUSH2 0x4F4 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x3106374C EQ PUSH2 0x4A3 JUMPI DUP1 PUSH4 0x372E3546 EQ PUSH2 0x4AB JUMPI DUP1 PUSH4 0x425FAD58 EQ PUSH2 0x4BE JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x1BEB84E7 GT PUSH2 0x325 JUMPI DUP1 PUSH4 0x298B795D GT PUSH2 0x2FF JUMPI DUP1 PUSH4 0x298B795D EQ PUSH2 0x457 JUMPI DUP1 PUSH4 0x2A5AA292 EQ PUSH2 0x46A JUMPI DUP1 PUSH4 0x2DAA0D89 EQ PUSH2 0x47D JUMPI DUP1 PUSH4 0x2FA6C88F EQ PUSH2 0x490 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x1BEB84E7 EQ PUSH2 0x427 JUMPI DUP1 PUSH4 0x2018B870 EQ PUSH2 0x43A JUMPI DUP1 PUSH4 0x26718606 EQ PUSH2 0x442 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0x16345F18 GT PUSH2 0x361 JUMPI DUP1 PUSH4 0x16345F18 EQ PUSH2 0x3D9 JUMPI DUP1 PUSH4 0x16A12D7A EQ PUSH2 0x3F9 JUMPI DUP1 PUSH4 0x1B1804AA EQ PUSH2 0x401 JUMPI DUP1 PUSH4 0x1B5833F7 EQ PUSH2 0x414 JUMPI PUSH2 0x383 JUMP JUMPDEST DUP1 PUSH4 0xC340A24 EQ PUSH2 0x388 JUMPI DUP1 PUSH4 0x107C0240 EQ PUSH2 0x3A6 JUMPI DUP1 PUSH4 0x13D459FB EQ PUSH2 0x3C6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x390 PUSH2 0x732 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x39D SWAP2 SWAP1 PUSH2 0x1B0A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3B9 PUSH2 0x3B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x741 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x39D SWAP2 SWAP1 PUSH2 0x1BA4 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x3D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1963 JUMP JUMPDEST PUSH2 0x756 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x3E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x80A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x39D SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x89A JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x40F CALLDATASIZE PUSH1 0x4 PUSH2 0x18A0 JUMP JUMPDEST PUSH2 0x8A0 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x422 CALLDATASIZE PUSH1 0x4 PUSH2 0x19DB JUMP JUMPDEST PUSH2 0x8C0 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x435 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x964 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x979 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x450 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x97F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x455 PUSH2 0x465 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x9F7 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x478 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0xA61 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x48B CALLDATASIZE PUSH1 0x4 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0xAC1 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x49E CALLDATASIZE PUSH1 0x4 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0xC31 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0xCD7 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x4B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0xCDD JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0xCF2 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x4D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0xCFB JUMP JUMPDEST PUSH2 0x455 PUSH2 0x4E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0xD61 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0xDE1 JUMP JUMPDEST PUSH2 0x390 PUSH2 0x502 CALLDATASIZE PUSH1 0x4 PUSH2 0x18A0 JUMP JUMPDEST PUSH2 0xDE7 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x515 CALLDATASIZE PUSH1 0x4 PUSH2 0x1A07 JUMP JUMPDEST PUSH2 0xE0D JUMP JUMPDEST PUSH2 0x3EC PUSH2 0xE80 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x530 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0xE86 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x543 CALLDATASIZE PUSH1 0x4 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0xF00 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x556 CALLDATASIZE PUSH1 0x4 PUSH2 0x18A0 JUMP JUMPDEST PUSH2 0xF55 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0xFE0 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x571 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0xFE6 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x584 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0xFFB JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x10A9 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x59F CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x10AF JUMP JUMPDEST PUSH2 0x455 PUSH2 0x5B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x1124 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x5C5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x1188 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x5D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x119D JUMP JUMPDEST PUSH2 0x5E5 PUSH2 0x11B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x39D SWAP3 SWAP2 SWAP1 PUSH2 0x1D5E JUMP JUMPDEST PUSH2 0x390 PUSH2 0x11BC JUMP JUMPDEST PUSH2 0x390 PUSH2 0x11E0 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x11EF JUMP JUMPDEST PUSH2 0x390 PUSH2 0x619 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x11F5 JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x62C CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x1210 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x63F CALLDATASIZE PUSH1 0x4 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0x1225 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x652 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x127A JUMP JUMPDEST PUSH2 0x455 PUSH2 0x665 CALLDATASIZE PUSH1 0x4 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0x1325 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x137A JUMP JUMPDEST PUSH2 0x455 PUSH2 0x680 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x1380 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x693 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x13E7 JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x146C JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x1472 JUMP JUMPDEST PUSH2 0x390 PUSH2 0x1478 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x1487 JUMP JUMPDEST PUSH2 0x390 PUSH2 0x14F9 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x6CE CALLDATASIZE PUSH1 0x4 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0x1508 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x6E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x1592 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x6F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x162A JUMP JUMPDEST PUSH2 0x455 PUSH2 0x707 CALLDATASIZE PUSH1 0x4 PUSH2 0x18D4 JUMP JUMPDEST PUSH2 0x1696 JUMP JUMPDEST PUSH2 0x455 PUSH2 0x71A CALLDATASIZE PUSH1 0x4 PUSH2 0x1919 JUMP JUMPDEST PUSH2 0x16FD JUMP JUMPDEST PUSH2 0x455 PUSH2 0x72D CALLDATASIZE PUSH1 0x4 PUSH2 0x1AD6 JUMP JUMPDEST PUSH2 0x17BC JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SWAP1 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x802 JUMPI POP DUP2 PUSH1 0xFF AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x64E1FD55 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7D9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7FD SWAP2 SWAP1 PUSH2 0x1AEE JUMP JUMPDEST PUSH1 0xFF AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD PUSH4 0x8E15F473 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 AND SWAP3 PUSH4 0x8E15F473 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x85C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x870 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x894 SWAP2 SWAP1 PUSH2 0x1A23 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x95D JUMPI POP DUP2 PUSH1 0xFF AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9D8AE446 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x920 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x934 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x958 SWAP2 SWAP1 PUSH2 0x1AEE JUMP JUMPDEST PUSH1 0xFF AND EQ JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x9B2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0xE DUP2 SWAP1 SSTORE POP PUSH18 0x4C505F57495448445241575F57494E444F57 PUSH1 0x70 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xA21 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH2 0xA2A DUP2 PUSH2 0x1824 JUMP JUMPDEST DUP1 PUSH1 0xA DUP2 SWAP1 SSTORE POP PUSH15 0x4D494E5F4C4F414E5F455155495459 PUSH1 0x88 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xA8B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST DUP1 PUSH1 0x6 DUP2 SWAP1 SSTORE POP PUSH14 0x11955391125391D7D411549253D1 PUSH1 0x92 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xAEB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP6 ISZERO ISZERO OR SWAP1 SSTORE DUP2 MLOAD PUSH4 0x313CE567 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 MLOAD PUSH32 0x18D231995D1F7E4354B1786418AA8F34F99996DED9CC6B1D43C3815EB6F5AB79 SWAP4 DUP7 SWAP4 SWAP1 SWAP3 PUSH4 0x313CE567 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB7B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB9F SWAP2 SWAP1 PUSH2 0x1A23 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95D89B41 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBEC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xC14 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1A3B JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD PUSH2 0xC25 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1B53 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xC5B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x11 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP6 ISZERO ISZERO OR SWAP1 SSTORE DUP2 MLOAD PUSH4 0x313CE567 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 MLOAD PUSH32 0xB9456501E6A30EEFBF8C4F9D199EF0C7AC7491ABB068D594BBAFBDEC85447CCC SWAP4 DUP7 SWAP4 SWAP1 SWAP3 PUSH4 0x313CE567 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xD25 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST DUP1 PUSH1 0x4 DUP2 SWAP1 SSTORE POP PUSH20 0x1111519055531517D1D49050D157D411549253D1 PUSH1 0x62 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xD8B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP4 ISZERO ISZERO OR SWAP1 SSTORE MLOAD PUSH32 0x936E0E50587B3C03D3E833E5CC880E9A62AFB49D51808E96D00C4790ED037962 SWAP1 PUSH2 0xC25 SWAP1 DUP5 SWAP1 DUP5 SWAP1 PUSH2 0x1B38 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xE37 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1D2F JUMP JUMPDEST PUSH1 0xF DUP1 SLOAD PUSH1 0xFF NOT AND DUP3 ISZERO ISZERO OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x6E0CB5FA7A57C38EB7939C1104F95FCCB5B7A6A8C1A7CAB76934305439B639F5 SWAP1 PUSH2 0xE75 SWAP1 DUP4 SWAP1 PUSH2 0x1BA4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xEB0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH2 0xECC SWAP1 PUSH2 0xEC7 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1849 AND JUMP JUMPDEST PUSH2 0x1824 JUMP JUMPDEST DUP1 PUSH1 0x7 DUP2 SWAP1 SSTORE POP PUSH12 0x494E564553544F525F464545 PUSH1 0xA0 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xF2A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xF7F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP3 DUP5 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD PUSH32 0xC1D3048301C0D23629A2532C8DEFA6D68F8E1A0E4157918769E9FB1B2EEB888E SWAP1 PUSH2 0xC25 SWAP1 DUP5 SWAP1 DUP5 SWAP1 PUSH2 0x1B1E JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x14 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1025 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x104B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CB9 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH14 0x4D41504C455F5452454153555259 PUSH1 0x90 SHL SWAP1 PUSH32 0x806B6F19DFA971F58FC9140115F19907B73E8336024786C79C2FFC56F6678EC1 SWAP1 PUSH2 0x9EC SWAP1 DUP5 SWAP1 PUSH2 0x1B0A JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x10D9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH2 0x10F0 SWAP1 PUSH2 0xEC7 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x1849 AND JUMP JUMPDEST DUP1 PUSH1 0x8 DUP2 SWAP1 SSTORE POP PUSH12 0x54524541535552595F464545 PUSH1 0xA0 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x114E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST DUP1 PUSH1 0xC DUP2 SWAP1 SSTORE POP PUSH18 0x131417D0D3D3D31113D5D397D411549253D1 PUSH1 0x72 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0xE SLOAD SWAP1 SWAP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x16 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x124F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0x129C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO ISZERO JUMPDEST PUSH2 0x12B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1BD3 JUMP JUMPDEST PUSH1 0xF SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x12DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1C63 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xAD3F8FA73CE3985D027E4C3BBE1194701A23E635A746BCF73D8632F677AC3882 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x134F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x13AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST DUP1 PUSH1 0xD DUP2 SWAP1 SSTORE POP PUSH21 0x5354414B45525F554E5354414B455F57494E444F57 PUSH1 0x58 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1411 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH2 0x2710 DUP2 LT ISZERO PUSH2 0x1433 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1C8C JUMP JUMPDEST DUP1 PUSH1 0x5 DUP2 SWAP1 SSTORE POP PUSH17 0x14D5D05417D3D55517D491545552549151 PUSH1 0x7A SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x14B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1C00 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x0 DUP1 SLOAD SWAP1 SWAP2 AND DUP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xB7A4788848EBA3319C766BDD6428C7D7A10E4CBA4FD6ADE9B79B7102B7099B36 SWAP2 SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1532 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP5 ISZERO ISZERO OR SWAP1 SSTORE MLOAD PUSH32 0xD2E6A599A52383178BE9BF2D0BE60C96615B89F8D9CF6C680F06962AA73679FC SWAP1 PUSH2 0x1586 SWAP1 DUP5 SWAP1 PUSH2 0x1BA4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x15BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x15E2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CB9 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 PUSH32 0x56BDDFA0CEE9697CEBDDF9ACD7F23DC6583663B05E007B877056D05017994DEF SWAP2 LOG2 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1654 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH2 0x165D DUP2 PUSH2 0x1824 JUMP JUMPDEST DUP1 PUSH1 0x9 DUP2 SWAP1 SSTORE POP PUSH17 0x4D41585F535741505F534C495050414745 PUSH1 0x78 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x16C0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x15 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP7 AND DUP4 MSTORE SWAP4 SWAP1 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1727 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x18 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x1766 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x17 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x1782 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1D03 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x19 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP6 AND DUP3 MSTORE SWAP3 SWAP1 SWAP3 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x17E6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1CDF JUMP JUMPDEST DUP1 PUSH1 0xB DUP2 SWAP1 SSTORE POP PUSH22 0x14D51052D15497D0D3D3D31113D5D397D411549253D1 PUSH1 0x52 SHL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DCF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x9EC SWAP2 SWAP1 PUSH2 0x1D55 JUMP JUMPDEST PUSH2 0x2710 DUP2 GT ISZERO PUSH2 0x1846 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1BAF JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x95D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A9 SWAP1 PUSH2 0x1C2C JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x894 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1896 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x95D DUP4 DUP4 PUSH2 0x186E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x18B2 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x18BC DUP5 DUP5 PUSH2 0x186E JUMP JUMPDEST SWAP2 POP PUSH2 0x18CB DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x186E JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x18E8 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x18F2 DUP6 DUP6 PUSH2 0x186E JUMP JUMPDEST SWAP3 POP PUSH2 0x1901 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x186E JUMP JUMPDEST SWAP2 POP PUSH2 0x1910 DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0x186E JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x192D JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1938 DUP2 PUSH2 0x1D9C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x1948 DUP2 PUSH2 0x1D9C JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x1958 DUP2 PUSH2 0x1DB1 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1977 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1981 DUP6 DUP6 PUSH2 0x186E JUMP JUMPDEST SWAP3 POP PUSH2 0x1990 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x186E JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x1958 DUP2 PUSH2 0x1DBF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x19B2 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x19BC DUP5 DUP5 PUSH2 0x186E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x19D0 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x19ED JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x19F7 DUP5 DUP5 PUSH2 0x186E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x19D0 DUP2 PUSH2 0x1DBF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A18 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x95D DUP2 PUSH2 0x1DB1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A34 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A4C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1A63 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD DUP6 PUSH1 0x1F DUP3 ADD SLT PUSH2 0x1A74 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP1 MLOAD SWAP3 POP DUP2 DUP4 GT ISZERO PUSH2 0x1A84 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP5 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1AA4 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE DUP2 DUP5 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x1ABB JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x1ACC DUP5 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP6 ADD PUSH2 0x1D6C JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1AE7 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1AFF JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x95D DUP2 PUSH2 0x1DBF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP7 AND DUP3 MSTORE DUP5 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x40 DUP4 ADD MSTORE DUP4 MLOAD DUP1 PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x1B86 DUP2 PUSH1 0xA0 DUP6 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x1D6C JUMP JUMPDEST SWAP3 ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD PUSH1 0xA0 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xA SWAP1 DUP3 ADD MSTORE PUSH10 0x26A39D2821AA2FA7A7A1 PUSH1 0xB1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x26A39D2727AA2FA3A7AB2FA7A92FA0A226A4A7 PUSH1 0x69 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH18 0x26A39D2727AA2FA822A72224A723AFA3A7AB PUSH1 0x71 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xF SWAP1 DUP3 ADD MSTORE PUSH15 0x1351CE941493D513D7D4105554D151 PUSH1 0x8A SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x4D473A535741505F4F55545F544F4F5F4C4F57 PUSH1 0x68 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xC SWAP1 DUP3 ADD MSTORE PUSH12 0x26A39D2D22A927AFA0A22229 PUSH1 0xA1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xA SWAP1 DUP3 ADD MSTORE PUSH10 0x26A39D2727AA2FA3A7AB PUSH1 0xB1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH18 0x26A39D24A72B20A624A22FA9AAA822A92FA3 PUSH1 0x71 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xC SWAP1 DUP3 ADD MSTORE PUSH12 0x26A39D2727AA2FA0A226A4A7 PUSH1 0xA1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1D87 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1D6F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1D96 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1846 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1846 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x1846 JUMPI PUSH1 0x0 DUP1 REVERT INVALID 0xD8 PUSH25 0xA041C72589F51AF8B3FADE9CC8A466D00ECEF64D45657DD6C 0xDE 0xBF 0x1E 0xCF SELFBALANCE LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADD CALLDATACOPY LOG2 0x4E PUSH14 0x83F2EFFF919FAD035876BD2AB689 SUB PUSH19 0x959AF09D2AA958EEDC1FB964736F6C63430006 SIGNEXTEND STOP CALLER ",
              "sourceMap": "31087:9829:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31255:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32394:79;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;40039:249::-;;;;;;:::i;:::-;;:::i;39878:155::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;31514:35::-;;;:::i;32564:78::-;;;;;;:::i;:::-;;:::i;40294:167::-;;;;;;:::i;:::-;;:::i;32055:51::-;;;;;;:::i;:::-;;:::i;31780:43::-;;;:::i;34622:215::-;;;;;;:::i;:::-;;:::i;:::-;;38307:238;;;;;;:::i;:::-;;:::i;38551:190::-;;;;;;:::i;:::-;;:::i;37020:246::-;;;;;;:::i;:::-;;:::i;36765:249::-;;;;;;:::i;:::-;;:::i;31426:39::-;;;:::i;32112:60::-;;;;;;:::i;:::-;;:::i;31876:35::-;;;:::i;38080:221::-;;;;;;:::i;:::-;;:::i;35404:202::-;;;;;;:::i;:::-;;:::i;31641:37::-;;;:::i;32245:82::-;;;;;;:::i;:::-;;:::i;35612:191::-;;;;;;:::i;:::-;;:::i;31596:39::-;;;:::i;37391:208::-;;;;;;:::i;:::-;;:::i;35809:147::-;;;;;;:::i;:::-;;:::i;38981:165::-;;;;;;:::i;:::-;;:::i;31378:42::-;;;:::i;32178:60::-;;;;;;:::i;:::-;;:::i;37819:255::-;;;;;;:::i;:::-;;:::i;31471:37::-;;;:::i;37605:208::-;;;;;;:::i;:::-;;:::i;34186:209::-;;;;;;:::i;:::-;;:::i;31918:62::-;;;;;;:::i;:::-;;:::i;31986:63::-;;;;;;:::i;:::-;;:::i;40467:141::-;;;:::i;:::-;;;;;;;;:::i;31166:37::-;;;:::i;31293:::-;;;:::i;31684:44::-;;;:::i;32334:53::-;;;;;;:::i;:::-;;:::i;32479:79::-;;;;;;:::i;:::-;;:::i;37272:113::-;;;;;;:::i;:::-;;:::i;35093:305::-;;;;;;:::i;:::-;;:::i;35962:147::-;;;;;;:::i;:::-;;:::i;31555:35::-;;;:::i;34401:215::-;;;;;;:::i;:::-;;:::i;38747:228::-;;;;;;:::i;:::-;;:::i;31734:40::-;;;:::i;31829:::-;;;:::i;31210:39::-;;;:::i;39538:240::-;;;:::i;31336:35::-;;;:::i;36565:194::-;;;;;;:::i;:::-;;:::i;39282:250::-;;;;;;:::i;:::-;;:::i;34843:244::-;;;;;;:::i;:::-;;:::i;36409:150::-;;;;;;:::i;:::-;;:::i;36115:288::-;;;;;;:::i;:::-;;:::i;33959:221::-;;;;;;:::i;:::-;;:::i;31255:32::-;;;-1:-1:-1;;;;;31255:32:0;;:::o;32394:79::-;;;;;;;;;;;;;;;:::o;40039:249::-;-1:-1:-1;;;;;40182:31:0;;;40159:4;40182:31;;;:17;:31;;;;;;;;:43;;;;;;;;;;;;;;:99;;;;;40270:11;40229:52;;40241:10;-1:-1:-1;;;;;40229:35:0;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;;;40182:99;40175:106;40039:249;-1:-1:-1;;;;40039:249:0:o;39878:155::-;-1:-1:-1;;;;;39991:16:0;;;39949:7;39991:16;;;:9;:16;;;;;;;;;39983:42;;-1:-1:-1;;;39983:42:0;;;;39949:7;;39991:16;;39983:40;;:42;;;;;39991:16;;39983:42;;;;;;39991:16;39983:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39968:58;39878:155;-1:-1:-1;;39878:155:0:o;31514:35::-;;;;:::o;32564:78::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;40294:167::-;-1:-1:-1;;;;;40400:16:0;;40377:4;40400:16;;;:10;:16;;;;;;;;:54;;;;;40446:8;40420:34;;40426:4;-1:-1:-1;;;;;40420:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:34;;;40400:54;40393:61;40294:167;-1:-1:-1;;;40294:167:0:o;32055:51::-;;;;;;;;;;;;;;;:::o;31780:43::-;;;;:::o;34622:215::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;;;;;;;;;34738:19:::1;34719:16;:38;;;;-1:-1:-1::0;;;;;;;;;;;;;;34810:19:0::1;34772:58;;;;;;:::i;:::-;;;;;;;;34622:215:::0;:::o;38307:238::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;38396:37:::1;38418:14;38396:21;:37::i;:::-;38459:14;38443:13;:30;;;;-1:-1:-1::0;;;;;;;;;;;;;;38523:14:0::1;38488:50;;;;;;:::i;38551:190::-:0;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;38656:14:::1;38640:13;:30;;;;-1:-1:-1::0;;;;;;;;;;;;;;38719:14:0::1;38685:49;;;;;;:::i;37020:246::-:0;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37113:28:0;::::1;;::::0;;;:21:::1;:28;::::0;;;;;;;;:36;;-1:-1:-1;;37113:36:0::1;::::0;::::1;;;::::0;;37189:31;;-1:-1:-1;;;37189:31:0;;;;37164:95:::1;::::0;37113:28;;;;37189:29:::1;::::0;:31:::1;::::0;;::::1;::::0;;;;;;37113:28;37189:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37236:5;-1:-1:-1::0;;;;;37222:27:0::1;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;37222:29:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;37253:5;37164:95;;;;;;;;;:::i;:::-;;;;;;;;37020:246:::0;;:::o;36765:249::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36859:29:0;::::1;;::::0;;;:22:::1;:29;::::0;;;;;;;;:37;;-1:-1:-1;;36859:37:0::1;::::0;::::1;;;::::0;;36937:31;;-1:-1:-1;;;36937:31:0;;;;36911:96:::1;::::0;36859:29;;;;36937::::1;::::0;:31:::1;::::0;;::::1;::::0;;;;;;36859:29;36937:31;::::1;;::::0;::::1;;;;::::0;::::1;31426:39:::0;;;;:::o;32112:60::-;;;;;;;;;;;;;;;:::o;31876:35::-;;;;;;:::o;38080:221::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;38200:19:::1;38179:18;:40;;;;-1:-1:-1::0;;;;;;;;;;;;;;38274:19:0::1;38234:60;;;;;;:::i;35404:202::-:0;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35507:33:0;::::1;;::::0;;;:19:::1;:33;::::0;;;;;;:41;;-1:-1:-1;;35507:41:0::1;::::0;::::1;;;::::0;;35563:36;::::1;::::0;::::1;::::0;35507:33;;:41;;35563:36:::1;:::i;31641:37::-:0;;;;:::o;32245:82::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32245:82:0;;:::o;35612:191::-;35700:11;;-1:-1:-1;;;;;35700:11:0;35686:10;:25;35678:50;;;;-1:-1:-1;;;35678:50:0;;;;;;;:::i;:::-;35738:14;:22;;-1:-1:-1;;35738:22:0;;;;;;;35775:21;;;;;;35738:22;;35775:21;:::i;:::-;;;;;;;;35612:191;:::o;31596:39::-;;;;:::o;37391:208::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;37490:11:::1;::::0;37468:44:::1;::::0;37490:21:::1;::::0;37506:4;37490:21:::1;:15;:21;:::i;:::-;37468;:44::i;:::-;37536:4;37522:11;:18;;;;-1:-1:-1::0;;;;;;;;;;;;;;37587:4:0::1;37555:37;;;;;;:::i;35809:147::-:0;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35910:31:0;;;::::1;;::::0;;;:18:::1;:31;::::0;;;;:39;;-1:-1:-1;;35910:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;35809:147::o;38981:165::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39075:16:0;;::::1;;::::0;;;:9:::1;:16;::::0;;;;;;:25;;-1:-1:-1;;;;;;39075:25:0::1;::::0;;::::1;::::0;;;::::1;::::0;;;39115:24;::::1;::::0;::::1;::::0;39075:16;;:25;;39115:24:::1;:::i;31378:42::-:0;;;;:::o;32178:60::-;;;;;;;;;;;;;;;:::o;37819:255::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37916:28:0;::::1;37908:53;;;;-1:-1:-1::0;;;37908:53:0::1;;;;;;;:::i;:::-;37971:13;:30:::0;;-1:-1:-1;;;;;;37971:30:0::1;-1:-1:-1::0;;;;;37971:30:0;::::1;;::::0;;38016:51:::1;::::0;-1:-1:-1;;;38016:51:0;::::1;::::0;::::1;::::0;37971:30;;38016:51:::1;:::i;31471:37::-:0;;;;:::o;37605:208::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;37704:11:::1;::::0;37682:44:::1;::::0;37704:21:::1;::::0;37720:4;37704:21:::1;:15;:21;:::i;37682:44::-;37750:4;37736:11;:18;;;;-1:-1:-1::0;;;;;;;;;;;;;;37801:4:0::1;37769:37;;;;;;:::i;34186:209::-:0;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;34300:17:::1;34281:16;:36;;;;-1:-1:-1::0;;;;;;;;;;;;;;34370:17:0::1;34332:56;;;;;;:::i;31918:62::-:0;;;;;;;;;;;;;;;:::o;31986:63::-;;;;;;;;;;;;;;;:::o;40467:141::-;40566:16;;40584;;40467:141;;:::o;31166:37::-;;;:::o;31293:::-;;;-1:-1:-1;;;;;31293:37:0;;:::o;31684:44::-;;;;:::o;32334:53::-;;;;;;;;;;;;-1:-1:-1;;;;;32334:53:0;;:::o;32479:79::-;;;;;;;;;;;;;;;:::o;37272:113::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37354:16:0;;;::::1;;::::0;;;:10:::1;:16;::::0;;;;:24;;-1:-1:-1;;37354:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;37272:113::o;35093:305::-;35191:8;;-1:-1:-1;;;;;35191:8:0;35177:10;:22;:54;;;;-1:-1:-1;;;;;;35203:28:0;;;;35177:54;35169:86;;;;-1:-1:-1;;;35169:86:0;;;;;;;:::i;:::-;35274:14;;;;35273:15;35265:43;;;;-1:-1:-1;;;35265:43:0;;;;;;;:::i;:::-;35318:11;:28;;-1:-1:-1;;;;;;35318:28:0;-1:-1:-1;;;;;35318:28:0;;;;;;;;35361:30;;;;-1:-1:-1;;35361:30:0;35093:305;:::o;35962:147::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36063:31:0;;;::::1;;::::0;;;:18:::1;:31;::::0;;;;:39;;-1:-1:-1;;36063:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;35962:147::o;31555:35::-;;;;:::o;34401:215::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;34520:16:::1;34498:19;:38;;;;-1:-1:-1::0;;;;;;;;;;;;;;34592:16:0::1;34551:58;;;;;;:::i;38747:228::-:0;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;38850:6:::1;38835:3;:22;;38827:54;;;;-1:-1:-1::0;;;38827:54:0::1;;;;;;;:::i;:::-;38909:3;38891:15;:21;;;;-1:-1:-1::0;;;;;;;;;;;;;;38964:3:0::1;38927:41;;;;;;:::i;31734:40::-:0;;;;:::o;31829:::-;;;;:::o;31210:39::-;;;-1:-1:-1;;;;;31210:39:0;;:::o;39538:240::-;39614:15;;-1:-1:-1;;;;;39614:15:0;39600:10;:29;39592:60;;;;-1:-1:-1;;;39592:60:0;;;;;;;:::i;:::-;39662:8;:28;;39680:10;-1:-1:-1;;;;;;39662:28:0;;;;;;;;-1:-1:-1;39700:28:0;;;;;;;39743;;;;-1:-1:-1;39743:28:0;39538:240::o;31336:35::-;;;-1:-1:-1;;;;;31336:35:0;;:::o;36565:194::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36668:29:0;::::1;;::::0;;;:19:::1;:29;::::0;;;;;;:37;;-1:-1:-1;;36668:37:0::1;::::0;::::1;;;::::0;;36720:32;::::1;::::0;::::1;::::0;36668:37;;36720:32:::1;:::i;:::-;;;;;;;;36565:194:::0;;:::o;39282:250::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39383:30:0;::::1;39375:55;;;;-1:-1:-1::0;;;39375:55:0::1;;;;;;;:::i;:::-;39440:15;:34:::0;;-1:-1:-1;;;;;;39440:34:0::1;-1:-1:-1::0;;;;;39440:34:0;::::1;::::0;;::::1;::::0;;39489:36:::1;::::0;39440:34;;39489:36:::1;::::0;::::1;39282:250:::0;:::o;34843:244::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;34934:37:::1;34956:14;34934:21;:37::i;:::-;34999:14;34981:15;:32;;;;-1:-1:-1::0;;;;;;;;;;;;;;35065:14:0::1;35028:52;;;;;;:::i;36409:150::-:0;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36518:24:0;;::::1;;::::0;;;:18:::1;:24;::::0;;;;;;;:28;;::::1;::::0;;;;;;;;;:34;;-1:-1:-1;;;;;;36518:34:0::1;::::0;;;::::1;;::::0;;36409:150::o;36115:288::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36244:32:0;::::1;;::::0;;;:18:::1;:32;::::0;;;;;::::1;;::::0;:68:::1;;-1:-1:-1::0;;;;;;36280:32:0;::::1;;::::0;;;:18:::1;:32;::::0;;;;;::::1;;36244:68;36236:99;;;;-1:-1:-1::0;;;36236:99:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;36345:31:0;;::::1;;::::0;;;:17:::1;:31;::::0;;;;;;;:43;;;::::1;::::0;;;;;;;;;:51;;-1:-1:-1;;36345:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;36115:288::o;33959:221::-;32774:8;;-1:-1:-1;;;;;32774:8:0;32760:10;:22;32752:45;;;;-1:-1:-1;;;32752:45:0;;;;;;;:::i;:::-;34081:17:::1;34058:20;:40;;;;-1:-1:-1::0;;;;;;;;;;;;;;34155:17:0::1;34113:60;;;;;;:::i;40779:134::-:0;40884:6;40862:10;:29;;40854:52;;;;-1:-1:-1;;;40854:52:0;;;;;;;:::i;:::-;40779:134;:::o;26035:176::-;26093:7;26124:5;;;26147:6;;;;26139:46;;;;-1:-1:-1;;;26139:46:0;;;;;;;:::i;5:130:-1:-;72:20;;-1:-1;;;;;17647:54;;18321:35;;18311:2;;18370:1;;18360:12;1413:241;;1517:2;1505:9;1496:7;1492:23;1488:32;1485:2;;;-1:-1;;1523:12;1485:2;1585:53;1630:7;1606:22;1585:53;:::i;1661:366::-;;;1782:2;1770:9;1761:7;1757:23;1753:32;1750:2;;;-1:-1;;1788:12;1750:2;1850:53;1895:7;1871:22;1850:53;:::i;:::-;1840:63;;1958:53;2003:7;1940:2;1983:9;1979:22;1958:53;:::i;:::-;1948:63;;1744:283;;;;;:::o;2034:491::-;;;;2172:2;2160:9;2151:7;2147:23;2143:32;2140:2;;;-1:-1;;2178:12;2140:2;2240:53;2285:7;2261:22;2240:53;:::i;:::-;2230:63;;2348:53;2393:7;2330:2;2373:9;2369:22;2348:53;:::i;:::-;2338:63;;2456:53;2501:7;2438:2;2481:9;2477:22;2456:53;:::i;:::-;2446:63;;2134:391;;;;;:::o;2532:485::-;;;;2667:2;2655:9;2646:7;2642:23;2638:32;2635:2;;;-1:-1;;2673:12;2635:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;2725:63;-1:-1;2825:2;2864:22;;72:20;97:33;72:20;97:33;:::i;:::-;2833:63;-1:-1;2933:2;2969:22;;206:20;231:30;206:20;231:30;:::i;:::-;2941:60;;;;2629:388;;;;;:::o;3024:487::-;;;;3160:2;3148:9;3139:7;3135:23;3131:32;3128:2;;;-1:-1;;3166:12;3128:2;3228:53;3273:7;3249:22;3228:53;:::i;:::-;3218:63;;3336:53;3381:7;3318:2;3361:9;3357:22;3336:53;:::i;:::-;3326:63;;3426:2;3467:9;3463:22;1208:20;1233:31;1258:5;1233:31;:::i;3518:360::-;;;3636:2;3624:9;3615:7;3611:23;3607:32;3604:2;;;-1:-1;;3642:12;3604:2;3704:53;3749:7;3725:22;3704:53;:::i;:::-;3694:63;;3794:2;3834:9;3830:22;206:20;18467:5;17481:13;17474:21;18445:5;18442:32;18432:2;;-1:-1;;18478:12;18432:2;3802:60;;;;3598:280;;;;;:::o;3885:362::-;;;4004:2;3992:9;3983:7;3979:23;3975:32;3972:2;;;-1:-1;;4010:12;3972:2;4072:53;4117:7;4093:22;4072:53;:::i;:::-;4062:63;;4162:2;4203:9;4199:22;1208:20;1233:31;1258:5;1233:31;:::i;4254:235::-;;4355:2;4343:9;4334:7;4330:23;4326:32;4323:2;;;-1:-1;;4361:12;4323:2;219:6;206:20;231:30;255:5;231:30;:::i;4496:261::-;;4610:2;4598:9;4589:7;4585:23;4581:32;4578:2;;;-1:-1;;4616:12;4578:2;-1:-1;350:13;;4572:185;-1:-1;4572:185::o;4764:362::-;;4889:2;4877:9;4868:7;4864:23;4860:32;4857:2;;;-1:-1;;4895:12;4857:2;4946:17;4940:24;4984:18;;4976:6;4973:30;4970:2;;;-1:-1;;5006:12;4970:2;5093:6;5082:9;5078:22;526:3;519:4;511:6;507:17;503:27;493:2;;-1:-1;;534:12;493:2;574:6;568:13;554:27;;4984:18;16823:6;16820:30;16817:2;;;-1:-1;;16853:12;16817:2;16486;16480:9;16926;16907:17;;-1:-1;;16903:33;16512:17;;4889:2;16512:17;16572:34;;;16608:22;;;16569:62;16566:2;;;-1:-1;;16634:12;16566:2;16486;16653:22;667:21;;;767:16;;;4889:2;767:16;764:25;-1:-1;761:2;;;-1:-1;;792:12;761:2;812:39;844:6;4889:2;743:5;739:16;4889:2;709:6;705:17;812:39;:::i;:::-;5026:84;4851:275;-1:-1;;;;;;4851:275::o;5133:241::-;;5237:2;5225:9;5216:7;5212:23;5208:32;5205:2;;;-1:-1;;5243:12;5205:2;-1:-1;932:20;;5199:175;-1:-1;5199:175::o;5651:259::-;;5764:2;5752:9;5743:7;5739:23;5735:32;5732:2;;;-1:-1;;5770:12;5732:2;1358:6;1352:13;1370:31;1395:5;1370:31;:::i;9872:222::-;-1:-1;;;;;17647:54;;;;5988:37;;9999:2;9984:18;;9970:124::o;10101:333::-;-1:-1;;;;;17647:54;;;5988:37;;17647:54;;10420:2;10405:18;;5988:37;10256:2;10241:18;;10227:207::o;10441:321::-;-1:-1;;;;;17647:54;;;;5988:37;;17481:13;17474:21;10748:2;10733:18;;6102:34;10590:2;10575:18;;10561:201::o;10769:632::-;;17658:42;;;;;17651:5;17647:54;5995:3;5988:37;9853:5;11159:2;11148:9;11144:18;9823:37;10994:3;11196:2;11185:9;11181:18;11174:48;6293:5;17104:12;17261:6;10994:3;10983:9;10979:19;17249;6387:52;6432:6;17289:14;10983:9;17289:14;11159:2;6413:5;6409:16;6387:52;:::i;:::-;17481:13;;17474:21;11387:2;11372:18;;6102:34;-1:-1;16926:9;18225:14;;;;-1:-1;;18221:28;6451:39;17289:14;6451:39;;10965:436;-1:-1;;;10965:436::o;11408:210::-;17481:13;;17474:21;6102:34;;11529:2;11514:18;;11500:118::o;11625:416::-;11825:2;11839:47;;;6727:2;11810:18;;;17249:19;-1:-1;;;17289:14;;;6743:33;6795:12;;;11796:245::o;12048:416::-;12248:2;12262:47;;;7046:2;12233:18;;;17249:19;-1:-1;;;17289:14;;;7062:42;7123:12;;;12219:245::o;12471:416::-;12671:2;12685:47;;;7374:2;12656:18;;;17249:19;-1:-1;;;17289:14;;;7390:41;7450:12;;;12642:245::o;12894:416::-;13094:2;13108:47;;;7701:2;13079:18;;;17249:19;7737:29;17289:14;;;7717:50;7786:12;;;13065:245::o;13317:416::-;13517:2;13531:47;;;8037:2;13502:18;;;17249:19;-1:-1;;;17289:14;;;8053:38;8110:12;;;13488:245::o;13740:416::-;13940:2;13954:47;;;8361:2;13925:18;;;17249:19;-1:-1;;;17289:14;;;8377:42;8438:12;;;13911:245::o;14163:416::-;14363:2;14377:47;;;8689:2;14348:18;;;17249:19;-1:-1;;;17289:14;;;8705:35;8759:12;;;14334:245::o;14586:416::-;14786:2;14800:47;;;9010:2;14771:18;;;17249:19;-1:-1;;;17289:14;;;9026:33;9078:12;;;14757:245::o;15009:416::-;15209:2;15223:47;;;9329:2;15194:18;;;17249:19;-1:-1;;;17289:14;;;9345:41;9405:12;;;15180:245::o;15432:416::-;15632:2;15646:47;;;9656:2;15617:18;;;17249:19;-1:-1;;;17289:14;;;9672:35;9726:12;;;15603:245::o;15855:222::-;9823:37;;;15982:2;15967:18;;15953:124::o;16084:333::-;9823:37;;;16403:2;16388:18;;9823:37;16239:2;16224:18;;16210:207::o;17881:268::-;17946:1;17953:101;17967:6;17964:1;17961:13;17953:101;;;18034:11;;;18028:18;18015:11;;;18008:39;17989:2;17982:10;17953:101;;;18069:6;18066:1;18063:13;18060:2;;;17946:1;18125:6;18120:3;18116:16;18109:27;18060:2;;17930:219;;;:::o;18262:117::-;-1:-1;;;;;17647:54;;18321:35;;18311:2;;18370:1;;18360:12;18386:111;18467:5;17481:13;17474:21;18445:5;18442:32;18432:2;;18488:1;;18478:12;18750:113;17863:4;18833:5;17852:16;18810:5;18807:33;18797:2;;18854:1;;18844:12"
            },
            "methodIdentifiers": {
              "acceptGovernor()": "e58bb639",
              "defaultGracePeriod()": "705d5f24",
              "defaultUniswapPath(address,address)": "4d866592",
              "fundingPeriod()": "74d7c62b",
              "getLatestPrice(address)": "16345f18",
              "getLpCooldownParams()": "9f51290b",
              "globalAdmin()": "ec9a9368",
              "governor()": "0c340a24",
              "investorFee()": "16a12d7a",
              "isValidBalancerPool(address)": "72a22d71",
              "isValidCalc(address,uint8)": "1b5833f7",
              "isValidCollateralAsset(address)": "8c14834b",
              "isValidLiquidityAsset(address)": "8695118a",
              "isValidLoanFactory(address)": "b53afda7",
              "isValidPoolDelegate(address)": "372e3546",
              "isValidPoolFactory(address)": "107c0240",
              "isValidSubFactory(address,address,uint8)": "13d459fb",
              "lpCooldownPeriod()": "dd02e0ec",
              "lpWithdrawWindow()": "df3d02bd",
              "mapleTreasury()": "a5a27605",
              "maxSwapSlippage()": "55323195",
              "minLoanEquity()": "4a2697c4",
              "mpl()": "a0530946",
              "oracleFor(address)": "aed019b9",
              "pendingGovernor()": "e3056a34",
              "protocolPaused()": "425fad58",
              "setCalc(address,bool)": "be44ed6b",
              "setCollateralAsset(address,bool)": "2fa6c88f",
              "setDefaultGracePeriod(uint256)": "44c14f71",
              "setDefaultUniswapPath(address,address,address)": "f3897663",
              "setFundingPeriod(uint256)": "2a5aa292",
              "setGlobalAdmin(address)": "c52bc31d",
              "setInvestorFee(uint256)": "5e045467",
              "setLiquidityAsset(address,bool)": "2daa0d89",
              "setLpCooldownPeriod(uint256)": "8608a6e1",
              "setLpWithdrawWindow(uint256)": "26718606",
              "setMapleTreasury(address)": "7303de25",
              "setMaxSwapSlippage(uint256)": "f33ef09a",
              "setMinLoanEquity(uint256)": "298b795d",
              "setPendingGovernor(address)": "f235757f",
              "setPoolDelegateAllowlist(address,bool)": "efdb16fc",
              "setPriceOracle(address,address)": "67a74ddc",
              "setProtocolPause(bool)": "4e989118",
              "setStakerCooldownPeriod(uint256)": "fd4a9121",
              "setStakerUnstakeWindow(uint256)": "d1cdf301",
              "setSwapOutRequired(uint256)": "dbc6c552",
              "setTreasuryFee(uint256)": "77e741c7",
              "setValidBalancerPool(address,bool)": "490dae64",
              "setValidLoanFactory(address,bool)": "c9c67240",
              "setValidPoolFactory(address,bool)": "6597b899",
              "setValidSubFactory(address,address,bool)": "f85ee6f8",
              "stakerCooldownPeriod()": "a965d6b5",
              "stakerUnstakeWindow()": "2018b870",
              "swapOutRequired()": "3106374c",
              "treasuryFee()": "cc32d176",
              "validCalcs(address)": "1beb84e7",
              "validSubFactories(address,address)": "1b1804aa"
            }
          }
        },
        "SafeMath": {
          "abi": [],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220623a37c15f8f76f54452df6aba8127c60616902279faeda2182dae47b45ac85764736f6c634300060b0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH3 0x3A37C1 0x5F DUP16 PUSH23 0xF54452DF6ABA8127C60616902279FAEDA2182DAE47B45A 0xC8 JUMPI PUSH5 0x736F6C6343 STOP MOD SIGNEXTEND STOP CALLER ",
              "sourceMap": "25783:4578:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220623a37c15f8f76f54452df6aba8127c60616902279faeda2182dae47b45ac85764736f6c634300060b0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH3 0x3A37C1 0x5F DUP16 PUSH23 0xF54452DF6ABA8127C60616902279FAEDA2182DAE47B45A 0xC8 JUMPI PUSH5 0x736F6C6343 STOP MOD SIGNEXTEND STOP CALLER ",
              "sourceMap": "25783:4578:0:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      }
    },
    "sources": {
      "contracts/core/globals/v1/MapleGlobals.sol": {
        "ast": {
          "absolutePath": "contracts/core/globals/v1/MapleGlobals.sol",
          "exportedSymbols": {
            "ICalc": [
              16
            ],
            "IERC20": [
              599
            ],
            "IERC20Details": [
              617
            ],
            "IMapleGlobals": [
              507
            ],
            "IOracle": [
              515
            ],
            "ISubFactory": [
              523
            ],
            "MapleGlobals": [
              1714
            ],
            "SafeMath": [
              811
            ]
          },
          "id": 1715,
          "license": "AGPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                "=",
                "0.6",
                ".11",
                ">=",
                "0.6",
                ".0",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "119:39:0"
            },
            {
              "id": 2,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "159:33:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 3,
                "nodeType": "StructuredDocumentation",
                "src": "282:28:0",
                "text": "@title Calc calculates."
              },
              "fullyImplemented": false,
              "id": 16,
              "linearizedBaseContracts": [
                16
              ],
              "name": "ICalc",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": {
                    "id": 4,
                    "nodeType": "StructuredDocumentation",
                    "src": "333:45:0",
                    "text": "@dev The Calculator type."
                  },
                  "functionSelector": "9d8ae446",
                  "id": 9,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "calcType",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "400:2:0"
                  },
                  "returnParameters": {
                    "id": 8,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9,
                        "src": "426:5:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 6,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "426:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "425:7:0"
                  },
                  "scope": 16,
                  "src": "383:50:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 10,
                    "nodeType": "StructuredDocumentation",
                    "src": "439:45:0",
                    "text": "@dev The Calculator name."
                  },
                  "functionSelector": "06fdde03",
                  "id": 15,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 11,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "502:2:0"
                  },
                  "returnParameters": {
                    "id": 14,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15,
                        "src": "528:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "528:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "527:9:0"
                  },
                  "scope": 16,
                  "src": "489:48:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1715,
              "src": "310:230:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 17,
                "nodeType": "StructuredDocumentation",
                "src": "635:104:0",
                "text": "@title MapleGlobals maintains a central source of parameters and allowlists for the Maple protocol."
              },
              "fullyImplemented": false,
              "id": 507,
              "linearizedBaseContracts": [
                507
              ],
              "name": "IMapleGlobals",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 18,
                    "nodeType": "StructuredDocumentation",
                    "src": "770:91:0",
                    "text": "@dev   Emits an event indicating the MapleGlobals contract was created."
                  },
                  "id": 20,
                  "name": "Initialized",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 19,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "883:2:0"
                  },
                  "src": "866:20:0"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 21,
                    "nodeType": "StructuredDocumentation",
                    "src": "892:336:0",
                    "text": "@dev   Emits an event indicating the validity of a Collateral Asset was set.\n@param asset    The Collateral Asset to assign validity to.\n@param decimals The number of decimal places of `asset`.\n@param symbol   The symbol of `asset`.\n@param valid    The new validity status of `asset`."
                  },
                  "id": 31,
                  "name": "CollateralAssetSet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 30,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 31,
                        "src": "1258:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1258:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "decimals",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 31,
                        "src": "1273:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1273:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "symbol",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 31,
                        "src": "1291:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1291:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 31,
                        "src": "1306:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1306:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1257:60:0"
                  },
                  "src": "1233:85:0"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 32,
                    "nodeType": "StructuredDocumentation",
                    "src": "1324:334:0",
                    "text": "@dev   Emits an event indicating the validity of a Liquidity Asset was set.\n@param asset    The Liquidity Asset to assign validity to.\n@param decimals The number of decimal places of `asset`.\n@param symbol   The symbol of `asset`.\n@param valid    The new validity status of `asset`."
                  },
                  "id": 42,
                  "name": "LiquidityAssetSet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 41,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 34,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 42,
                        "src": "1687:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 33,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1687:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 36,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "decimals",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 42,
                        "src": "1702:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 35,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1702:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 38,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "symbol",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 42,
                        "src": "1720:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 37,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1720:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 40,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 42,
                        "src": "1735:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 39,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1735:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1686:60:0"
                  },
                  "src": "1663:84:0"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 43,
                    "nodeType": "StructuredDocumentation",
                    "src": "1753:183:0",
                    "text": "@dev   Emits an event indicating the Oracle for an asset was set.\n@param asset  The asset to update price for.\n@param oracle The new Oracle to use."
                  },
                  "id": 49,
                  "name": "OracleSet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 48,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 45,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 49,
                        "src": "1957:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1957:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 47,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "oracle",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 49,
                        "src": "1972:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 46,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1972:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1956:31:0"
                  },
                  "src": "1941:47:0"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 50,
                    "nodeType": "StructuredDocumentation",
                    "src": "1994:40:0",
                    "text": "@dev This is unused."
                  },
                  "id": 56,
                  "name": "TransferRestrictionExemptionSet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 55,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 52,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "exemptedContract",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 56,
                        "src": "2077:32:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 51,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2077:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 54,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 56,
                        "src": "2111:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 53,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2111:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2076:46:0"
                  },
                  "src": "2039:84:0"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 57,
                    "nodeType": "StructuredDocumentation",
                    "src": "2129:232:0",
                    "text": "@dev   Emits an event indicating the validity of a Balancer Pool was set.\n@param balancerPool The address of Balancer Pool contract.\n@param valid        The new validity status of a Balancer Pool."
                  },
                  "id": 63,
                  "name": "BalancerPoolSet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 62,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 59,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "balancerPool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 63,
                        "src": "2388:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 58,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2388:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 61,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 63,
                        "src": "2410:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 60,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2410:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2387:34:0"
                  },
                  "src": "2366:56:0"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 64,
                    "nodeType": "StructuredDocumentation",
                    "src": "2428:151:0",
                    "text": "@dev   Emits an event indicating a PendingGovernor was set.\n@param pendingGovernor The address of the new Pending Governor."
                  },
                  "id": 68,
                  "name": "PendingGovernorSet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 67,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 66,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pendingGovernor",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 68,
                        "src": "2609:31:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 65,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2609:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2608:33:0"
                  },
                  "src": "2584:58:0"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 69,
                    "nodeType": "StructuredDocumentation",
                    "src": "2648:164:0",
                    "text": "@dev   Emits an event indicating Governorship was accepted by a new account.\n@param governor The account that has accepted Governorship."
                  },
                  "id": 73,
                  "name": "GovernorAccepted",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 72,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 71,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "governor",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 73,
                        "src": "2840:24:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 70,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2840:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2839:26:0"
                  },
                  "src": "2817:49:0"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 74,
                    "nodeType": "StructuredDocumentation",
                    "src": "2872:225:0",
                    "text": "@dev   Emits an event indicating that some Governor controlled parameter was set.\n@param which The identifier of the parameter that was set.\n@param value The value the parameter was set to."
                  },
                  "id": 80,
                  "name": "GlobalsParamSet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 79,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 76,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "which",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 80,
                        "src": "3124:21:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 75,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3124:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 78,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 80,
                        "src": "3147:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 77,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3147:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3123:38:0"
                  },
                  "src": "3102:60:0"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 81,
                    "nodeType": "StructuredDocumentation",
                    "src": "3168:211:0",
                    "text": "@dev   Emits an event indicating that some Governor controlled address was set.\n@param which The identifier of the address that was set.\n@param addr  The address that was set."
                  },
                  "id": 87,
                  "name": "GlobalsAddressSet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 86,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 83,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "which",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 87,
                        "src": "3408:21:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 82,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3408:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 85,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "addr",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 87,
                        "src": "3431:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 84,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3431:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3407:37:0"
                  },
                  "src": "3384:61:0"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 88,
                    "nodeType": "StructuredDocumentation",
                    "src": "3451:148:0",
                    "text": "@dev   Emits an event indicating the protocol's paused state has been set.\n@param pause Whether the protocol was paused."
                  },
                  "id": 92,
                  "name": "ProtocolPaused",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 91,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 90,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "pause",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 92,
                        "src": "3625:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 89,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3625:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3624:12:0"
                  },
                  "src": "3604:33:0"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 93,
                    "nodeType": "StructuredDocumentation",
                    "src": "3643:143:0",
                    "text": "@dev   Emits an event indicating the GlobalAdmin was set.\n@param newGlobalAdmin The address of the new GlobalAdmin."
                  },
                  "id": 97,
                  "name": "GlobalAdminSet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 96,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 95,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newGlobalAdmin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 97,
                        "src": "3812:30:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 94,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3812:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3811:32:0"
                  },
                  "src": "3791:53:0"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 98,
                    "nodeType": "StructuredDocumentation",
                    "src": "3850:230:0",
                    "text": "@dev   Emits an event indicating the validity of a Pool Delegate was set.\n@param poolDelegate The address of a Pool Delegate.\n@param valid        Whether `poolDelegate` is a valid Pool Delegate."
                  },
                  "id": 104,
                  "name": "PoolDelegateSet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 103,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 100,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "poolDelegate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 104,
                        "src": "4107:28:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 99,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4107:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 102,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 104,
                        "src": "4137:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 101,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4137:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4106:42:0"
                  },
                  "src": "4085:64:0"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 105,
                    "nodeType": "StructuredDocumentation",
                    "src": "4155:73:0",
                    "text": "@dev The ERC-2222 Maple Token for the Maple protocol."
                  },
                  "functionSelector": "a0530946",
                  "id": 110,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mpl",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 106,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4245:2:0"
                  },
                  "returnParameters": {
                    "id": 109,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 108,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 110,
                        "src": "4271:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 107,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4271:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4270:9:0"
                  },
                  "scope": 507,
                  "src": "4233:47:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 111,
                    "nodeType": "StructuredDocumentation",
                    "src": "4286:142:0",
                    "text": "@dev The Governor that is declared for governorship transfer. \n@dev Must be accepted for transfer to take effect. "
                  },
                  "functionSelector": "e3056a34",
                  "id": 116,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pendingGovernor",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 112,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4457:2:0"
                  },
                  "returnParameters": {
                    "id": 115,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 114,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 116,
                        "src": "4483:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 113,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4483:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4482:9:0"
                  },
                  "scope": 507,
                  "src": "4433:59:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 117,
                    "nodeType": "StructuredDocumentation",
                    "src": "4498:91:0",
                    "text": "@dev The Governor responsible for management of global Maple variables."
                  },
                  "functionSelector": "0c340a24",
                  "id": 122,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "governor",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 118,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4611:2:0"
                  },
                  "returnParameters": {
                    "id": 121,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 120,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 122,
                        "src": "4637:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 119,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4637:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4636:9:0"
                  },
                  "scope": 507,
                  "src": "4594:52:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 123,
                    "nodeType": "StructuredDocumentation",
                    "src": "4652:125:0",
                    "text": "@dev The MapleTreasury is the Treasury where all fees pass through for conversion, prior to distribution."
                  },
                  "functionSelector": "a5a27605",
                  "id": 128,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mapleTreasury",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 124,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4804:2:0"
                  },
                  "returnParameters": {
                    "id": 127,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 126,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 128,
                        "src": "4830:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 125,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4830:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4829:9:0"
                  },
                  "scope": 507,
                  "src": "4782:57:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 129,
                    "nodeType": "StructuredDocumentation",
                    "src": "4845:147:0",
                    "text": "@dev The Global Admin of the whole network. \n@dev Has the power to switch off/on the functionality of entire protocol. "
                  },
                  "functionSelector": "ec9a9368",
                  "id": 134,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "globalAdmin",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 130,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5017:2:0"
                  },
                  "returnParameters": {
                    "id": 133,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 132,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 134,
                        "src": "5043:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 131,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5043:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5042:9:0"
                  },
                  "scope": 507,
                  "src": "4997:55:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 135,
                    "nodeType": "StructuredDocumentation",
                    "src": "5058:119:0",
                    "text": "@dev The amount of time a Borrower has to make a missed payment before a default can be triggered. "
                  },
                  "functionSelector": "705d5f24",
                  "id": 140,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "defaultGracePeriod",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 136,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5209:2:0"
                  },
                  "returnParameters": {
                    "id": 139,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 138,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 140,
                        "src": "5235:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 137,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5235:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5234:9:0"
                  },
                  "scope": 507,
                  "src": "5182:62:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 141,
                    "nodeType": "StructuredDocumentation",
                    "src": "5250:126:0",
                    "text": "@dev The minimum amount of Pool cover that a Pool Delegate has to provide before they can finalize a Pool."
                  },
                  "functionSelector": "3106374c",
                  "id": 146,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "swapOutRequired",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 142,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5405:2:0"
                  },
                  "returnParameters": {
                    "id": 145,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 144,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 146,
                        "src": "5431:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 143,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5431:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5430:9:0"
                  },
                  "scope": 507,
                  "src": "5381:59:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 147,
                    "nodeType": "StructuredDocumentation",
                    "src": "5446:116:0",
                    "text": "@dev The amount of time to allow a Borrower to drawdown on their Loan after funding period ends."
                  },
                  "functionSelector": "74d7c62b",
                  "id": 152,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "fundingPeriod",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 148,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5589:2:0"
                  },
                  "returnParameters": {
                    "id": 151,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 150,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 152,
                        "src": "5615:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 149,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5615:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5614:9:0"
                  },
                  "scope": 507,
                  "src": "5567:57:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 153,
                    "nodeType": "StructuredDocumentation",
                    "src": "5630:104:0",
                    "text": "@dev The portion of drawdown that goes to the Pool Delegates and individual Lenders."
                  },
                  "functionSelector": "16a12d7a",
                  "id": 158,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "investorFee",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 154,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5759:2:0"
                  },
                  "returnParameters": {
                    "id": 157,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 156,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 158,
                        "src": "5785:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 155,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5785:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5784:9:0"
                  },
                  "scope": 507,
                  "src": "5739:55:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 159,
                    "nodeType": "StructuredDocumentation",
                    "src": "5800:80:0",
                    "text": "@dev The portion of drawdown that goes to the MapleTreasury."
                  },
                  "functionSelector": "cc32d176",
                  "id": 164,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "treasuryFee",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 160,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5905:2:0"
                  },
                  "returnParameters": {
                    "id": 163,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 162,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 164,
                        "src": "5931:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 161,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5931:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5930:9:0"
                  },
                  "scope": 507,
                  "src": "5885:55:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 165,
                    "nodeType": "StructuredDocumentation",
                    "src": "5946:81:0",
                    "text": "@dev The maximum amount of slippage for Uniswap transactions."
                  },
                  "functionSelector": "55323195",
                  "id": 170,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "maxSwapSlippage",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 166,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6056:2:0"
                  },
                  "returnParameters": {
                    "id": 169,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 168,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 170,
                        "src": "6082:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 167,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6082:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6081:9:0"
                  },
                  "scope": 507,
                  "src": "6032:59:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 171,
                    "nodeType": "StructuredDocumentation",
                    "src": "6097:130:0",
                    "text": "@dev The minimum amount of LoanFDTs required to trigger liquidations (basis points percentage of totalSupply)."
                  },
                  "functionSelector": "4a2697c4",
                  "id": 176,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "minLoanEquity",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 172,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6254:2:0"
                  },
                  "returnParameters": {
                    "id": 175,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 174,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 176,
                        "src": "6280:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 173,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6280:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6279:9:0"
                  },
                  "scope": 507,
                  "src": "6232:57:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 177,
                    "nodeType": "StructuredDocumentation",
                    "src": "6295:119:0",
                    "text": "@dev The period (in secs) after which Stakers are allowed to unstake their BPTs from a StakeLocker."
                  },
                  "functionSelector": "a965d6b5",
                  "id": 182,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "stakerCooldownPeriod",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 178,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6448:2:0"
                  },
                  "returnParameters": {
                    "id": 181,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 180,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 182,
                        "src": "6474:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 179,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6474:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6473:9:0"
                  },
                  "scope": 507,
                  "src": "6419:64:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 183,
                    "nodeType": "StructuredDocumentation",
                    "src": "6489:110:0",
                    "text": "@dev The period (in secs) after which LPs are allowed to withdraw their funds from a Pool."
                  },
                  "functionSelector": "dd02e0ec",
                  "id": 188,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "lpCooldownPeriod",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 184,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6629:2:0"
                  },
                  "returnParameters": {
                    "id": 187,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 186,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 188,
                        "src": "6655:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 185,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6655:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6654:9:0"
                  },
                  "scope": 507,
                  "src": "6604:60:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 189,
                    "nodeType": "StructuredDocumentation",
                    "src": "6670:161:0",
                    "text": "@dev The window of time (in secs) after `stakerCooldownPeriod` that an account has to withdraw before their intent to unstake is invalidated."
                  },
                  "functionSelector": "2018b870",
                  "id": 194,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "stakerUnstakeWindow",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 190,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6864:2:0"
                  },
                  "returnParameters": {
                    "id": 193,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 192,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 194,
                        "src": "6890:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 191,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6890:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6889:9:0"
                  },
                  "scope": 507,
                  "src": "6836:63:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 195,
                    "nodeType": "StructuredDocumentation",
                    "src": "6905:158:0",
                    "text": "@dev The window of time (in secs) after `lpCooldownPeriod` that an account has to withdraw before their intent to withdraw is invalidated."
                  },
                  "functionSelector": "df3d02bd",
                  "id": 200,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "lpWithdrawWindow",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 196,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7093:2:0"
                  },
                  "returnParameters": {
                    "id": 199,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 198,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 200,
                        "src": "7119:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 197,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7119:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7118:9:0"
                  },
                  "scope": 507,
                  "src": "7068:60:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 201,
                    "nodeType": "StructuredDocumentation",
                    "src": "7134:84:0",
                    "text": "@dev Whether the functionality of the entire protocol is paused."
                  },
                  "functionSelector": "425fad58",
                  "id": 206,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "protocolPaused",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 202,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7246:2:0"
                  },
                  "returnParameters": {
                    "id": 205,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 204,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 206,
                        "src": "7272:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 203,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7272:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7271:6:0"
                  },
                  "scope": 507,
                  "src": "7223:55:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 207,
                    "nodeType": "StructuredDocumentation",
                    "src": "7284:127:0",
                    "text": "@param  liquidityAsset The address of a Liquidity Asset.\n@return Whether `liquidityAsset` is valid."
                  },
                  "functionSelector": "8695118a",
                  "id": 214,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidLiquidityAsset",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 210,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 209,
                        "mutability": "mutable",
                        "name": "liquidityAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 214,
                        "src": "7447:22:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 208,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7447:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7446:24:0"
                  },
                  "returnParameters": {
                    "id": 213,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 212,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 214,
                        "src": "7494:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 211,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7494:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7493:6:0"
                  },
                  "scope": 507,
                  "src": "7416:84:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 215,
                    "nodeType": "StructuredDocumentation",
                    "src": "7506:130:0",
                    "text": "@param  collateralAsset The address of a Collateral Asset.\n@return Whether `collateralAsset` is valid."
                  },
                  "functionSelector": "8c14834b",
                  "id": 222,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidCollateralAsset",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 218,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 217,
                        "mutability": "mutable",
                        "name": "collateralAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 222,
                        "src": "7673:23:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 216,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7673:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7672:25:0"
                  },
                  "returnParameters": {
                    "id": 221,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 220,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 222,
                        "src": "7721:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 219,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7721:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7720:6:0"
                  },
                  "scope": 507,
                  "src": "7641:86:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 223,
                    "nodeType": "StructuredDocumentation",
                    "src": "7733:102:0",
                    "text": "@param  calc The address of a Calculator.\n@return Whether `calc` is valid."
                  },
                  "functionSelector": "1beb84e7",
                  "id": 230,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "validCalcs",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 226,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 225,
                        "mutability": "mutable",
                        "name": "calc",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 230,
                        "src": "7860:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 224,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7860:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7859:14:0"
                  },
                  "returnParameters": {
                    "id": 229,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 228,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 230,
                        "src": "7897:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 227,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7897:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7896:6:0"
                  },
                  "scope": 507,
                  "src": "7840:63:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 231,
                    "nodeType": "StructuredDocumentation",
                    "src": "7909:198:0",
                    "text": "@dev    Prevents unauthorized/unknown addresses from creating Pools.\n@param  poolDelegate The address of a Pool Delegate.\n@return Whether `poolDelegate` is valid."
                  },
                  "functionSelector": "372e3546",
                  "id": 238,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidPoolDelegate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 234,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 233,
                        "mutability": "mutable",
                        "name": "poolDelegate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 238,
                        "src": "8141:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 232,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8141:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8140:22:0"
                  },
                  "returnParameters": {
                    "id": 237,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 236,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 238,
                        "src": "8186:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 235,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "8186:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8185:6:0"
                  },
                  "scope": 507,
                  "src": "8112:80:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 239,
                    "nodeType": "StructuredDocumentation",
                    "src": "8198:147:0",
                    "text": "@param  balancerPool The address of a Balancer Pool.\n@return Whether Maple has approved `balancerPool` for BPT staking."
                  },
                  "functionSelector": "72a22d71",
                  "id": 246,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidBalancerPool",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 242,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 241,
                        "mutability": "mutable",
                        "name": "balancerPool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 246,
                        "src": "8379:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 240,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8379:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8378:22:0"
                  },
                  "returnParameters": {
                    "id": 245,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 244,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 246,
                        "src": "8424:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 243,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "8424:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8423:6:0"
                  },
                  "scope": 507,
                  "src": "8350:80:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 247,
                    "nodeType": "StructuredDocumentation",
                    "src": "8436:768:0",
                    "text": "@dev Determines the liquidation path of various assets in Loans and the Treasury. \n@dev The value provided will determine whether or not to perform a bilateral or triangular swap on Uniswap. \n@dev For example, `defaultUniswapPath[WBTC][USDC]` value would indicate what asset to convert WBTC into before conversion to USDC. \n@dev If `defaultUniswapPath[WBTC][USDC] == USDC`, then the swap is bilateral and no middle asset is swapped. \n@dev If `defaultUniswapPath[WBTC][USDC] == WETH`, then swap WBTC for WETH, then WETH for USDC. \n@param  tokenA The address of the asset being swapped.\n@param  tokenB The address of the final asset to receive.\n@return The intermediary asset for swaps, if any."
                  },
                  "functionSelector": "4d866592",
                  "id": 256,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "defaultUniswapPath",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 252,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 249,
                        "mutability": "mutable",
                        "name": "tokenA",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 256,
                        "src": "9237:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 248,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9237:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 251,
                        "mutability": "mutable",
                        "name": "tokenB",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 256,
                        "src": "9253:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 250,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9253:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9236:32:0"
                  },
                  "returnParameters": {
                    "id": 255,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 254,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 256,
                        "src": "9292:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 253,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9292:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9291:9:0"
                  },
                  "scope": 507,
                  "src": "9209:92:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 257,
                    "nodeType": "StructuredDocumentation",
                    "src": "9307:123:0",
                    "text": "@param  asset The address of some token.\n@return The Chainlink Oracle for the price of `asset`."
                  },
                  "functionSelector": "aed019b9",
                  "id": 264,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "oracleFor",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 260,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 259,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 264,
                        "src": "9454:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 258,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9454:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9453:15:0"
                  },
                  "returnParameters": {
                    "id": 263,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 262,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 264,
                        "src": "9492:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 261,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9492:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9491:9:0"
                  },
                  "scope": 507,
                  "src": "9435:66:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 265,
                    "nodeType": "StructuredDocumentation",
                    "src": "9511:118:0",
                    "text": "@param  poolFactory The address of a Pool Factory.\n@return Whether `poolFactory` is valid."
                  },
                  "functionSelector": "107c0240",
                  "id": 272,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidPoolFactory",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 268,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 267,
                        "mutability": "mutable",
                        "name": "poolFactory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 272,
                        "src": "9662:19:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 266,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9662:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9661:21:0"
                  },
                  "returnParameters": {
                    "id": 271,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 270,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 272,
                        "src": "9706:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 269,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9706:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9705:6:0"
                  },
                  "scope": 507,
                  "src": "9634:78:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 273,
                    "nodeType": "StructuredDocumentation",
                    "src": "9718:118:0",
                    "text": "@param  loanFactory The address of a Loan Factory.\n@return Whether `loanFactory` is valid."
                  },
                  "functionSelector": "b53afda7",
                  "id": 280,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidLoanFactory",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 276,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 275,
                        "mutability": "mutable",
                        "name": "loanFactory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 280,
                        "src": "9869:19:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 274,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9869:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9868:21:0"
                  },
                  "returnParameters": {
                    "id": 279,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 278,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 280,
                        "src": "9913:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 277,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9913:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9912:6:0"
                  },
                  "scope": 507,
                  "src": "9841:78:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 281,
                    "nodeType": "StructuredDocumentation",
                    "src": "9929:266:0",
                    "text": "@param  superFactory The core factory (e.g. PoolFactory, LoanFactory).\n@param  subFactory   The sub factory used by core factory (e.g. LiquidityLockerFactory).\n@return Whether `subFactory` is valid as it relates to `superFactory`."
                  },
                  "functionSelector": "1b1804aa",
                  "id": 290,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "validSubFactories",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 286,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 283,
                        "mutability": "mutable",
                        "name": "superFactory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 290,
                        "src": "10227:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 282,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10227:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 285,
                        "mutability": "mutable",
                        "name": "subFactory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 290,
                        "src": "10249:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 284,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10249:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10226:42:0"
                  },
                  "returnParameters": {
                    "id": 289,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 288,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 290,
                        "src": "10292:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 287,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "10292:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10291:6:0"
                  },
                  "scope": 507,
                  "src": "10200:98:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 291,
                    "nodeType": "StructuredDocumentation",
                    "src": "10308:363:0",
                    "text": "@dev   Sets the Staker cooldown period. \n@dev   This change will affect the existing cool down period for the Stakers that already intended to unstake. \n@dev   Only the Governor can call this function. \n@dev   It emits a `GlobalsParamSet` event. \n@param newCooldownPeriod The new value for the cool down period."
                  },
                  "functionSelector": "fd4a9121",
                  "id": 296,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setStakerCooldownPeriod",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 294,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 293,
                        "mutability": "mutable",
                        "name": "newCooldownPeriod",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 296,
                        "src": "10709:25:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 292,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10709:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10708:27:0"
                  },
                  "returnParameters": {
                    "id": 295,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10744:0:0"
                  },
                  "scope": 507,
                  "src": "10676:69:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 297,
                    "nodeType": "StructuredDocumentation",
                    "src": "10751:368:0",
                    "text": "@dev   Sets the Liquidity Pool cooldown period. \n@dev   This change will affect the existing cool down period for the LPs that already intended to withdraw. \n@dev   Only the Governor can call this function. \n@dev   It emits a `GlobalsParamSet` event. \n@param newCooldownPeriod The new value for the cool down period."
                  },
                  "functionSelector": "8608a6e1",
                  "id": 302,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setLpCooldownPeriod",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 300,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 299,
                        "mutability": "mutable",
                        "name": "newCooldownPeriod",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 302,
                        "src": "11153:25:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 298,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11153:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11152:27:0"
                  },
                  "returnParameters": {
                    "id": 301,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11188:0:0"
                  },
                  "scope": 507,
                  "src": "11124:65:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 303,
                    "nodeType": "StructuredDocumentation",
                    "src": "11195:349:0",
                    "text": "@dev   Sets the Staker unstake window. \n@dev   This change will affect the existing window for the Stakers that already intended to unstake. \n@dev   Only the Governor can call this function. \n@dev   It emits a `GlobalsParamSet` event. \n@param newUnstakeWindow The new value for the unstake window."
                  },
                  "functionSelector": "d1cdf301",
                  "id": 308,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setStakerUnstakeWindow",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 306,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 305,
                        "mutability": "mutable",
                        "name": "newUnstakeWindow",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 308,
                        "src": "11581:24:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 304,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11581:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11580:26:0"
                  },
                  "returnParameters": {
                    "id": 307,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11615:0:0"
                  },
                  "scope": 507,
                  "src": "11549:67:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 309,
                    "nodeType": "StructuredDocumentation",
                    "src": "11622:359:0",
                    "text": "@dev   Sets the Liquidity Pool withdraw window. \n@dev   This change will affect the existing window for the LPs that already intended to withdraw. \n@dev   Only the Governor can call this function. \n@dev   It emits a `GlobalsParamSet` event. \n@param newLpWithdrawWindow The new value for the withdraw window."
                  },
                  "functionSelector": "26718606",
                  "id": 314,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setLpWithdrawWindow",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 312,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 311,
                        "mutability": "mutable",
                        "name": "newLpWithdrawWindow",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 314,
                        "src": "12015:27:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 310,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12015:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12014:29:0"
                  },
                  "returnParameters": {
                    "id": 313,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12052:0:0"
                  },
                  "scope": 507,
                  "src": "11986:67:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 315,
                    "nodeType": "StructuredDocumentation",
                    "src": "12059:280:0",
                    "text": "@dev   Sets the allowed Uniswap slippage percentage, in basis points. \n@dev   Only the Governor can call this function. \n@dev   It emits a `GlobalsParamSet` event. \n@param newMaxSlippage The new max slippage percentage (in basis points)"
                  },
                  "functionSelector": "f33ef09a",
                  "id": 320,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setMaxSwapSlippage",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 318,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 317,
                        "mutability": "mutable",
                        "name": "newMaxSlippage",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 320,
                        "src": "12372:22:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 316,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12372:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12371:24:0"
                  },
                  "returnParameters": {
                    "id": 319,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12404:0:0"
                  },
                  "scope": 507,
                  "src": "12344:61:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 321,
                    "nodeType": "StructuredDocumentation",
                    "src": "12411:211:0",
                    "text": "@dev   Sets the Global Admin. \n@dev   Only the Governor can call this function. \n@dev   It emits a `GlobalAdminSet` event. \n@param newGlobalAdmin The new global admin address."
                  },
                  "functionSelector": "c52bc31d",
                  "id": 326,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setGlobalAdmin",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 324,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 323,
                        "mutability": "mutable",
                        "name": "newGlobalAdmin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 326,
                        "src": "12651:22:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 322,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12651:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12650:24:0"
                  },
                  "returnParameters": {
                    "id": 325,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12683:0:0"
                  },
                  "scope": 507,
                  "src": "12627:57:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 327,
                    "nodeType": "StructuredDocumentation",
                    "src": "12690:314:0",
                    "text": "@dev   Sets the validity of a Balancer Pool. \n@dev   Only the Governor can call this function. \n@dev   It emits a `BalancerPoolSet` event. \n@param balancerPool The address of Balancer Pool contract.\n@param valid        The new validity status of a Balancer Pool."
                  },
                  "functionSelector": "490dae64",
                  "id": 334,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setValidBalancerPool",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 332,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 329,
                        "mutability": "mutable",
                        "name": "balancerPool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 334,
                        "src": "13039:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 328,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13039:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 331,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 334,
                        "src": "13061:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 330,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13061:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13038:34:0"
                  },
                  "returnParameters": {
                    "id": 333,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13081:0:0"
                  },
                  "scope": 507,
                  "src": "13009:73:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 335,
                    "nodeType": "StructuredDocumentation",
                    "src": "13088:290:0",
                    "text": "@dev   Sets the paused/unpaused state of the protocol. \n@dev   Only the Global Admin can call this function. \n@dev   It emits a `ProtocolPaused` event. \n@param pause A boolean flag to switch externally facing functionality in the protocol on/off."
                  },
                  "functionSelector": "4e989118",
                  "id": 340,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setProtocolPause",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 338,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 337,
                        "mutability": "mutable",
                        "name": "pause",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 340,
                        "src": "13409:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 336,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13409:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13408:12:0"
                  },
                  "returnParameters": {
                    "id": 339,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13429:0:0"
                  },
                  "scope": 507,
                  "src": "13383:47:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 341,
                    "nodeType": "StructuredDocumentation",
                    "src": "13436:247:0",
                    "text": "@dev   Sets the validity of a PoolFactory. \n@dev   Only the Governor can call this function. \n@param poolFactory The address of a PoolFactory.\n@param valid       The new validity status of `poolFactory`."
                  },
                  "functionSelector": "6597b899",
                  "id": 348,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setValidPoolFactory",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 346,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 343,
                        "mutability": "mutable",
                        "name": "poolFactory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 348,
                        "src": "13717:19:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 342,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13717:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 345,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 348,
                        "src": "13738:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 344,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13738:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13716:33:0"
                  },
                  "returnParameters": {
                    "id": 347,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13758:0:0"
                  },
                  "scope": 507,
                  "src": "13688:71:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 349,
                    "nodeType": "StructuredDocumentation",
                    "src": "13765:247:0",
                    "text": "@dev   Sets the validity of a LoanFactory. \n@dev   Only the Governor can call this function. \n@param loanFactory The address of a LoanFactory.\n@param valid       The new validity status of `loanFactory`."
                  },
                  "functionSelector": "c9c67240",
                  "id": 356,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setValidLoanFactory",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 354,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 351,
                        "mutability": "mutable",
                        "name": "loanFactory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 356,
                        "src": "14046:19:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 350,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14046:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 353,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 356,
                        "src": "14067:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 352,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "14067:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14045:33:0"
                  },
                  "returnParameters": {
                    "id": 355,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14087:0:0"
                  },
                  "scope": 507,
                  "src": "14017:71:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 357,
                    "nodeType": "StructuredDocumentation",
                    "src": "14094:428:0",
                    "text": "@dev   Sets the validity of `subFactory` as it relates to `superFactory`. \n@dev   Only the Governor can call this function. \n@param superFactory The core factory (e.g. PoolFactory, LoanFactory).\n@param subFactory   The sub factory used by core factory (e.g. LiquidityLockerFactory).\n@param valid        The new validity status of `subFactory` within context of `superFactory`."
                  },
                  "functionSelector": "f85ee6f8",
                  "id": 366,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setValidSubFactory",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 364,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 359,
                        "mutability": "mutable",
                        "name": "superFactory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 366,
                        "src": "14555:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 358,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14555:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 361,
                        "mutability": "mutable",
                        "name": "subFactory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 366,
                        "src": "14577:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 360,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14577:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 363,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 366,
                        "src": "14597:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 362,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "14597:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14554:54:0"
                  },
                  "returnParameters": {
                    "id": 365,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14617:0:0"
                  },
                  "scope": 507,
                  "src": "14527:91:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 367,
                    "nodeType": "StructuredDocumentation",
                    "src": "14624:472:0",
                    "text": "@dev   Sets the path to swap an asset through Uniswap. \n@dev   Only the Governor can call this function. \n@dev   Set to == mid to enable a bilateral swap (single path swap). \n@dev   Set to != mid to enable a triangular swap (multi path swap). \n@param from The address of the asset being swapped.\n@param to   The address of the final asset to receive.\n@param mid  The intermediary asset for swaps, if any."
                  },
                  "functionSelector": "f3897663",
                  "id": 376,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setDefaultUniswapPath",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 374,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 369,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 376,
                        "src": "15132:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 368,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15132:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 371,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 376,
                        "src": "15146:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 370,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15146:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 373,
                        "mutability": "mutable",
                        "name": "mid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 376,
                        "src": "15158:11:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 372,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15158:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15131:39:0"
                  },
                  "returnParameters": {
                    "id": 375,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15179:0:0"
                  },
                  "scope": 507,
                  "src": "15101:79:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 377,
                    "nodeType": "StructuredDocumentation",
                    "src": "15186:346:0",
                    "text": "@dev   Sets the validity of a Pool Delegate (those allowed to create Pools). \n@dev   Only the Governor can call this function. \n@dev   It emits a `PoolDelegateSet` event. \n@param poolDelegate The address to manage permissions for.\n@param valid        The new validity status of a Pool Delegate."
                  },
                  "functionSelector": "efdb16fc",
                  "id": 384,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setPoolDelegateAllowlist",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 382,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 379,
                        "mutability": "mutable",
                        "name": "poolDelegate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 384,
                        "src": "15571:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 378,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15571:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 381,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 384,
                        "src": "15593:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 380,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "15593:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15570:34:0"
                  },
                  "returnParameters": {
                    "id": 383,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15613:0:0"
                  },
                  "scope": 507,
                  "src": "15537:77:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 385,
                    "nodeType": "StructuredDocumentation",
                    "src": "15620:308:0",
                    "text": "@dev   Sets the validity of an asset for collateral. \n@dev   Only the Governor can call this function. \n@dev   It emits a `CollateralAssetSet` event. \n@param asset The asset to assign validity to.\n@param valid The new validity status of a Collateral Asset."
                  },
                  "functionSelector": "2fa6c88f",
                  "id": 392,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setCollateralAsset",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 390,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 387,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 392,
                        "src": "15961:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 386,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15961:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 389,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 392,
                        "src": "15976:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 388,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "15976:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15960:27:0"
                  },
                  "returnParameters": {
                    "id": 391,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15996:0:0"
                  },
                  "scope": 507,
                  "src": "15933:64:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 393,
                    "nodeType": "StructuredDocumentation",
                    "src": "16003:320:0",
                    "text": "@dev   Sets the validity of an asset for liquidity in Pools. \n@dev   Only the Governor can call this function. \n@dev   It emits a `LiquidityAssetSet` event. \n@param asset The asset to assign validity to.\n@param valid The new validity status a Liquidity Asset in Pools."
                  },
                  "functionSelector": "2daa0d89",
                  "id": 400,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setLiquidityAsset",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 398,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 395,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 400,
                        "src": "16355:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 394,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16355:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 397,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 400,
                        "src": "16370:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 396,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "16370:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16354:27:0"
                  },
                  "returnParameters": {
                    "id": 399,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16390:0:0"
                  },
                  "scope": 507,
                  "src": "16328:63:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 401,
                    "nodeType": "StructuredDocumentation",
                    "src": "16397:236:0",
                    "text": "@dev   Sets the validity of a calculator contract. \n@dev   Only the Governor can call this function. \n@param calc  The Calculator address.\n@param valid The new validity status of a Calculator."
                  },
                  "functionSelector": "be44ed6b",
                  "id": 408,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setCalc",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 406,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 403,
                        "mutability": "mutable",
                        "name": "calc",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 408,
                        "src": "16655:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 402,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16655:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 405,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 408,
                        "src": "16669:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 404,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "16669:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16654:26:0"
                  },
                  "returnParameters": {
                    "id": 407,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16689:0:0"
                  },
                  "scope": 507,
                  "src": "16638:52:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 409,
                    "nodeType": "StructuredDocumentation",
                    "src": "16696:225:0",
                    "text": "@dev   Sets the investor fee (in basis points). \n@dev   Only the Governor can call this function. \n@dev   It emits a `GlobalsParamSet` event. \n@param _fee The fee, e.g., 50 = 0.50%."
                  },
                  "functionSelector": "5e045467",
                  "id": 414,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setInvestorFee",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 412,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 411,
                        "mutability": "mutable",
                        "name": "_fee",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 414,
                        "src": "16950:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 410,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16950:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16949:14:0"
                  },
                  "returnParameters": {
                    "id": 413,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16972:0:0"
                  },
                  "scope": 507,
                  "src": "16926:47:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 415,
                    "nodeType": "StructuredDocumentation",
                    "src": "16979:225:0",
                    "text": "@dev   Sets the treasury fee (in basis points). \n@dev   Only the Governor can call this function. \n@dev   It emits a `GlobalsParamSet` event. \n@param _fee The fee, e.g., 50 = 0.50%."
                  },
                  "functionSelector": "77e741c7",
                  "id": 420,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setTreasuryFee",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 418,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 417,
                        "mutability": "mutable",
                        "name": "_fee",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 420,
                        "src": "17233:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 416,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17233:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17232:14:0"
                  },
                  "returnParameters": {
                    "id": 419,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17255:0:0"
                  },
                  "scope": 507,
                  "src": "17209:47:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 421,
                    "nodeType": "StructuredDocumentation",
                    "src": "17262:220:0",
                    "text": "@dev   Sets the MapleTreasury. \n@dev   Only the Governor can call this function. \n@dev   It emits a `GlobalsParamSet` event. \n@param _mapleTreasury A new MapleTreasury address."
                  },
                  "functionSelector": "7303de25",
                  "id": 426,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setMapleTreasury",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 424,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 423,
                        "mutability": "mutable",
                        "name": "_mapleTreasury",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 426,
                        "src": "17513:22:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 422,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17513:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17512:24:0"
                  },
                  "returnParameters": {
                    "id": 425,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17545:0:0"
                  },
                  "scope": 507,
                  "src": "17487:59:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 427,
                    "nodeType": "StructuredDocumentation",
                    "src": "17552:257:0",
                    "text": "@dev   Sets the default grace period. \n@dev   Only the Governor can call this function. \n@dev   It emits a `GlobalsParamSet` event. \n@param _defaultGracePeriod The new number of seconds to set the grace period to."
                  },
                  "functionSelector": "44c14f71",
                  "id": 432,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setDefaultGracePeriod",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 430,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 429,
                        "mutability": "mutable",
                        "name": "_defaultGracePeriod",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 432,
                        "src": "17845:27:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 428,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17845:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17844:29:0"
                  },
                  "returnParameters": {
                    "id": 431,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17882:0:0"
                  },
                  "scope": 507,
                  "src": "17814:69:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 433,
                    "nodeType": "StructuredDocumentation",
                    "src": "17889:285:0",
                    "text": "@dev   Sets the minimum Loan equity. \n@dev   Only the Governor can call this function. \n@dev   It emits a `GlobalsParamSet` event. \n@param _minLoanEquity The new minimum percentage of Loan equity an account must have to trigger liquidations."
                  },
                  "functionSelector": "298b795d",
                  "id": 438,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setMinLoanEquity",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 436,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 435,
                        "mutability": "mutable",
                        "name": "_minLoanEquity",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 438,
                        "src": "18205:22:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 434,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18205:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18204:24:0"
                  },
                  "returnParameters": {
                    "id": 437,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18237:0:0"
                  },
                  "scope": 507,
                  "src": "18179:59:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 439,
                    "nodeType": "StructuredDocumentation",
                    "src": "18244:251:0",
                    "text": "@dev   Sets the funding period. \n@dev   Only the Governor can call this function. \n@dev   It emits a `GlobalsParamSet` event. \n@param _fundingPeriod The number of seconds to set the drawdown grace period to."
                  },
                  "functionSelector": "2a5aa292",
                  "id": 444,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setFundingPeriod",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 442,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 441,
                        "mutability": "mutable",
                        "name": "_fundingPeriod",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 444,
                        "src": "18526:22:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 440,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18526:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18525:24:0"
                  },
                  "returnParameters": {
                    "id": 443,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18558:0:0"
                  },
                  "scope": 507,
                  "src": "18500:59:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 445,
                    "nodeType": "StructuredDocumentation",
                    "src": "18565:252:0",
                    "text": "@dev   Sets the the minimum Pool cover required to finalize a Pool. \n@dev   Only the Governor can call this function. \n@dev   It emits a `GlobalsParamSet` event. \n@param amt The new minimum swap out required."
                  },
                  "functionSelector": "dbc6c552",
                  "id": 450,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setSwapOutRequired",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 448,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 447,
                        "mutability": "mutable",
                        "name": "amt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 450,
                        "src": "18850:11:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 446,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18850:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18849:13:0"
                  },
                  "returnParameters": {
                    "id": 449,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18871:0:0"
                  },
                  "scope": 507,
                  "src": "18822:50:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 451,
                    "nodeType": "StructuredDocumentation",
                    "src": "18878:282:0",
                    "text": "@dev   Sets a price feed's oracle. \n@dev   Only the Governor can call this function. \n@dev   It emits a `OracleSet` event. \n@param asset  The asset to update price for.\n@param oracle The new Oracle to use for the price of `asset`."
                  },
                  "functionSelector": "67a74ddc",
                  "id": 458,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setPriceOracle",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 456,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 453,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 458,
                        "src": "19189:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 452,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19189:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 455,
                        "mutability": "mutable",
                        "name": "oracle",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 458,
                        "src": "19204:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 454,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19204:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "19188:31:0"
                  },
                  "returnParameters": {
                    "id": 457,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "19228:0:0"
                  },
                  "scope": 507,
                  "src": "19165:64:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 459,
                    "nodeType": "StructuredDocumentation",
                    "src": "19235:305:0",
                    "text": "@dev   Sets a new Pending Governor. \n@dev   This address can become Governor if they accept. \n@dev   Only the Governor can call this function. \n@dev   It emits a `PendingGovernorSet` event. \n@param _pendingGovernor The address of a new Pending Governor."
                  },
                  "functionSelector": "f235757f",
                  "id": 464,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setPendingGovernor",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 462,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 461,
                        "mutability": "mutable",
                        "name": "_pendingGovernor",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 464,
                        "src": "19573:24:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 460,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19573:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "19572:26:0"
                  },
                  "returnParameters": {
                    "id": 463,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "19607:0:0"
                  },
                  "scope": 507,
                  "src": "19545:63:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 465,
                    "nodeType": "StructuredDocumentation",
                    "src": "19614:170:0",
                    "text": "@dev Accept the Governor position. \n@dev Only the Pending Governor can call this function. \n@dev It emits a `GovernorAccepted` event. "
                  },
                  "functionSelector": "e58bb639",
                  "id": 468,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "acceptGovernor",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 466,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "19812:2:0"
                  },
                  "returnParameters": {
                    "id": 467,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "19823:0:0"
                  },
                  "scope": 507,
                  "src": "19789:35:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 469,
                    "nodeType": "StructuredDocumentation",
                    "src": "19830:171:0",
                    "text": "@dev    Fetch price for asset from Chainlink oracles.\n@param  asset The asset to fetch the price of.\n@return The price of asset in USD."
                  },
                  "functionSelector": "16345f18",
                  "id": 476,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLatestPrice",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 472,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 471,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 476,
                        "src": "20030:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 470,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "20030:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20029:15:0"
                  },
                  "returnParameters": {
                    "id": 475,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 474,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 476,
                        "src": "20068:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 473,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20068:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20067:9:0"
                  },
                  "scope": 507,
                  "src": "20006:71:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 477,
                    "nodeType": "StructuredDocumentation",
                    "src": "20083:641:0",
                    "text": "@dev   Checks that a `subFactory` is valid as it relates to `superFactory`.\n@param superFactory The core factory (e.g. PoolFactory, LoanFactory).\n@param subFactory   The sub factory used by core factory (e.g. LiquidityLockerFactory).\n@param factoryType  The type expected for the subFactory. \n0 = COLLATERAL_LOCKER_FACTORY, \n1 = DEBT_LOCKER_FACTORY, \n2 = FUNDING_LOCKER_FACTORY, \n3 = LIQUIDITY_LOCKER_FACTORY, \n4 = STAKE_LOCKER_FACTORY. "
                  },
                  "functionSelector": "13d459fb",
                  "id": 488,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidSubFactory",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 484,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 479,
                        "mutability": "mutable",
                        "name": "superFactory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 488,
                        "src": "20756:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 478,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "20756:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 481,
                        "mutability": "mutable",
                        "name": "subFactory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 488,
                        "src": "20778:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 480,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "20778:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 483,
                        "mutability": "mutable",
                        "name": "factoryType",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 488,
                        "src": "20798:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 482,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "20798:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20755:61:0"
                  },
                  "returnParameters": {
                    "id": 487,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 486,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 488,
                        "src": "20840:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 485,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "20840:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20839:6:0"
                  },
                  "scope": 507,
                  "src": "20729:117:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 489,
                    "nodeType": "StructuredDocumentation",
                    "src": "20852:154:0",
                    "text": "@dev   Checks that a Calculator is valid.\n@param calc     The Calculator address.\n@param calcType The Calculator type."
                  },
                  "functionSelector": "1b5833f7",
                  "id": 498,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidCalc",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 494,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 491,
                        "mutability": "mutable",
                        "name": "calc",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 498,
                        "src": "21032:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 490,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "21032:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 493,
                        "mutability": "mutable",
                        "name": "calcType",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 498,
                        "src": "21046:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 492,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "21046:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21031:30:0"
                  },
                  "returnParameters": {
                    "id": 497,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 496,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 498,
                        "src": "21085:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 495,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "21085:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21084:6:0"
                  },
                  "scope": 507,
                  "src": "21011:80:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 499,
                    "nodeType": "StructuredDocumentation",
                    "src": "21097:208:0",
                    "text": "@dev    Returns the `lpCooldownPeriod` and `lpWithdrawWindow` as a tuple, for convenience.\n@return The value of `lpCooldownPeriod`.\n@return The value of `lpWithdrawWindow`."
                  },
                  "functionSelector": "9f51290b",
                  "id": 506,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLpCooldownParams",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 500,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21338:2:0"
                  },
                  "returnParameters": {
                    "id": 505,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 502,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 506,
                        "src": "21364:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 501,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21364:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 504,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 506,
                        "src": "21373:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 503,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21373:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21363:18:0"
                  },
                  "scope": 507,
                  "src": "21310:72:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1715,
              "src": "739:20646:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 508,
                "nodeType": "StructuredDocumentation",
                "src": "21473:42:0",
                "text": "@title Oracle is a price oracle feed."
              },
              "fullyImplemented": false,
              "id": 515,
              "linearizedBaseContracts": [
                515
              ],
              "name": "IOracle",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": {
                    "id": 509,
                    "nodeType": "StructuredDocumentation",
                    "src": "21540:56:0",
                    "text": "@dev Returns the price of the asset."
                  },
                  "functionSelector": "8e15f473",
                  "id": 514,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLatestPrice",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 510,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21624:2:0"
                  },
                  "returnParameters": {
                    "id": 513,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 512,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 514,
                        "src": "21650:6:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 511,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21650:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21649:8:0"
                  },
                  "scope": 515,
                  "src": "21601:57:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1715,
              "src": "21515:146:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 516,
                "nodeType": "StructuredDocumentation",
                "src": "21757:71:0",
                "text": "@title SubFactory creates instances downstream of another factory."
              },
              "fullyImplemented": false,
              "id": 523,
              "linearizedBaseContracts": [
                523
              ],
              "name": "ISubFactory",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": {
                    "id": 517,
                    "nodeType": "StructuredDocumentation",
                    "src": "21857:48:0",
                    "text": "@dev The type of the factory"
                  },
                  "functionSelector": "64e1fd55",
                  "id": 522,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "factoryType",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 518,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21930:2:0"
                  },
                  "returnParameters": {
                    "id": 521,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 520,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 522,
                        "src": "21956:5:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 519,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "21956:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21955:7:0"
                  },
                  "scope": 523,
                  "src": "21910:53:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1715,
              "src": "21828:138:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 524,
                "nodeType": "StructuredDocumentation",
                "src": "22074:70:0",
                "text": " @dev Interface of the ERC20 standard as defined in the EIP."
              },
              "fullyImplemented": false,
              "id": 599,
              "linearizedBaseContracts": [
                599
              ],
              "name": "IERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": {
                    "id": 525,
                    "nodeType": "StructuredDocumentation",
                    "src": "22168:66:0",
                    "text": " @dev Returns the amount of tokens in existence."
                  },
                  "functionSelector": "18160ddd",
                  "id": 530,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 526,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22259:2:0"
                  },
                  "returnParameters": {
                    "id": 529,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 528,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 530,
                        "src": "22285:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 527,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22285:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22284:9:0"
                  },
                  "scope": 599,
                  "src": "22239:55:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 531,
                    "nodeType": "StructuredDocumentation",
                    "src": "22300:72:0",
                    "text": " @dev Returns the amount of tokens owned by `account`."
                  },
                  "functionSelector": "70a08231",
                  "id": 538,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 534,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 533,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 538,
                        "src": "22396:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 532,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22396:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22395:17:0"
                  },
                  "returnParameters": {
                    "id": 537,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 536,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 538,
                        "src": "22436:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 535,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22436:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22435:9:0"
                  },
                  "scope": 599,
                  "src": "22377:68:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 539,
                    "nodeType": "StructuredDocumentation",
                    "src": "22451:209:0",
                    "text": " @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
                  },
                  "functionSelector": "a9059cbb",
                  "id": 548,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 544,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 541,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 548,
                        "src": "22683:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 540,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22683:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 543,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 548,
                        "src": "22702:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 542,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22702:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22682:35:0"
                  },
                  "returnParameters": {
                    "id": 547,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 546,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 548,
                        "src": "22736:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 545,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "22736:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22735:6:0"
                  },
                  "scope": 599,
                  "src": "22665:77:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 549,
                    "nodeType": "StructuredDocumentation",
                    "src": "22748:264:0",
                    "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."
                  },
                  "functionSelector": "dd62ed3e",
                  "id": 558,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 554,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 551,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 558,
                        "src": "23036:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 550,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "23036:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 553,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 558,
                        "src": "23051:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 552,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "23051:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23035:32:0"
                  },
                  "returnParameters": {
                    "id": 557,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 556,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 558,
                        "src": "23091:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 555,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23091:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23090:9:0"
                  },
                  "scope": 599,
                  "src": "23017:83:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 559,
                    "nodeType": "StructuredDocumentation",
                    "src": "23106:642:0",
                    "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."
                  },
                  "functionSelector": "095ea7b3",
                  "id": 568,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 564,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 561,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 568,
                        "src": "23770:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 560,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "23770:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 563,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 568,
                        "src": "23787:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 562,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23787:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23769:33:0"
                  },
                  "returnParameters": {
                    "id": 567,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 566,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 568,
                        "src": "23821:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 565,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "23821:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23820:6:0"
                  },
                  "scope": 599,
                  "src": "23753:74:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 569,
                    "nodeType": "StructuredDocumentation",
                    "src": "23833:296:0",
                    "text": " @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
                  },
                  "functionSelector": "23b872dd",
                  "id": 580,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 576,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 571,
                        "mutability": "mutable",
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 580,
                        "src": "24156:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 570,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "24156:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 573,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 580,
                        "src": "24172:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 572,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "24172:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 575,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 580,
                        "src": "24191:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 574,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24191:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "24155:51:0"
                  },
                  "returnParameters": {
                    "id": 579,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 578,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 580,
                        "src": "24225:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 577,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "24225:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "24224:6:0"
                  },
                  "scope": 599,
                  "src": "24134:97:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 581,
                    "nodeType": "StructuredDocumentation",
                    "src": "24237:158:0",
                    "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."
                  },
                  "id": 589,
                  "name": "Transfer",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 588,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 583,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 589,
                        "src": "24415:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 582,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "24415:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 585,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 589,
                        "src": "24437:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 584,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "24437:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 587,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 589,
                        "src": "24457:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 586,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24457:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "24414:57:0"
                  },
                  "src": "24400:72:0"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 590,
                    "nodeType": "StructuredDocumentation",
                    "src": "24478:148:0",
                    "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."
                  },
                  "id": 598,
                  "name": "Approval",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 597,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 592,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 598,
                        "src": "24646:21:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 591,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "24646:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 594,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 598,
                        "src": "24669:23:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 593,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "24669:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 596,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 598,
                        "src": "24694:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 595,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24694:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "24645:63:0"
                  },
                  "src": "24631:78:0"
                }
              ],
              "scope": 1715,
              "src": "22145:2566:0"
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 600,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 599,
                    "src": "24925:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$599",
                      "typeString": "contract IERC20"
                    }
                  },
                  "id": 601,
                  "nodeType": "InheritanceSpecifier",
                  "src": "24925:6:0"
                }
              ],
              "contractDependencies": [
                599
              ],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 617,
              "linearizedBaseContracts": [
                617,
                599
              ],
              "name": "IERC20Details",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "06fdde03",
                  "id": 606,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 602,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24952:2:0"
                  },
                  "returnParameters": {
                    "id": 605,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 604,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 606,
                        "src": "24978:13:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 603,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "24978:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "24977:15:0"
                  },
                  "scope": 617,
                  "src": "24939:54:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "95d89b41",
                  "id": 611,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 607,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "25014:2:0"
                  },
                  "returnParameters": {
                    "id": 610,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 609,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 611,
                        "src": "25040:13:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 608,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "25040:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "25039:15:0"
                  },
                  "scope": 617,
                  "src": "24999:56:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "313ce567",
                  "id": 616,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decimals",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 612,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "25078:2:0"
                  },
                  "returnParameters": {
                    "id": 615,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 614,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 616,
                        "src": "25104:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 613,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "25104:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "25103:9:0"
                  },
                  "scope": 617,
                  "src": "25061:52:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1715,
              "src": "24898:218:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 618,
                "nodeType": "StructuredDocumentation",
                "src": "25219:563:0",
                "text": " @dev Wrappers over Solidity's arithmetic operations with added overflow\n checks.\n Arithmetic operations in Solidity wrap on overflow. This can easily result\n in bugs, because programmers usually assume that an overflow raises an\n error, which is the standard behavior in high level programming languages.\n `SafeMath` restores this intuition by reverting the transaction when an\n operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always."
              },
              "fullyImplemented": true,
              "id": 811,
              "linearizedBaseContracts": [
                811
              ],
              "name": "SafeMath",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 643,
                    "nodeType": "Block",
                    "src": "26102:109:0",
                    "statements": [
                      {
                        "assignments": [
                          629
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 629,
                            "mutability": "mutable",
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 643,
                            "src": "26112:9:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 628,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "26112:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 633,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 632,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 630,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 621,
                            "src": "26124:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 631,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 623,
                            "src": "26128:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26124:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "26112:17:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 637,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 635,
                                "name": "c",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 629,
                                "src": "26147:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 636,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 621,
                                "src": "26152:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "26147:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "536166654d6174683a206164646974696f6e206f766572666c6f77",
                              "id": 638,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "26155:29:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a",
                                "typeString": "literal_string \"SafeMath: addition overflow\""
                              },
                              "value": "SafeMath: addition overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a",
                                "typeString": "literal_string \"SafeMath: addition overflow\""
                              }
                            ],
                            "id": 634,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "26139:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 639,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26139:46:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 640,
                        "nodeType": "ExpressionStatement",
                        "src": "26139:46:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 641,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 629,
                          "src": "26203:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 627,
                        "id": 642,
                        "nodeType": "Return",
                        "src": "26196:8:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 619,
                    "nodeType": "StructuredDocumentation",
                    "src": "25806:224:0",
                    "text": " @dev Returns the addition of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow."
                  },
                  "id": 644,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 624,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 621,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 644,
                        "src": "26048:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 620,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26048:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 623,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 644,
                        "src": "26059:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 622,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26059:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "26047:22:0"
                  },
                  "returnParameters": {
                    "id": 627,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 626,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 644,
                        "src": "26093:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 625,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26093:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "26092:9:0"
                  },
                  "scope": 811,
                  "src": "26035:176:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 660,
                    "nodeType": "Block",
                    "src": "26549:67:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 655,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 647,
                              "src": "26570:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 656,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 649,
                              "src": "26573:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "536166654d6174683a207375627472616374696f6e206f766572666c6f77",
                              "id": 657,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "26576:32:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862",
                                "typeString": "literal_string \"SafeMath: subtraction overflow\""
                              },
                              "value": "SafeMath: subtraction overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862",
                                "typeString": "literal_string \"SafeMath: subtraction overflow\""
                              }
                            ],
                            "id": 654,
                            "name": "sub",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              661,
                              689
                            ],
                            "referencedDeclaration": 689,
                            "src": "26566:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                            }
                          },
                          "id": 658,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26566:43:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 653,
                        "id": 659,
                        "nodeType": "Return",
                        "src": "26559:50:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 645,
                    "nodeType": "StructuredDocumentation",
                    "src": "26217:260:0",
                    "text": " @dev Returns the subtraction of two unsigned integers, reverting on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."
                  },
                  "id": 661,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sub",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 650,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 647,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 661,
                        "src": "26495:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 646,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26495:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 649,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 661,
                        "src": "26506:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 648,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26506:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "26494:22:0"
                  },
                  "returnParameters": {
                    "id": 653,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 652,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 661,
                        "src": "26540:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 651,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26540:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "26539:9:0"
                  },
                  "scope": 811,
                  "src": "26482:134:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 688,
                    "nodeType": "Block",
                    "src": "27002:92:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 676,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 674,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 666,
                                "src": "27020:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 675,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 664,
                                "src": "27025:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "27020:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 677,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 668,
                              "src": "27028:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 673,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "27012:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 678,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27012:29:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 679,
                        "nodeType": "ExpressionStatement",
                        "src": "27012:29:0"
                      },
                      {
                        "assignments": [
                          681
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 681,
                            "mutability": "mutable",
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 688,
                            "src": "27051:9:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 680,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "27051:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 685,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 684,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 682,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 664,
                            "src": "27063:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 683,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 666,
                            "src": "27067:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "27063:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "27051:17:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 686,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 681,
                          "src": "27086:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 672,
                        "id": 687,
                        "nodeType": "Return",
                        "src": "27079:8:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 662,
                    "nodeType": "StructuredDocumentation",
                    "src": "26622:280:0",
                    "text": " @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."
                  },
                  "id": 689,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sub",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 669,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 664,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 689,
                        "src": "26920:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 663,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26920:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 666,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 689,
                        "src": "26931:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 665,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26931:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 668,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 689,
                        "src": "26942:26:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 667,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "26942:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "26919:50:0"
                  },
                  "returnParameters": {
                    "id": 672,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 671,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 689,
                        "src": "26993:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 670,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26993:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "26992:9:0"
                  },
                  "scope": 811,
                  "src": "26907:187:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 723,
                    "nodeType": "Block",
                    "src": "27408:392:0",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 701,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 699,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 692,
                            "src": "27640:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 700,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "27645:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "27640:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 705,
                        "nodeType": "IfStatement",
                        "src": "27636:45:0",
                        "trueBody": {
                          "id": 704,
                          "nodeType": "Block",
                          "src": "27648:33:0",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 702,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "27669:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 698,
                              "id": 703,
                              "nodeType": "Return",
                              "src": "27662:8:0"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          707
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 707,
                            "mutability": "mutable",
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 723,
                            "src": "27691:9:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 706,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "27691:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 711,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 710,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 708,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 692,
                            "src": "27703:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 709,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 694,
                            "src": "27707:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "27703:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "27691:17:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 717,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 715,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 713,
                                  "name": "c",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 707,
                                  "src": "27726:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 714,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 692,
                                  "src": "27730:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "27726:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 716,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 694,
                                "src": "27735:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "27726:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77",
                              "id": 718,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "27738:35:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3",
                                "typeString": "literal_string \"SafeMath: multiplication overflow\""
                              },
                              "value": "SafeMath: multiplication overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3",
                                "typeString": "literal_string \"SafeMath: multiplication overflow\""
                              }
                            ],
                            "id": 712,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "27718:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 719,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27718:56:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 720,
                        "nodeType": "ExpressionStatement",
                        "src": "27718:56:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 721,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 707,
                          "src": "27792:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 698,
                        "id": 722,
                        "nodeType": "Return",
                        "src": "27785:8:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 690,
                    "nodeType": "StructuredDocumentation",
                    "src": "27100:236:0",
                    "text": " @dev Returns the multiplication of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `*` operator.\n Requirements:\n - Multiplication cannot overflow."
                  },
                  "id": 724,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mul",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 695,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 692,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 724,
                        "src": "27354:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 691,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "27354:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 694,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 724,
                        "src": "27365:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 693,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "27365:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "27353:22:0"
                  },
                  "returnParameters": {
                    "id": 698,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 697,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 724,
                        "src": "27399:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 696,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "27399:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "27398:9:0"
                  },
                  "scope": 811,
                  "src": "27341:459:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 740,
                    "nodeType": "Block",
                    "src": "28329:63:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 735,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 727,
                              "src": "28350:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 736,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 729,
                              "src": "28353:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "536166654d6174683a206469766973696f6e206279207a65726f",
                              "id": 737,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "28356:28:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f",
                                "typeString": "literal_string \"SafeMath: division by zero\""
                              },
                              "value": "SafeMath: division by zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f",
                                "typeString": "literal_string \"SafeMath: division by zero\""
                              }
                            ],
                            "id": 734,
                            "name": "div",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              741,
                              769
                            ],
                            "referencedDeclaration": 769,
                            "src": "28346:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                            }
                          },
                          "id": 738,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28346:39:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 733,
                        "id": 739,
                        "nodeType": "Return",
                        "src": "28339:46:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 725,
                    "nodeType": "StructuredDocumentation",
                    "src": "27806:451:0",
                    "text": " @dev Returns the integer division of two unsigned integers. Reverts on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."
                  },
                  "id": 741,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "div",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 730,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 727,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 741,
                        "src": "28275:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 726,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "28275:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 729,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 741,
                        "src": "28286:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 728,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "28286:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "28274:22:0"
                  },
                  "returnParameters": {
                    "id": 733,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 732,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 741,
                        "src": "28320:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 731,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "28320:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "28319:9:0"
                  },
                  "scope": 811,
                  "src": "28262:130:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 768,
                    "nodeType": "Block",
                    "src": "28969:177:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 756,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 754,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 746,
                                "src": "28987:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 755,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "28991:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "28987:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 757,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 748,
                              "src": "28994:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 753,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "28979:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 758,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28979:28:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 759,
                        "nodeType": "ExpressionStatement",
                        "src": "28979:28:0"
                      },
                      {
                        "assignments": [
                          761
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 761,
                            "mutability": "mutable",
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 768,
                            "src": "29017:9:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 760,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "29017:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 765,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 764,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 762,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 744,
                            "src": "29029:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 763,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 746,
                            "src": "29033:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "29029:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "29017:17:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 766,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 761,
                          "src": "29138:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 752,
                        "id": 767,
                        "nodeType": "Return",
                        "src": "29131:8:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 742,
                    "nodeType": "StructuredDocumentation",
                    "src": "28398:471:0",
                    "text": " @dev Returns the integer division of two unsigned integers. Reverts with custom message on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."
                  },
                  "id": 769,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "div",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 749,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 744,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 769,
                        "src": "28887:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 743,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "28887:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 746,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 769,
                        "src": "28898:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 745,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "28898:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 748,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 769,
                        "src": "28909:26:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 747,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "28909:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "28886:50:0"
                  },
                  "returnParameters": {
                    "id": 752,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 751,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 769,
                        "src": "28960:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 750,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "28960:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "28959:9:0"
                  },
                  "scope": 811,
                  "src": "28874:272:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 785,
                    "nodeType": "Block",
                    "src": "29664:61:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 780,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 772,
                              "src": "29685:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 781,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 774,
                              "src": "29688:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "536166654d6174683a206d6f64756c6f206279207a65726f",
                              "id": 782,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "29691:26:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832",
                                "typeString": "literal_string \"SafeMath: modulo by zero\""
                              },
                              "value": "SafeMath: modulo by zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832",
                                "typeString": "literal_string \"SafeMath: modulo by zero\""
                              }
                            ],
                            "id": 779,
                            "name": "mod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              786,
                              810
                            ],
                            "referencedDeclaration": 810,
                            "src": "29681:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                            }
                          },
                          "id": 783,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "29681:37:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 778,
                        "id": 784,
                        "nodeType": "Return",
                        "src": "29674:44:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 770,
                    "nodeType": "StructuredDocumentation",
                    "src": "29152:440:0",
                    "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n Reverts when dividing by zero.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."
                  },
                  "id": 786,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mod",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 775,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 772,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 786,
                        "src": "29610:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 771,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "29610:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 774,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 786,
                        "src": "29621:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 773,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "29621:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "29609:22:0"
                  },
                  "returnParameters": {
                    "id": 778,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 777,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 786,
                        "src": "29655:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 776,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "29655:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "29654:9:0"
                  },
                  "scope": 811,
                  "src": "29597:128:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 809,
                    "nodeType": "Block",
                    "src": "30291:68:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 801,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 799,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 791,
                                "src": "30309:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 800,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "30314:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "30309:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 802,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 793,
                              "src": "30317:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 798,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "30301:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 803,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30301:29:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 804,
                        "nodeType": "ExpressionStatement",
                        "src": "30301:29:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 807,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 805,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 789,
                            "src": "30347:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "%",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 806,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 791,
                            "src": "30351:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "30347:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 797,
                        "id": 808,
                        "nodeType": "Return",
                        "src": "30340:12:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 787,
                    "nodeType": "StructuredDocumentation",
                    "src": "29731:460:0",
                    "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n Reverts with custom message when dividing by zero.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."
                  },
                  "id": 810,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mod",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 794,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 789,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 810,
                        "src": "30209:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 788,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "30209:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 791,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 810,
                        "src": "30220:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 790,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "30220:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 793,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 810,
                        "src": "30231:26:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 792,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "30231:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "30208:50:0"
                  },
                  "returnParameters": {
                    "id": 797,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 796,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 810,
                        "src": "30282:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 795,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "30282:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "30281:9:0"
                  },
                  "scope": 811,
                  "src": "30196:163:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 1715,
              "src": "25783:4578:0"
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 813,
                    "name": "IMapleGlobals",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 507,
                    "src": "31112:13:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IMapleGlobals_$507",
                      "typeString": "contract IMapleGlobals"
                    }
                  },
                  "id": 814,
                  "nodeType": "InheritanceSpecifier",
                  "src": "31112:13:0"
                }
              ],
              "contractDependencies": [
                507
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 812,
                "nodeType": "StructuredDocumentation",
                "src": "30983:104:0",
                "text": "@title MapleGlobals maintains a central source of parameters and allowlists for the Maple protocol."
              },
              "fullyImplemented": true,
              "id": 1714,
              "linearizedBaseContracts": [
                1714,
                507
              ],
              "name": "MapleGlobals",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 817,
                  "libraryName": {
                    "contractScope": null,
                    "id": 815,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 811,
                    "src": "31139:8:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$811",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "31133:27:0",
                  "typeName": {
                    "id": 816,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "31152:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "baseFunctions": [
                    110
                  ],
                  "constant": false,
                  "functionSelector": "a0530946",
                  "id": 820,
                  "mutability": "immutable",
                  "name": "mpl",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 819,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "31181:8:0"
                  },
                  "scope": 1714,
                  "src": "31166:37:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 818,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "31166:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    116
                  ],
                  "constant": false,
                  "functionSelector": "e3056a34",
                  "id": 823,
                  "mutability": "mutable",
                  "name": "pendingGovernor",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 822,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "31225:8:0"
                  },
                  "scope": 1714,
                  "src": "31210:39:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 821,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "31210:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    122
                  ],
                  "constant": false,
                  "functionSelector": "0c340a24",
                  "id": 826,
                  "mutability": "mutable",
                  "name": "governor",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 825,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "31270:8:0"
                  },
                  "scope": 1714,
                  "src": "31255:32:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 824,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "31255:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    128
                  ],
                  "constant": false,
                  "functionSelector": "a5a27605",
                  "id": 829,
                  "mutability": "mutable",
                  "name": "mapleTreasury",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 828,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "31308:8:0"
                  },
                  "scope": 1714,
                  "src": "31293:37:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 827,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "31293:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    134
                  ],
                  "constant": false,
                  "functionSelector": "ec9a9368",
                  "id": 832,
                  "mutability": "mutable",
                  "name": "globalAdmin",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 831,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "31351:8:0"
                  },
                  "scope": 1714,
                  "src": "31336:35:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 830,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "31336:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    140
                  ],
                  "constant": false,
                  "functionSelector": "705d5f24",
                  "id": 835,
                  "mutability": "mutable",
                  "name": "defaultGracePeriod",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 834,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "31393:8:0"
                  },
                  "scope": 1714,
                  "src": "31378:42:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 833,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "31378:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    146
                  ],
                  "constant": false,
                  "functionSelector": "3106374c",
                  "id": 838,
                  "mutability": "mutable",
                  "name": "swapOutRequired",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 837,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "31441:8:0"
                  },
                  "scope": 1714,
                  "src": "31426:39:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 836,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "31426:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    152
                  ],
                  "constant": false,
                  "functionSelector": "74d7c62b",
                  "id": 841,
                  "mutability": "mutable",
                  "name": "fundingPeriod",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 840,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "31486:8:0"
                  },
                  "scope": 1714,
                  "src": "31471:37:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 839,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "31471:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    158
                  ],
                  "constant": false,
                  "functionSelector": "16a12d7a",
                  "id": 844,
                  "mutability": "mutable",
                  "name": "investorFee",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 843,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "31529:8:0"
                  },
                  "scope": 1714,
                  "src": "31514:35:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 842,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "31514:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    164
                  ],
                  "constant": false,
                  "functionSelector": "cc32d176",
                  "id": 847,
                  "mutability": "mutable",
                  "name": "treasuryFee",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 846,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "31570:8:0"
                  },
                  "scope": 1714,
                  "src": "31555:35:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 845,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "31555:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    170
                  ],
                  "constant": false,
                  "functionSelector": "55323195",
                  "id": 850,
                  "mutability": "mutable",
                  "name": "maxSwapSlippage",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 849,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "31611:8:0"
                  },
                  "scope": 1714,
                  "src": "31596:39:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 848,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "31596:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    176
                  ],
                  "constant": false,
                  "functionSelector": "4a2697c4",
                  "id": 853,
                  "mutability": "mutable",
                  "name": "minLoanEquity",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 852,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "31656:8:0"
                  },
                  "scope": 1714,
                  "src": "31641:37:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 851,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "31641:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    182
                  ],
                  "constant": false,
                  "functionSelector": "a965d6b5",
                  "id": 856,
                  "mutability": "mutable",
                  "name": "stakerCooldownPeriod",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 855,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "31699:8:0"
                  },
                  "scope": 1714,
                  "src": "31684:44:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 854,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "31684:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    188
                  ],
                  "constant": false,
                  "functionSelector": "dd02e0ec",
                  "id": 859,
                  "mutability": "mutable",
                  "name": "lpCooldownPeriod",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 858,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "31749:8:0"
                  },
                  "scope": 1714,
                  "src": "31734:40:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 857,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "31734:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    194
                  ],
                  "constant": false,
                  "functionSelector": "2018b870",
                  "id": 862,
                  "mutability": "mutable",
                  "name": "stakerUnstakeWindow",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 861,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "31795:8:0"
                  },
                  "scope": 1714,
                  "src": "31780:43:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 860,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "31780:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    200
                  ],
                  "constant": false,
                  "functionSelector": "df3d02bd",
                  "id": 865,
                  "mutability": "mutable",
                  "name": "lpWithdrawWindow",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 864,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "31844:8:0"
                  },
                  "scope": 1714,
                  "src": "31829:40:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 863,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "31829:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    206
                  ],
                  "constant": false,
                  "functionSelector": "425fad58",
                  "id": 868,
                  "mutability": "mutable",
                  "name": "protocolPaused",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 867,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "31888:8:0"
                  },
                  "scope": 1714,
                  "src": "31876:35:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 866,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "31876:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    214
                  ],
                  "constant": false,
                  "functionSelector": "8695118a",
                  "id": 873,
                  "mutability": "mutable",
                  "name": "isValidLiquidityAsset",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 872,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "31950:8:0"
                  },
                  "scope": 1714,
                  "src": "31918:62:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 871,
                    "keyType": {
                      "id": 869,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "31926:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "31918:24:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 870,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "31937:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    222
                  ],
                  "constant": false,
                  "functionSelector": "8c14834b",
                  "id": 878,
                  "mutability": "mutable",
                  "name": "isValidCollateralAsset",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 877,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "32018:8:0"
                  },
                  "scope": 1714,
                  "src": "31986:63:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 876,
                    "keyType": {
                      "id": 874,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "31994:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "31986:24:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 875,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "32005:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    230
                  ],
                  "constant": false,
                  "functionSelector": "1beb84e7",
                  "id": 883,
                  "mutability": "mutable",
                  "name": "validCalcs",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 882,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "32087:8:0"
                  },
                  "scope": 1714,
                  "src": "32055:51:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 881,
                    "keyType": {
                      "id": 879,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "32063:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "32055:24:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 880,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "32074:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    238
                  ],
                  "constant": false,
                  "functionSelector": "372e3546",
                  "id": 888,
                  "mutability": "mutable",
                  "name": "isValidPoolDelegate",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 887,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "32144:8:0"
                  },
                  "scope": 1714,
                  "src": "32112:60:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 886,
                    "keyType": {
                      "id": 884,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "32120:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "32112:24:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 885,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "32131:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    246
                  ],
                  "constant": false,
                  "functionSelector": "72a22d71",
                  "id": 893,
                  "mutability": "mutable",
                  "name": "isValidBalancerPool",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 892,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "32210:8:0"
                  },
                  "scope": 1714,
                  "src": "32178:60:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 891,
                    "keyType": {
                      "id": 889,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "32186:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "32178:24:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 890,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "32197:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    256
                  ],
                  "constant": false,
                  "functionSelector": "4d866592",
                  "id": 900,
                  "mutability": "mutable",
                  "name": "defaultUniswapPath",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 899,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "32300:8:0"
                  },
                  "scope": 1714,
                  "src": "32245:82:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                    "typeString": "mapping(address => mapping(address => address))"
                  },
                  "typeName": {
                    "id": 898,
                    "keyType": {
                      "id": 894,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "32253:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "32245:47:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                      "typeString": "mapping(address => mapping(address => address))"
                    },
                    "valueType": {
                      "id": 897,
                      "keyType": {
                        "id": 895,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "32272:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "32264:27:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                        "typeString": "mapping(address => address)"
                      },
                      "valueType": {
                        "id": 896,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "32283:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    264
                  ],
                  "constant": false,
                  "functionSelector": "aed019b9",
                  "id": 905,
                  "mutability": "mutable",
                  "name": "oracleFor",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 904,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "32369:8:0"
                  },
                  "scope": 1714,
                  "src": "32334:53:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                    "typeString": "mapping(address => address)"
                  },
                  "typeName": {
                    "id": 903,
                    "keyType": {
                      "id": 901,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "32342:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "32334:27:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                      "typeString": "mapping(address => address)"
                    },
                    "valueType": {
                      "id": 902,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "32353:7:0",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    272
                  ],
                  "constant": false,
                  "functionSelector": "107c0240",
                  "id": 910,
                  "mutability": "mutable",
                  "name": "isValidPoolFactory",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 909,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "32446:8:0"
                  },
                  "scope": 1714,
                  "src": "32394:79:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 908,
                    "keyType": {
                      "id": 906,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "32402:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "32394:24:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 907,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "32413:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    280
                  ],
                  "constant": false,
                  "functionSelector": "b53afda7",
                  "id": 915,
                  "mutability": "mutable",
                  "name": "isValidLoanFactory",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 914,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "32531:8:0"
                  },
                  "scope": 1714,
                  "src": "32479:79:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 913,
                    "keyType": {
                      "id": 911,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "32487:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "32479:24:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 912,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "32498:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    290
                  ],
                  "constant": false,
                  "functionSelector": "1b1804aa",
                  "id": 922,
                  "mutability": "mutable",
                  "name": "validSubFactories",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 921,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "32616:8:0"
                  },
                  "scope": 1714,
                  "src": "32564:78:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                    "typeString": "mapping(address => mapping(address => bool))"
                  },
                  "typeName": {
                    "id": 920,
                    "keyType": {
                      "id": 916,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "32572:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "32564:44:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                      "typeString": "mapping(address => mapping(address => bool))"
                    },
                    "valueType": {
                      "id": 919,
                      "keyType": {
                        "id": 917,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "32591:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "32583:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      },
                      "valueType": {
                        "id": 918,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "32602:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 934,
                    "nodeType": "Block",
                    "src": "32742:73:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 929,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 926,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "32760:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 927,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "32760:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 928,
                                "name": "governor",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 826,
                                "src": "32774:8:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "32760:22:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d473a4e4f545f474f56",
                              "id": 930,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "32784:12:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a336bfafe0b60a43cc9195c4abac027d7e608994423bd3dc4e16a7f23d60c2d0",
                                "typeString": "literal_string \"MG:NOT_GOV\""
                              },
                              "value": "MG:NOT_GOV"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a336bfafe0b60a43cc9195c4abac027d7e608994423bd3dc4e16a7f23d60c2d0",
                                "typeString": "literal_string \"MG:NOT_GOV\""
                              }
                            ],
                            "id": 925,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "32752:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 931,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "32752:45:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 932,
                        "nodeType": "ExpressionStatement",
                        "src": "32752:45:0"
                      },
                      {
                        "id": 933,
                        "nodeType": "PlaceholderStatement",
                        "src": "32807:1:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 923,
                    "nodeType": "StructuredDocumentation",
                    "src": "32649:66:0",
                    "text": "@dev Checks that `msg.sender` is the Governor."
                  },
                  "id": 935,
                  "name": "isGovernor",
                  "nodeType": "ModifierDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 924,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "32739:2:0"
                  },
                  "src": "32720:95:0",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1004,
                    "nodeType": "Block",
                    "src": "33189:670:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 947,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 945,
                            "name": "governor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 826,
                            "src": "33199:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 946,
                            "name": "_governor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 938,
                            "src": "33222:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "33199:32:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 948,
                        "nodeType": "ExpressionStatement",
                        "src": "33199:32:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 951,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 949,
                            "name": "mpl",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 820,
                            "src": "33241:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 950,
                            "name": "_mpl",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 940,
                            "src": "33264:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "33241:27:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 952,
                        "nodeType": "ExpressionStatement",
                        "src": "33241:27:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 955,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 953,
                            "name": "swapOutRequired",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 838,
                            "src": "33278:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31305f303030",
                            "id": 954,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33301:6:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_10000_by_1",
                              "typeString": "int_const 10000"
                            },
                            "value": "10_000"
                          },
                          "src": "33278:29:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 956,
                        "nodeType": "ExpressionStatement",
                        "src": "33278:29:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 959,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 957,
                            "name": "fundingPeriod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 841,
                            "src": "33346:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "3130",
                            "id": 958,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33369:7:0",
                            "subdenomination": "days",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_864000_by_1",
                              "typeString": "int_const 864000"
                            },
                            "value": "10"
                          },
                          "src": "33346:30:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 960,
                        "nodeType": "ExpressionStatement",
                        "src": "33346:30:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 963,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 961,
                            "name": "defaultGracePeriod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 835,
                            "src": "33386:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "35",
                            "id": 962,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33409:6:0",
                            "subdenomination": "days",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_432000_by_1",
                              "typeString": "int_const 432000"
                            },
                            "value": "5"
                          },
                          "src": "33386:29:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 964,
                        "nodeType": "ExpressionStatement",
                        "src": "33386:29:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 967,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 965,
                            "name": "investorFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 844,
                            "src": "33425:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "3530",
                            "id": 966,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33448:2:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_50_by_1",
                              "typeString": "int_const 50"
                            },
                            "value": "50"
                          },
                          "src": "33425:25:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 968,
                        "nodeType": "ExpressionStatement",
                        "src": "33425:25:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 971,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 969,
                            "name": "treasuryFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 847,
                            "src": "33477:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "3530",
                            "id": 970,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33500:2:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_50_by_1",
                              "typeString": "int_const 50"
                            },
                            "value": "50"
                          },
                          "src": "33477:25:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 972,
                        "nodeType": "ExpressionStatement",
                        "src": "33477:25:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 975,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 973,
                            "name": "maxSwapSlippage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 850,
                            "src": "33529:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31303030",
                            "id": 974,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33552:4:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1000_by_1",
                              "typeString": "int_const 1000"
                            },
                            "value": "1000"
                          },
                          "src": "33529:27:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 976,
                        "nodeType": "ExpressionStatement",
                        "src": "33529:27:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 979,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 977,
                            "name": "minLoanEquity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 853,
                            "src": "33580:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "32303030",
                            "id": 978,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33603:4:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2000_by_1",
                              "typeString": "int_const 2000"
                            },
                            "value": "2000"
                          },
                          "src": "33580:27:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 980,
                        "nodeType": "ExpressionStatement",
                        "src": "33580:27:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 983,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 981,
                            "name": "globalAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 832,
                            "src": "33631:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 982,
                            "name": "_globalAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 942,
                            "src": "33654:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "33631:35:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 984,
                        "nodeType": "ExpressionStatement",
                        "src": "33631:35:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 987,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 985,
                            "name": "stakerCooldownPeriod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 856,
                            "src": "33676:20:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "3130",
                            "id": 986,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33699:7:0",
                            "subdenomination": "days",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_864000_by_1",
                              "typeString": "int_const 864000"
                            },
                            "value": "10"
                          },
                          "src": "33676:30:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 988,
                        "nodeType": "ExpressionStatement",
                        "src": "33676:30:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 991,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 989,
                            "name": "lpCooldownPeriod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 859,
                            "src": "33716:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "3130",
                            "id": 990,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33739:7:0",
                            "subdenomination": "days",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_864000_by_1",
                              "typeString": "int_const 864000"
                            },
                            "value": "10"
                          },
                          "src": "33716:30:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 992,
                        "nodeType": "ExpressionStatement",
                        "src": "33716:30:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 995,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 993,
                            "name": "stakerUnstakeWindow",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 862,
                            "src": "33756:19:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 994,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33779:6:0",
                            "subdenomination": "days",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_172800_by_1",
                              "typeString": "int_const 172800"
                            },
                            "value": "2"
                          },
                          "src": "33756:29:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 996,
                        "nodeType": "ExpressionStatement",
                        "src": "33756:29:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 999,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 997,
                            "name": "lpWithdrawWindow",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 865,
                            "src": "33795:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 998,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33818:6:0",
                            "subdenomination": "days",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_172800_by_1",
                              "typeString": "int_const 172800"
                            },
                            "value": "2"
                          },
                          "src": "33795:29:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1000,
                        "nodeType": "ExpressionStatement",
                        "src": "33795:29:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1001,
                            "name": "Initialized",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20,
                            "src": "33839:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 1002,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "33839:13:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1003,
                        "nodeType": "EmitStatement",
                        "src": "33834:18:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 936,
                    "nodeType": "StructuredDocumentation",
                    "src": "32821:289:0",
                    "text": "@dev   Constructor function. \n@dev   It emits an `Initialized` event. \n@param _governor    Address of Governor.\n@param _mpl         Address of the ERC-2222 Maple Token for the Maple protocol.\n@param _globalAdmin Address the Global Admin."
                  },
                  "id": 1005,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 943,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 938,
                        "mutability": "mutable",
                        "name": "_governor",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1005,
                        "src": "33127:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 937,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "33127:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 940,
                        "mutability": "mutable",
                        "name": "_mpl",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1005,
                        "src": "33146:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 939,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "33146:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 942,
                        "mutability": "mutable",
                        "name": "_globalAdmin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1005,
                        "src": "33160:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 941,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "33160:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "33126:55:0"
                  },
                  "returnParameters": {
                    "id": 944,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "33189:0:0"
                  },
                  "scope": 1714,
                  "src": "33115:744:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    296
                  ],
                  "body": {
                    "id": 1022,
                    "nodeType": "Block",
                    "src": "34048:132:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1015,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1013,
                            "name": "stakerCooldownPeriod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 856,
                            "src": "34058:20:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1014,
                            "name": "newCooldownPeriod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1007,
                            "src": "34081:17:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "34058:40:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1016,
                        "nodeType": "ExpressionStatement",
                        "src": "34058:40:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "5354414b45525f434f4f4c444f574e5f504552494f44",
                              "id": 1018,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "34129:24:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ef56b13285c587464edaf6e43104ab5e837cf3c2f6325e8c98276a1e43a66237",
                                "typeString": "literal_string \"STAKER_COOLDOWN_PERIOD\""
                              },
                              "value": "STAKER_COOLDOWN_PERIOD"
                            },
                            {
                              "argumentTypes": null,
                              "id": 1019,
                              "name": "newCooldownPeriod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1007,
                              "src": "34155:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_ef56b13285c587464edaf6e43104ab5e837cf3c2f6325e8c98276a1e43a66237",
                                "typeString": "literal_string \"STAKER_COOLDOWN_PERIOD\""
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1017,
                            "name": "GlobalsParamSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 80,
                            "src": "34113:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,uint256)"
                            }
                          },
                          "id": 1020,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34113:60:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1021,
                        "nodeType": "EmitStatement",
                        "src": "34108:65:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "fd4a9121",
                  "id": 1023,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1011,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1010,
                        "name": "isGovernor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 935,
                        "src": "34037:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "34037:10:0"
                    }
                  ],
                  "name": "setStakerCooldownPeriod",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1009,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "34028:8:0"
                  },
                  "parameters": {
                    "id": 1008,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1007,
                        "mutability": "mutable",
                        "name": "newCooldownPeriod",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1023,
                        "src": "33992:25:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1006,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "33992:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "33991:27:0"
                  },
                  "returnParameters": {
                    "id": 1012,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "34048:0:0"
                  },
                  "scope": 1714,
                  "src": "33959:221:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    302
                  ],
                  "body": {
                    "id": 1040,
                    "nodeType": "Block",
                    "src": "34271:124:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1033,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1031,
                            "name": "lpCooldownPeriod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 859,
                            "src": "34281:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1032,
                            "name": "newCooldownPeriod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1025,
                            "src": "34300:17:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "34281:36:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1034,
                        "nodeType": "ExpressionStatement",
                        "src": "34281:36:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "4c505f434f4f4c444f574e5f504552494f44",
                              "id": 1036,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "34348:20:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a33332c6bfc68ef4e9954771036433b5f6577ab93253e87d3ab1877948ba5ec7",
                                "typeString": "literal_string \"LP_COOLDOWN_PERIOD\""
                              },
                              "value": "LP_COOLDOWN_PERIOD"
                            },
                            {
                              "argumentTypes": null,
                              "id": 1037,
                              "name": "newCooldownPeriod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1025,
                              "src": "34370:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_a33332c6bfc68ef4e9954771036433b5f6577ab93253e87d3ab1877948ba5ec7",
                                "typeString": "literal_string \"LP_COOLDOWN_PERIOD\""
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1035,
                            "name": "GlobalsParamSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 80,
                            "src": "34332:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,uint256)"
                            }
                          },
                          "id": 1038,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34332:56:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1039,
                        "nodeType": "EmitStatement",
                        "src": "34327:61:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "8608a6e1",
                  "id": 1041,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1029,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1028,
                        "name": "isGovernor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 935,
                        "src": "34260:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "34260:10:0"
                    }
                  ],
                  "name": "setLpCooldownPeriod",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1027,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "34251:8:0"
                  },
                  "parameters": {
                    "id": 1026,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1025,
                        "mutability": "mutable",
                        "name": "newCooldownPeriod",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1041,
                        "src": "34215:25:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1024,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "34215:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "34214:27:0"
                  },
                  "returnParameters": {
                    "id": 1030,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "34271:0:0"
                  },
                  "scope": 1714,
                  "src": "34186:209:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    308
                  ],
                  "body": {
                    "id": 1058,
                    "nodeType": "Block",
                    "src": "34488:128:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1049,
                            "name": "stakerUnstakeWindow",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 862,
                            "src": "34498:19:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1050,
                            "name": "newUnstakeWindow",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1043,
                            "src": "34520:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "34498:38:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1052,
                        "nodeType": "ExpressionStatement",
                        "src": "34498:38:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "5354414b45525f554e5354414b455f57494e444f57",
                              "id": 1054,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "34567:23:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4733ccca31b1557d7693ad10530a7a06070e43999bec4404d094a6dd2e732693",
                                "typeString": "literal_string \"STAKER_UNSTAKE_WINDOW\""
                              },
                              "value": "STAKER_UNSTAKE_WINDOW"
                            },
                            {
                              "argumentTypes": null,
                              "id": 1055,
                              "name": "newUnstakeWindow",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1043,
                              "src": "34592:16:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_4733ccca31b1557d7693ad10530a7a06070e43999bec4404d094a6dd2e732693",
                                "typeString": "literal_string \"STAKER_UNSTAKE_WINDOW\""
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1053,
                            "name": "GlobalsParamSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 80,
                            "src": "34551:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,uint256)"
                            }
                          },
                          "id": 1056,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34551:58:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1057,
                        "nodeType": "EmitStatement",
                        "src": "34546:63:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "d1cdf301",
                  "id": 1059,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1047,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1046,
                        "name": "isGovernor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 935,
                        "src": "34477:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "34477:10:0"
                    }
                  ],
                  "name": "setStakerUnstakeWindow",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1045,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "34468:8:0"
                  },
                  "parameters": {
                    "id": 1044,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1043,
                        "mutability": "mutable",
                        "name": "newUnstakeWindow",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1059,
                        "src": "34433:24:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1042,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "34433:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "34432:26:0"
                  },
                  "returnParameters": {
                    "id": 1048,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "34488:0:0"
                  },
                  "scope": 1714,
                  "src": "34401:215:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    314
                  ],
                  "body": {
                    "id": 1076,
                    "nodeType": "Block",
                    "src": "34709:128:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1069,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1067,
                            "name": "lpWithdrawWindow",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 865,
                            "src": "34719:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1068,
                            "name": "newLpWithdrawWindow",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1061,
                            "src": "34738:19:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "34719:38:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1070,
                        "nodeType": "ExpressionStatement",
                        "src": "34719:38:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "4c505f57495448445241575f57494e444f57",
                              "id": 1072,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "34788:20:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_861d5452a16224655a5ec22396d5a36e8e577cfd4460f0cadd3d04a9f11349cc",
                                "typeString": "literal_string \"LP_WITHDRAW_WINDOW\""
                              },
                              "value": "LP_WITHDRAW_WINDOW"
                            },
                            {
                              "argumentTypes": null,
                              "id": 1073,
                              "name": "newLpWithdrawWindow",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1061,
                              "src": "34810:19:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_861d5452a16224655a5ec22396d5a36e8e577cfd4460f0cadd3d04a9f11349cc",
                                "typeString": "literal_string \"LP_WITHDRAW_WINDOW\""
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1071,
                            "name": "GlobalsParamSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 80,
                            "src": "34772:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,uint256)"
                            }
                          },
                          "id": 1074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34772:58:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1075,
                        "nodeType": "EmitStatement",
                        "src": "34767:63:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "26718606",
                  "id": 1077,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1065,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1064,
                        "name": "isGovernor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 935,
                        "src": "34698:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "34698:10:0"
                    }
                  ],
                  "name": "setLpWithdrawWindow",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1063,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "34689:8:0"
                  },
                  "parameters": {
                    "id": 1062,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1061,
                        "mutability": "mutable",
                        "name": "newLpWithdrawWindow",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1077,
                        "src": "34651:27:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1060,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "34651:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "34650:29:0"
                  },
                  "returnParameters": {
                    "id": 1066,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "34709:0:0"
                  },
                  "scope": 1714,
                  "src": "34622:215:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    320
                  ],
                  "body": {
                    "id": 1098,
                    "nodeType": "Block",
                    "src": "34924:163:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1086,
                              "name": "newMaxSlippage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1079,
                              "src": "34956:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1085,
                            "name": "_checkPercentageRange",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1713,
                            "src": "34934:21:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$",
                              "typeString": "function (uint256) pure"
                            }
                          },
                          "id": 1087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34934:37:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1088,
                        "nodeType": "ExpressionStatement",
                        "src": "34934:37:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1091,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1089,
                            "name": "maxSwapSlippage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 850,
                            "src": "34981:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1090,
                            "name": "newMaxSlippage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1079,
                            "src": "34999:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "34981:32:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1092,
                        "nodeType": "ExpressionStatement",
                        "src": "34981:32:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "4d41585f535741505f534c495050414745",
                              "id": 1094,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "35044:19:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a66356a206dfe10fe1a93c338253a6a9a9b3a16b7e21d2a0ee51c3da7ad680e7",
                                "typeString": "literal_string \"MAX_SWAP_SLIPPAGE\""
                              },
                              "value": "MAX_SWAP_SLIPPAGE"
                            },
                            {
                              "argumentTypes": null,
                              "id": 1095,
                              "name": "newMaxSlippage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1079,
                              "src": "35065:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_a66356a206dfe10fe1a93c338253a6a9a9b3a16b7e21d2a0ee51c3da7ad680e7",
                                "typeString": "literal_string \"MAX_SWAP_SLIPPAGE\""
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1093,
                            "name": "GlobalsParamSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 80,
                            "src": "35028:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,uint256)"
                            }
                          },
                          "id": 1096,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "35028:52:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1097,
                        "nodeType": "EmitStatement",
                        "src": "35023:57:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "f33ef09a",
                  "id": 1099,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1083,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1082,
                        "name": "isGovernor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 935,
                        "src": "34913:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "34913:10:0"
                    }
                  ],
                  "name": "setMaxSwapSlippage",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1081,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "34904:8:0"
                  },
                  "parameters": {
                    "id": 1080,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1079,
                        "mutability": "mutable",
                        "name": "newMaxSlippage",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1099,
                        "src": "34871:22:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1078,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "34871:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "34870:24:0"
                  },
                  "returnParameters": {
                    "id": 1084,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "34924:0:0"
                  },
                  "scope": 1714,
                  "src": "34843:244:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    326
                  ],
                  "body": {
                    "id": 1134,
                    "nodeType": "Block",
                    "src": "35159:239:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1116,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 1109,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1106,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "35177:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 1107,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "35177:10:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1108,
                                  "name": "governor",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 826,
                                  "src": "35191:8:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "35177:22:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 1115,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1110,
                                  "name": "newGlobalAdmin",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1101,
                                  "src": "35203:14:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 1113,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "35229:1:0",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 1112,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "35221:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 1111,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "35221:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 1114,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "35221:10:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "35203:28:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "35177:54:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d473a4e4f545f474f565f4f525f41444d494e",
                              "id": 1117,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "35233:21:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1347ce2fe426e9f9bf0b25a9ea3ea5c830bd2cf244d3ba898ac9b300ab87107f",
                                "typeString": "literal_string \"MG:NOT_GOV_OR_ADMIN\""
                              },
                              "value": "MG:NOT_GOV_OR_ADMIN"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1347ce2fe426e9f9bf0b25a9ea3ea5c830bd2cf244d3ba898ac9b300ab87107f",
                                "typeString": "literal_string \"MG:NOT_GOV_OR_ADMIN\""
                              }
                            ],
                            "id": 1105,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "35169:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1118,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "35169:86:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1119,
                        "nodeType": "ExpressionStatement",
                        "src": "35169:86:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1122,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "35273:15:0",
                              "subExpression": {
                                "argumentTypes": null,
                                "id": 1121,
                                "name": "protocolPaused",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 868,
                                "src": "35274:14:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d473a50524f544f5f504155534544",
                              "id": 1123,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "35290:17:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_37dc3fb2a7244c30fa765df92ec92cc106d3e792cafdc19aef6fa5f022b07d70",
                                "typeString": "literal_string \"MG:PROTO_PAUSED\""
                              },
                              "value": "MG:PROTO_PAUSED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_37dc3fb2a7244c30fa765df92ec92cc106d3e792cafdc19aef6fa5f022b07d70",
                                "typeString": "literal_string \"MG:PROTO_PAUSED\""
                              }
                            ],
                            "id": 1120,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "35265:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1124,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "35265:43:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1125,
                        "nodeType": "ExpressionStatement",
                        "src": "35265:43:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1128,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1126,
                            "name": "globalAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 832,
                            "src": "35318:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1127,
                            "name": "newGlobalAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1101,
                            "src": "35332:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "35318:28:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1129,
                        "nodeType": "ExpressionStatement",
                        "src": "35318:28:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1131,
                              "name": "newGlobalAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1101,
                              "src": "35376:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1130,
                            "name": "GlobalAdminSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 97,
                            "src": "35361:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 1132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "35361:30:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1133,
                        "nodeType": "EmitStatement",
                        "src": "35356:35:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "c52bc31d",
                  "id": 1135,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setGlobalAdmin",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1103,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "35150:8:0"
                  },
                  "parameters": {
                    "id": 1102,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1101,
                        "mutability": "mutable",
                        "name": "newGlobalAdmin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1135,
                        "src": "35117:22:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1100,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "35117:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "35116:24:0"
                  },
                  "returnParameters": {
                    "id": 1104,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "35159:0:0"
                  },
                  "scope": 1714,
                  "src": "35093:305:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    334
                  ],
                  "body": {
                    "id": 1156,
                    "nodeType": "Block",
                    "src": "35497:109:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1145,
                              "name": "isValidBalancerPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 893,
                              "src": "35507:19:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 1147,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1146,
                              "name": "balancerPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1137,
                              "src": "35527:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "35507:33:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1148,
                            "name": "valid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1139,
                            "src": "35543:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "35507:41:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1150,
                        "nodeType": "ExpressionStatement",
                        "src": "35507:41:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1152,
                              "name": "balancerPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1137,
                              "src": "35579:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1153,
                              "name": "valid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1139,
                              "src": "35593:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1151,
                            "name": "BalancerPoolSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 63,
                            "src": "35563:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,bool)"
                            }
                          },
                          "id": 1154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "35563:36:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1155,
                        "nodeType": "EmitStatement",
                        "src": "35558:41:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "490dae64",
                  "id": 1157,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1143,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1142,
                        "name": "isGovernor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 935,
                        "src": "35486:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "35486:10:0"
                    }
                  ],
                  "name": "setValidBalancerPool",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1141,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "35477:8:0"
                  },
                  "parameters": {
                    "id": 1140,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1137,
                        "mutability": "mutable",
                        "name": "balancerPool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1157,
                        "src": "35434:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1136,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "35434:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1139,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1157,
                        "src": "35456:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1138,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "35456:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "35433:34:0"
                  },
                  "returnParameters": {
                    "id": 1144,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "35497:0:0"
                  },
                  "scope": 1714,
                  "src": "35404:202:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    340
                  ],
                  "body": {
                    "id": 1179,
                    "nodeType": "Block",
                    "src": "35668:135:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1167,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1164,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "35686:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 1165,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "35686:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1166,
                                "name": "globalAdmin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 832,
                                "src": "35700:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "35686:25:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d473a4e4f545f41444d494e",
                              "id": 1168,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "35713:14:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dcaacb6636abadc4fd7184d6ecfb89225f8f1b3aec41a42acb1443b791985cb1",
                                "typeString": "literal_string \"MG:NOT_ADMIN\""
                              },
                              "value": "MG:NOT_ADMIN"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dcaacb6636abadc4fd7184d6ecfb89225f8f1b3aec41a42acb1443b791985cb1",
                                "typeString": "literal_string \"MG:NOT_ADMIN\""
                              }
                            ],
                            "id": 1163,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "35678:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "35678:50:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1170,
                        "nodeType": "ExpressionStatement",
                        "src": "35678:50:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1173,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1171,
                            "name": "protocolPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 868,
                            "src": "35738:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1172,
                            "name": "pause",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1159,
                            "src": "35755:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "35738:22:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1174,
                        "nodeType": "ExpressionStatement",
                        "src": "35738:22:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1176,
                              "name": "pause",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1159,
                              "src": "35790:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1175,
                            "name": "ProtocolPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 92,
                            "src": "35775:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$",
                              "typeString": "function (bool)"
                            }
                          },
                          "id": 1177,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "35775:21:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1178,
                        "nodeType": "EmitStatement",
                        "src": "35770:26:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "4e989118",
                  "id": 1180,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setProtocolPause",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1161,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "35659:8:0"
                  },
                  "parameters": {
                    "id": 1160,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1159,
                        "mutability": "mutable",
                        "name": "pause",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1180,
                        "src": "35638:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1158,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "35638:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "35637:12:0"
                  },
                  "returnParameters": {
                    "id": 1162,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "35668:0:0"
                  },
                  "scope": 1714,
                  "src": "35612:191:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    348
                  ],
                  "body": {
                    "id": 1196,
                    "nodeType": "Block",
                    "src": "35900:56:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1194,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1190,
                              "name": "isValidPoolFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 910,
                              "src": "35910:18:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 1192,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1191,
                              "name": "poolFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1182,
                              "src": "35929:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "35910:31:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1193,
                            "name": "valid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1184,
                            "src": "35944:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "35910:39:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1195,
                        "nodeType": "ExpressionStatement",
                        "src": "35910:39:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "6597b899",
                  "id": 1197,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1188,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1187,
                        "name": "isGovernor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 935,
                        "src": "35889:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "35889:10:0"
                    }
                  ],
                  "name": "setValidPoolFactory",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1186,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "35880:8:0"
                  },
                  "parameters": {
                    "id": 1185,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1182,
                        "mutability": "mutable",
                        "name": "poolFactory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1197,
                        "src": "35838:19:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1181,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "35838:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1184,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1197,
                        "src": "35859:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1183,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "35859:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "35837:33:0"
                  },
                  "returnParameters": {
                    "id": 1189,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "35900:0:0"
                  },
                  "scope": 1714,
                  "src": "35809:147:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    356
                  ],
                  "body": {
                    "id": 1213,
                    "nodeType": "Block",
                    "src": "36053:56:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1211,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1207,
                              "name": "isValidLoanFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 915,
                              "src": "36063:18:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 1209,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1208,
                              "name": "loanFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1199,
                              "src": "36082:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "36063:31:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1210,
                            "name": "valid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1201,
                            "src": "36097:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "36063:39:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1212,
                        "nodeType": "ExpressionStatement",
                        "src": "36063:39:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "c9c67240",
                  "id": 1214,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1205,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1204,
                        "name": "isGovernor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 935,
                        "src": "36042:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "36042:10:0"
                    }
                  ],
                  "name": "setValidLoanFactory",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1203,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "36033:8:0"
                  },
                  "parameters": {
                    "id": 1202,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1199,
                        "mutability": "mutable",
                        "name": "loanFactory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1214,
                        "src": "35991:19:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1198,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "35991:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1201,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1214,
                        "src": "36012:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1200,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "36012:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "35990:33:0"
                  },
                  "returnParameters": {
                    "id": 1206,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "36053:0:0"
                  },
                  "scope": 1714,
                  "src": "35962:147:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    366
                  ],
                  "body": {
                    "id": 1245,
                    "nodeType": "Block",
                    "src": "36226:177:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1233,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1227,
                                  "name": "isValidLoanFactory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 915,
                                  "src": "36244:18:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 1229,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1228,
                                  "name": "superFactory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1216,
                                  "src": "36263:12:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "36244:32:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1230,
                                  "name": "isValidPoolFactory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 910,
                                  "src": "36280:18:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 1232,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1231,
                                  "name": "superFactory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1216,
                                  "src": "36299:12:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "36280:32:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "36244:68:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d473a494e56414c49445f53555045525f46",
                              "id": 1234,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "36314:20:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d51b75b159f367af6102f55650793287bac863d75a1e881158e55b9ca7ca6d53",
                                "typeString": "literal_string \"MG:INVALID_SUPER_F\""
                              },
                              "value": "MG:INVALID_SUPER_F"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d51b75b159f367af6102f55650793287bac863d75a1e881158e55b9ca7ca6d53",
                                "typeString": "literal_string \"MG:INVALID_SUPER_F\""
                              }
                            ],
                            "id": 1226,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "36236:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "36236:99:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1236,
                        "nodeType": "ExpressionStatement",
                        "src": "36236:99:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1237,
                                "name": "validSubFactories",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 922,
                                "src": "36345:17:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 1240,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1238,
                                "name": "superFactory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1216,
                                "src": "36363:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "36345:31:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 1241,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1239,
                              "name": "subFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1218,
                              "src": "36377:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "36345:43:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1242,
                            "name": "valid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1220,
                            "src": "36391:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "36345:51:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1244,
                        "nodeType": "ExpressionStatement",
                        "src": "36345:51:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "f85ee6f8",
                  "id": 1246,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1224,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1223,
                        "name": "isGovernor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 935,
                        "src": "36215:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "36215:10:0"
                    }
                  ],
                  "name": "setValidSubFactory",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1222,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "36206:8:0"
                  },
                  "parameters": {
                    "id": 1221,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1216,
                        "mutability": "mutable",
                        "name": "superFactory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1246,
                        "src": "36143:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1215,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "36143:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1218,
                        "mutability": "mutable",
                        "name": "subFactory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1246,
                        "src": "36165:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1217,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "36165:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1220,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1246,
                        "src": "36185:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1219,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "36185:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "36142:54:0"
                  },
                  "returnParameters": {
                    "id": 1225,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "36226:0:0"
                  },
                  "scope": 1714,
                  "src": "36115:288:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    376
                  ],
                  "body": {
                    "id": 1266,
                    "nodeType": "Block",
                    "src": "36508:51:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1264,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1258,
                                "name": "defaultUniswapPath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 900,
                                "src": "36518:18:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                                  "typeString": "mapping(address => mapping(address => address))"
                                }
                              },
                              "id": 1261,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1259,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1248,
                                "src": "36537:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "36518:24:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 1262,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1260,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1250,
                              "src": "36543:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "36518:28:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1263,
                            "name": "mid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1252,
                            "src": "36549:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "36518:34:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1265,
                        "nodeType": "ExpressionStatement",
                        "src": "36518:34:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "f3897663",
                  "id": 1267,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1256,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1255,
                        "name": "isGovernor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 935,
                        "src": "36497:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "36497:10:0"
                    }
                  ],
                  "name": "setDefaultUniswapPath",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1254,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "36488:8:0"
                  },
                  "parameters": {
                    "id": 1253,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1248,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1267,
                        "src": "36440:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1247,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "36440:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1250,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1267,
                        "src": "36454:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1249,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "36454:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1252,
                        "mutability": "mutable",
                        "name": "mid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1267,
                        "src": "36466:11:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1251,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "36466:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "36439:39:0"
                  },
                  "returnParameters": {
                    "id": 1257,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "36508:0:0"
                  },
                  "scope": 1714,
                  "src": "36409:150:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    384
                  ],
                  "body": {
                    "id": 1288,
                    "nodeType": "Block",
                    "src": "36658:101:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1277,
                              "name": "isValidPoolDelegate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 888,
                              "src": "36668:19:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 1279,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1278,
                              "name": "delegate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1269,
                              "src": "36688:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "36668:29:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1280,
                            "name": "valid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1271,
                            "src": "36700:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "36668:37:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1282,
                        "nodeType": "ExpressionStatement",
                        "src": "36668:37:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1284,
                              "name": "delegate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1269,
                              "src": "36736:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1285,
                              "name": "valid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1271,
                              "src": "36746:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1283,
                            "name": "PoolDelegateSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 104,
                            "src": "36720:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,bool)"
                            }
                          },
                          "id": 1286,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "36720:32:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1287,
                        "nodeType": "EmitStatement",
                        "src": "36715:37:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "efdb16fc",
                  "id": 1289,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1275,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1274,
                        "name": "isGovernor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 935,
                        "src": "36647:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "36647:10:0"
                    }
                  ],
                  "name": "setPoolDelegateAllowlist",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1273,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "36638:8:0"
                  },
                  "parameters": {
                    "id": 1272,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1269,
                        "mutability": "mutable",
                        "name": "delegate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1289,
                        "src": "36599:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1268,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "36599:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1271,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1289,
                        "src": "36617:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1270,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "36617:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "36598:30:0"
                  },
                  "returnParameters": {
                    "id": 1276,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "36658:0:0"
                  },
                  "scope": 1714,
                  "src": "36565:194:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    392
                  ],
                  "body": {
                    "id": 1320,
                    "nodeType": "Block",
                    "src": "36849:165:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1303,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1299,
                              "name": "isValidCollateralAsset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 878,
                              "src": "36859:22:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 1301,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1300,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1291,
                              "src": "36882:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "36859:29:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1302,
                            "name": "valid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1293,
                            "src": "36891:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "36859:37:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1304,
                        "nodeType": "ExpressionStatement",
                        "src": "36859:37:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1306,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1291,
                              "src": "36930:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1308,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1291,
                                      "src": "36951:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 1307,
                                    "name": "IERC20Details",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 617,
                                    "src": "36937:13:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20Details_$617_$",
                                      "typeString": "type(contract IERC20Details)"
                                    }
                                  },
                                  "id": 1309,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "36937:20:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20Details_$617",
                                    "typeString": "contract IERC20Details"
                                  }
                                },
                                "id": 1310,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "decimals",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 616,
                                "src": "36937:29:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 1311,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "36937:31:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1313,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1291,
                                      "src": "36984:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 1312,
                                    "name": "IERC20Details",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 617,
                                    "src": "36970:13:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20Details_$617_$",
                                      "typeString": "type(contract IERC20Details)"
                                    }
                                  },
                                  "id": 1314,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "36970:20:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20Details_$617",
                                    "typeString": "contract IERC20Details"
                                  }
                                },
                                "id": 1315,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "symbol",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 611,
                                "src": "36970:27:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_ptr_$",
                                  "typeString": "function () view external returns (string memory)"
                                }
                              },
                              "id": 1316,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "36970:29:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1317,
                              "name": "valid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1293,
                              "src": "37001:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1305,
                            "name": "CollateralAssetSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31,
                            "src": "36911:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,string memory,bool)"
                            }
                          },
                          "id": 1318,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "36911:96:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1319,
                        "nodeType": "EmitStatement",
                        "src": "36906:101:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "2fa6c88f",
                  "id": 1321,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1297,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1296,
                        "name": "isGovernor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 935,
                        "src": "36838:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "36838:10:0"
                    }
                  ],
                  "name": "setCollateralAsset",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1295,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "36829:8:0"
                  },
                  "parameters": {
                    "id": 1294,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1291,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1321,
                        "src": "36793:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1290,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "36793:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1293,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1321,
                        "src": "36808:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1292,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "36808:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "36792:27:0"
                  },
                  "returnParameters": {
                    "id": 1298,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "36849:0:0"
                  },
                  "scope": 1714,
                  "src": "36765:249:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    400
                  ],
                  "body": {
                    "id": 1352,
                    "nodeType": "Block",
                    "src": "37103:163:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1335,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1331,
                              "name": "isValidLiquidityAsset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 873,
                              "src": "37113:21:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 1333,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1332,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1323,
                              "src": "37135:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "37113:28:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1334,
                            "name": "valid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1325,
                            "src": "37144:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "37113:36:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1336,
                        "nodeType": "ExpressionStatement",
                        "src": "37113:36:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1338,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1323,
                              "src": "37182:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1340,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1323,
                                      "src": "37203:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 1339,
                                    "name": "IERC20Details",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 617,
                                    "src": "37189:13:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20Details_$617_$",
                                      "typeString": "type(contract IERC20Details)"
                                    }
                                  },
                                  "id": 1341,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "37189:20:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20Details_$617",
                                    "typeString": "contract IERC20Details"
                                  }
                                },
                                "id": 1342,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "decimals",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 616,
                                "src": "37189:29:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 1343,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "37189:31:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1345,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1323,
                                      "src": "37236:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 1344,
                                    "name": "IERC20Details",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 617,
                                    "src": "37222:13:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20Details_$617_$",
                                      "typeString": "type(contract IERC20Details)"
                                    }
                                  },
                                  "id": 1346,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "37222:20:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20Details_$617",
                                    "typeString": "contract IERC20Details"
                                  }
                                },
                                "id": 1347,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "symbol",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 611,
                                "src": "37222:27:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_ptr_$",
                                  "typeString": "function () view external returns (string memory)"
                                }
                              },
                              "id": 1348,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "37222:29:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1349,
                              "name": "valid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1325,
                              "src": "37253:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1337,
                            "name": "LiquidityAssetSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42,
                            "src": "37164:17:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,string memory,bool)"
                            }
                          },
                          "id": 1350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "37164:95:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1351,
                        "nodeType": "EmitStatement",
                        "src": "37159:100:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "2daa0d89",
                  "id": 1353,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1329,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1328,
                        "name": "isGovernor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 935,
                        "src": "37092:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "37092:10:0"
                    }
                  ],
                  "name": "setLiquidityAsset",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1327,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "37083:8:0"
                  },
                  "parameters": {
                    "id": 1326,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1323,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1353,
                        "src": "37047:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1322,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "37047:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1325,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1353,
                        "src": "37062:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1324,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "37062:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "37046:27:0"
                  },
                  "returnParameters": {
                    "id": 1330,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "37103:0:0"
                  },
                  "scope": 1714,
                  "src": "37020:246:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    408
                  ],
                  "body": {
                    "id": 1369,
                    "nodeType": "Block",
                    "src": "37344:41:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1367,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1363,
                              "name": "validCalcs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 883,
                              "src": "37354:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 1365,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1364,
                              "name": "calc",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1355,
                              "src": "37365:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "37354:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1366,
                            "name": "valid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1357,
                            "src": "37373:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "37354:24:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1368,
                        "nodeType": "ExpressionStatement",
                        "src": "37354:24:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "be44ed6b",
                  "id": 1370,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1361,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1360,
                        "name": "isGovernor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 935,
                        "src": "37333:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "37333:10:0"
                    }
                  ],
                  "name": "setCalc",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1359,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "37324:8:0"
                  },
                  "parameters": {
                    "id": 1358,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1355,
                        "mutability": "mutable",
                        "name": "calc",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1370,
                        "src": "37289:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1354,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "37289:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1357,
                        "mutability": "mutable",
                        "name": "valid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1370,
                        "src": "37303:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1356,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "37303:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "37288:26:0"
                  },
                  "returnParameters": {
                    "id": 1362,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "37344:0:0"
                  },
                  "scope": 1714,
                  "src": "37272:113:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    414
                  ],
                  "body": {
                    "id": 1394,
                    "nodeType": "Block",
                    "src": "37458:141:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1381,
                                  "name": "_fee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1372,
                                  "src": "37506:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1379,
                                  "name": "treasuryFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 847,
                                  "src": "37490:11:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1380,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 644,
                                "src": "37490:15:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 1382,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "37490:21:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1378,
                            "name": "_checkPercentageRange",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1713,
                            "src": "37468:21:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$",
                              "typeString": "function (uint256) pure"
                            }
                          },
                          "id": 1383,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "37468:44:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1384,
                        "nodeType": "ExpressionStatement",
                        "src": "37468:44:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1385,
                            "name": "investorFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 844,
                            "src": "37522:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1386,
                            "name": "_fee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1372,
                            "src": "37536:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "37522:18:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1388,
                        "nodeType": "ExpressionStatement",
                        "src": "37522:18:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "494e564553544f525f464545",
                              "id": 1390,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "37571:14:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3aea217ae3edef97921a0059b416ad10af94382ce300c56e5fffa736756ef855",
                                "typeString": "literal_string \"INVESTOR_FEE\""
                              },
                              "value": "INVESTOR_FEE"
                            },
                            {
                              "argumentTypes": null,
                              "id": 1391,
                              "name": "_fee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1372,
                              "src": "37587:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_3aea217ae3edef97921a0059b416ad10af94382ce300c56e5fffa736756ef855",
                                "typeString": "literal_string \"INVESTOR_FEE\""
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1389,
                            "name": "GlobalsParamSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 80,
                            "src": "37555:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,uint256)"
                            }
                          },
                          "id": 1392,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "37555:37:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1393,
                        "nodeType": "EmitStatement",
                        "src": "37550:42:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "5e045467",
                  "id": 1395,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1376,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1375,
                        "name": "isGovernor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 935,
                        "src": "37447:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "37447:10:0"
                    }
                  ],
                  "name": "setInvestorFee",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1374,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "37438:8:0"
                  },
                  "parameters": {
                    "id": 1373,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1372,
                        "mutability": "mutable",
                        "name": "_fee",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1395,
                        "src": "37415:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1371,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "37415:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "37414:14:0"
                  },
                  "returnParameters": {
                    "id": 1377,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "37458:0:0"
                  },
                  "scope": 1714,
                  "src": "37391:208:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    420
                  ],
                  "body": {
                    "id": 1419,
                    "nodeType": "Block",
                    "src": "37672:141:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1406,
                                  "name": "_fee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1397,
                                  "src": "37720:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1404,
                                  "name": "investorFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 844,
                                  "src": "37704:11:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1405,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 644,
                                "src": "37704:15:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 1407,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "37704:21:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1403,
                            "name": "_checkPercentageRange",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1713,
                            "src": "37682:21:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$",
                              "typeString": "function (uint256) pure"
                            }
                          },
                          "id": 1408,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "37682:44:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1409,
                        "nodeType": "ExpressionStatement",
                        "src": "37682:44:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1410,
                            "name": "treasuryFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 847,
                            "src": "37736:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1411,
                            "name": "_fee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1397,
                            "src": "37750:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "37736:18:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1413,
                        "nodeType": "ExpressionStatement",
                        "src": "37736:18:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "54524541535552595f464545",
                              "id": 1415,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "37785:14:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_18ad70ee3f6a98a2d2c282eb104ba9a88c203b6c36b6a4306a9f46f44c178891",
                                "typeString": "literal_string \"TREASURY_FEE\""
                              },
                              "value": "TREASURY_FEE"
                            },
                            {
                              "argumentTypes": null,
                              "id": 1416,
                              "name": "_fee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1397,
                              "src": "37801:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_18ad70ee3f6a98a2d2c282eb104ba9a88c203b6c36b6a4306a9f46f44c178891",
                                "typeString": "literal_string \"TREASURY_FEE\""
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1414,
                            "name": "GlobalsParamSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 80,
                            "src": "37769:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,uint256)"
                            }
                          },
                          "id": 1417,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "37769:37:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1418,
                        "nodeType": "EmitStatement",
                        "src": "37764:42:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "77e741c7",
                  "id": 1420,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1401,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1400,
                        "name": "isGovernor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 935,
                        "src": "37661:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "37661:10:0"
                    }
                  ],
                  "name": "setTreasuryFee",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1399,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "37652:8:0"
                  },
                  "parameters": {
                    "id": 1398,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1397,
                        "mutability": "mutable",
                        "name": "_fee",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1420,
                        "src": "37629:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1396,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "37629:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "37628:14:0"
                  },
                  "returnParameters": {
                    "id": 1402,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "37672:0:0"
                  },
                  "scope": 1714,
                  "src": "37605:208:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    426
                  ],
                  "body": {
                    "id": 1447,
                    "nodeType": "Block",
                    "src": "37898:176:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1434,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1429,
                                "name": "_mapleTreasury",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1422,
                                "src": "37916:14:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1432,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "37942:1:0",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 1431,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "37934:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1430,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "37934:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1433,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "37934:10:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "37916:28:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d473a5a45524f5f41444452",
                              "id": 1435,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "37946:14:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8c5453ff40b655be08518e0222e5212d9a39278ae7644e6fda890d432e3d9e6c",
                                "typeString": "literal_string \"MG:ZERO_ADDR\""
                              },
                              "value": "MG:ZERO_ADDR"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8c5453ff40b655be08518e0222e5212d9a39278ae7644e6fda890d432e3d9e6c",
                                "typeString": "literal_string \"MG:ZERO_ADDR\""
                              }
                            ],
                            "id": 1428,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "37908:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1436,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "37908:53:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1437,
                        "nodeType": "ExpressionStatement",
                        "src": "37908:53:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1440,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1438,
                            "name": "mapleTreasury",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 829,
                            "src": "37971:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1439,
                            "name": "_mapleTreasury",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1422,
                            "src": "37987:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "37971:30:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1441,
                        "nodeType": "ExpressionStatement",
                        "src": "37971:30:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "4d41504c455f5452454153555259",
                              "id": 1443,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "38034:16:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c1d6035314c39d9091f81b79640db27c1dffcc995827575d7f2dc24b53c41948",
                                "typeString": "literal_string \"MAPLE_TREASURY\""
                              },
                              "value": "MAPLE_TREASURY"
                            },
                            {
                              "argumentTypes": null,
                              "id": 1444,
                              "name": "_mapleTreasury",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1422,
                              "src": "38052:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c1d6035314c39d9091f81b79640db27c1dffcc995827575d7f2dc24b53c41948",
                                "typeString": "literal_string \"MAPLE_TREASURY\""
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1442,
                            "name": "GlobalsAddressSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 87,
                            "src": "38016:17:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 1445,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "38016:51:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1446,
                        "nodeType": "EmitStatement",
                        "src": "38011:56:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "7303de25",
                  "id": 1448,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1426,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1425,
                        "name": "isGovernor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 935,
                        "src": "37887:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "37887:10:0"
                    }
                  ],
                  "name": "setMapleTreasury",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1424,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "37878:8:0"
                  },
                  "parameters": {
                    "id": 1423,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1422,
                        "mutability": "mutable",
                        "name": "_mapleTreasury",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1448,
                        "src": "37845:22:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1421,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "37845:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "37844:24:0"
                  },
                  "returnParameters": {
                    "id": 1427,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "37898:0:0"
                  },
                  "scope": 1714,
                  "src": "37819:255:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    432
                  ],
                  "body": {
                    "id": 1465,
                    "nodeType": "Block",
                    "src": "38169:132:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1458,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1456,
                            "name": "defaultGracePeriod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 835,
                            "src": "38179:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1457,
                            "name": "_defaultGracePeriod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1450,
                            "src": "38200:19:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "38179:40:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1459,
                        "nodeType": "ExpressionStatement",
                        "src": "38179:40:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "44454641554c545f47524143455f504552494f44",
                              "id": 1461,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "38250:22:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_fdb3b38b1f33f5612be5f964a50a321514080c7327c9735bb239259977ef1012",
                                "typeString": "literal_string \"DEFAULT_GRACE_PERIOD\""
                              },
                              "value": "DEFAULT_GRACE_PERIOD"
                            },
                            {
                              "argumentTypes": null,
                              "id": 1462,
                              "name": "_defaultGracePeriod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1450,
                              "src": "38274:19:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_fdb3b38b1f33f5612be5f964a50a321514080c7327c9735bb239259977ef1012",
                                "typeString": "literal_string \"DEFAULT_GRACE_PERIOD\""
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1460,
                            "name": "GlobalsParamSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 80,
                            "src": "38234:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,uint256)"
                            }
                          },
                          "id": 1463,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "38234:60:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1464,
                        "nodeType": "EmitStatement",
                        "src": "38229:65:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "44c14f71",
                  "id": 1466,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1454,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1453,
                        "name": "isGovernor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 935,
                        "src": "38158:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "38158:10:0"
                    }
                  ],
                  "name": "setDefaultGracePeriod",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1452,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "38149:8:0"
                  },
                  "parameters": {
                    "id": 1451,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1450,
                        "mutability": "mutable",
                        "name": "_defaultGracePeriod",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1466,
                        "src": "38111:27:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1449,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "38111:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "38110:29:0"
                  },
                  "returnParameters": {
                    "id": 1455,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "38169:0:0"
                  },
                  "scope": 1714,
                  "src": "38080:221:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    438
                  ],
                  "body": {
                    "id": 1487,
                    "nodeType": "Block",
                    "src": "38386:159:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1475,
                              "name": "_minLoanEquity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1468,
                              "src": "38418:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1474,
                            "name": "_checkPercentageRange",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1713,
                            "src": "38396:21:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$",
                              "typeString": "function (uint256) pure"
                            }
                          },
                          "id": 1476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "38396:37:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1477,
                        "nodeType": "ExpressionStatement",
                        "src": "38396:37:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1480,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1478,
                            "name": "minLoanEquity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 853,
                            "src": "38443:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1479,
                            "name": "_minLoanEquity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1468,
                            "src": "38459:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "38443:30:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1481,
                        "nodeType": "ExpressionStatement",
                        "src": "38443:30:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "4d494e5f4c4f414e5f455155495459",
                              "id": 1483,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "38504:17:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6b0ea376716081373aee3765f89bb2e909ea2bb2f48ea7c45a9399eafce66ff6",
                                "typeString": "literal_string \"MIN_LOAN_EQUITY\""
                              },
                              "value": "MIN_LOAN_EQUITY"
                            },
                            {
                              "argumentTypes": null,
                              "id": 1484,
                              "name": "_minLoanEquity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1468,
                              "src": "38523:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_6b0ea376716081373aee3765f89bb2e909ea2bb2f48ea7c45a9399eafce66ff6",
                                "typeString": "literal_string \"MIN_LOAN_EQUITY\""
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1482,
                            "name": "GlobalsParamSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 80,
                            "src": "38488:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,uint256)"
                            }
                          },
                          "id": 1485,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "38488:50:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1486,
                        "nodeType": "EmitStatement",
                        "src": "38483:55:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "298b795d",
                  "id": 1488,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1472,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1471,
                        "name": "isGovernor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 935,
                        "src": "38375:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "38375:10:0"
                    }
                  ],
                  "name": "setMinLoanEquity",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1470,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "38366:8:0"
                  },
                  "parameters": {
                    "id": 1469,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1468,
                        "mutability": "mutable",
                        "name": "_minLoanEquity",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1488,
                        "src": "38333:22:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1467,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "38333:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "38332:24:0"
                  },
                  "returnParameters": {
                    "id": 1473,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "38386:0:0"
                  },
                  "scope": 1714,
                  "src": "38307:238:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    444
                  ],
                  "body": {
                    "id": 1505,
                    "nodeType": "Block",
                    "src": "38630:111:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1498,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1496,
                            "name": "fundingPeriod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 841,
                            "src": "38640:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1497,
                            "name": "_fundingPeriod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "38656:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "38640:30:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1499,
                        "nodeType": "ExpressionStatement",
                        "src": "38640:30:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "46554e44494e475f504552494f44",
                              "id": 1501,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "38701:16:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_71a65d19c1f26dfd0d218b0d79432dde5a23c43487b59838e98289df649959eb",
                                "typeString": "literal_string \"FUNDING_PERIOD\""
                              },
                              "value": "FUNDING_PERIOD"
                            },
                            {
                              "argumentTypes": null,
                              "id": 1502,
                              "name": "_fundingPeriod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1490,
                              "src": "38719:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_71a65d19c1f26dfd0d218b0d79432dde5a23c43487b59838e98289df649959eb",
                                "typeString": "literal_string \"FUNDING_PERIOD\""
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1500,
                            "name": "GlobalsParamSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 80,
                            "src": "38685:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,uint256)"
                            }
                          },
                          "id": 1503,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "38685:49:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1504,
                        "nodeType": "EmitStatement",
                        "src": "38680:54:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "2a5aa292",
                  "id": 1506,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1494,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1493,
                        "name": "isGovernor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 935,
                        "src": "38619:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "38619:10:0"
                    }
                  ],
                  "name": "setFundingPeriod",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1492,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "38610:8:0"
                  },
                  "parameters": {
                    "id": 1491,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1490,
                        "mutability": "mutable",
                        "name": "_fundingPeriod",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1506,
                        "src": "38577:22:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1489,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "38577:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "38576:24:0"
                  },
                  "returnParameters": {
                    "id": 1495,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "38630:0:0"
                  },
                  "scope": 1714,
                  "src": "38551:190:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    450
                  ],
                  "body": {
                    "id": 1533,
                    "nodeType": "Block",
                    "src": "38817:158:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1520,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1515,
                                "name": "amt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1508,
                                "src": "38835:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "31305f303030",
                                    "id": 1518,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "38850:6:0",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10000_by_1",
                                      "typeString": "int_const 10000"
                                    },
                                    "value": "10_000"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_10000_by_1",
                                      "typeString": "int_const 10000"
                                    }
                                  ],
                                  "id": 1517,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "38842:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 1516,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "38842:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1519,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "38842:15:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "38835:22:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d473a535741505f4f55545f544f4f5f4c4f57",
                              "id": 1521,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "38859:21:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_448f397989ca4803ec1414c1a9d4653fef59f9d95c86e63b8926b1b9041739f5",
                                "typeString": "literal_string \"MG:SWAP_OUT_TOO_LOW\""
                              },
                              "value": "MG:SWAP_OUT_TOO_LOW"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_448f397989ca4803ec1414c1a9d4653fef59f9d95c86e63b8926b1b9041739f5",
                                "typeString": "literal_string \"MG:SWAP_OUT_TOO_LOW\""
                              }
                            ],
                            "id": 1514,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "38827:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1522,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "38827:54:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1523,
                        "nodeType": "ExpressionStatement",
                        "src": "38827:54:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1526,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1524,
                            "name": "swapOutRequired",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 838,
                            "src": "38891:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1525,
                            "name": "amt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1508,
                            "src": "38909:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "38891:21:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1527,
                        "nodeType": "ExpressionStatement",
                        "src": "38891:21:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "535741505f4f55545f5245515549524544",
                              "id": 1529,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "38943:19:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f49e135633bc83da55a5f05c50621fa18e4711fa382aff5f7237eef98fd3203f",
                                "typeString": "literal_string \"SWAP_OUT_REQUIRED\""
                              },
                              "value": "SWAP_OUT_REQUIRED"
                            },
                            {
                              "argumentTypes": null,
                              "id": 1530,
                              "name": "amt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1508,
                              "src": "38964:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_f49e135633bc83da55a5f05c50621fa18e4711fa382aff5f7237eef98fd3203f",
                                "typeString": "literal_string \"SWAP_OUT_REQUIRED\""
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1528,
                            "name": "GlobalsParamSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 80,
                            "src": "38927:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,uint256)"
                            }
                          },
                          "id": 1531,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "38927:41:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1532,
                        "nodeType": "EmitStatement",
                        "src": "38922:46:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "dbc6c552",
                  "id": 1534,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1512,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1511,
                        "name": "isGovernor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 935,
                        "src": "38806:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "38806:10:0"
                    }
                  ],
                  "name": "setSwapOutRequired",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1510,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "38797:8:0"
                  },
                  "parameters": {
                    "id": 1509,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1508,
                        "mutability": "mutable",
                        "name": "amt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1534,
                        "src": "38775:11:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1507,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "38775:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "38774:13:0"
                  },
                  "returnParameters": {
                    "id": 1513,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "38817:0:0"
                  },
                  "scope": 1714,
                  "src": "38747:228:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    458
                  ],
                  "body": {
                    "id": 1555,
                    "nodeType": "Block",
                    "src": "39065:81:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1548,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1544,
                              "name": "oracleFor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 905,
                              "src": "39075:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 1546,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1545,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1536,
                              "src": "39085:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "39075:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1547,
                            "name": "oracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1538,
                            "src": "39094:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "39075:25:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1549,
                        "nodeType": "ExpressionStatement",
                        "src": "39075:25:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1551,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1536,
                              "src": "39125:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1552,
                              "name": "oracle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1538,
                              "src": "39132:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1550,
                            "name": "OracleSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 49,
                            "src": "39115:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 1553,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "39115:24:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1554,
                        "nodeType": "EmitStatement",
                        "src": "39110:29:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "67a74ddc",
                  "id": 1556,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1542,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1541,
                        "name": "isGovernor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 935,
                        "src": "39054:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "39054:10:0"
                    }
                  ],
                  "name": "setPriceOracle",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1540,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "39045:8:0"
                  },
                  "parameters": {
                    "id": 1539,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1536,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1556,
                        "src": "39005:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1535,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "39005:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1538,
                        "mutability": "mutable",
                        "name": "oracle",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1556,
                        "src": "39020:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1537,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "39020:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "39004:31:0"
                  },
                  "returnParameters": {
                    "id": 1543,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "39065:0:0"
                  },
                  "scope": 1714,
                  "src": "38981:165:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    464
                  ],
                  "body": {
                    "id": 1582,
                    "nodeType": "Block",
                    "src": "39365:167:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1570,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1565,
                                "name": "_pendingGovernor",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1558,
                                "src": "39383:16:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1568,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "39411:1:0",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 1567,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "39403:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1566,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "39403:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1569,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "39403:10:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "39383:30:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d473a5a45524f5f41444452",
                              "id": 1571,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "39415:14:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8c5453ff40b655be08518e0222e5212d9a39278ae7644e6fda890d432e3d9e6c",
                                "typeString": "literal_string \"MG:ZERO_ADDR\""
                              },
                              "value": "MG:ZERO_ADDR"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8c5453ff40b655be08518e0222e5212d9a39278ae7644e6fda890d432e3d9e6c",
                                "typeString": "literal_string \"MG:ZERO_ADDR\""
                              }
                            ],
                            "id": 1564,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "39375:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1572,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "39375:55:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1573,
                        "nodeType": "ExpressionStatement",
                        "src": "39375:55:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1576,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1574,
                            "name": "pendingGovernor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 823,
                            "src": "39440:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1575,
                            "name": "_pendingGovernor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1558,
                            "src": "39458:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "39440:34:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1577,
                        "nodeType": "ExpressionStatement",
                        "src": "39440:34:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1579,
                              "name": "_pendingGovernor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1558,
                              "src": "39508:16:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1578,
                            "name": "PendingGovernorSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 68,
                            "src": "39489:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 1580,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "39489:36:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1581,
                        "nodeType": "EmitStatement",
                        "src": "39484:41:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "f235757f",
                  "id": 1583,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1562,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1561,
                        "name": "isGovernor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 935,
                        "src": "39354:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "39354:10:0"
                    }
                  ],
                  "name": "setPendingGovernor",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1560,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "39345:8:0"
                  },
                  "parameters": {
                    "id": 1559,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1558,
                        "mutability": "mutable",
                        "name": "_pendingGovernor",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1583,
                        "src": "39310:24:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1557,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "39310:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "39309:26:0"
                  },
                  "returnParameters": {
                    "id": 1563,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "39365:0:0"
                  },
                  "scope": 1714,
                  "src": "39282:250:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    468
                  ],
                  "body": {
                    "id": 1612,
                    "nodeType": "Block",
                    "src": "39582:196:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1591,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1588,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "39600:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 1589,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "39600:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1590,
                                "name": "pendingGovernor",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 823,
                                "src": "39614:15:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "39600:29:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d473a4e4f545f50454e44494e475f474f56",
                              "id": 1592,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "39631:20:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1975f6ba3f44617989e8ce3b4a5c47bd3cb80e1f75e0a4d8263dd40dca6ed291",
                                "typeString": "literal_string \"MG:NOT_PENDING_GOV\""
                              },
                              "value": "MG:NOT_PENDING_GOV"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1975f6ba3f44617989e8ce3b4a5c47bd3cb80e1f75e0a4d8263dd40dca6ed291",
                                "typeString": "literal_string \"MG:NOT_PENDING_GOV\""
                              }
                            ],
                            "id": 1587,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "39592:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1593,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "39592:60:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1594,
                        "nodeType": "ExpressionStatement",
                        "src": "39592:60:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1598,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1595,
                            "name": "governor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 826,
                            "src": "39662:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1596,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "39680:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1597,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "39680:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "39662:28:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1599,
                        "nodeType": "ExpressionStatement",
                        "src": "39662:28:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1605,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1600,
                            "name": "pendingGovernor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 823,
                            "src": "39700:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1603,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "39726:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 1602,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "39718:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1601,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "39718:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1604,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "39718:10:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "39700:28:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1606,
                        "nodeType": "ExpressionStatement",
                        "src": "39700:28:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1608,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "39760:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1609,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "39760:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 1607,
                            "name": "GovernorAccepted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 73,
                            "src": "39743:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 1610,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "39743:28:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1611,
                        "nodeType": "EmitStatement",
                        "src": "39738:33:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "e58bb639",
                  "id": 1613,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "acceptGovernor",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1585,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "39573:8:0"
                  },
                  "parameters": {
                    "id": 1584,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "39561:2:0"
                  },
                  "returnParameters": {
                    "id": 1586,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "39582:0:0"
                  },
                  "scope": 1714,
                  "src": "39538:240:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    476
                  ],
                  "body": {
                    "id": 1632,
                    "nodeType": "Block",
                    "src": "39958:75:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1624,
                                        "name": "oracleFor",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 905,
                                        "src": "39991:9:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                          "typeString": "mapping(address => address)"
                                        }
                                      },
                                      "id": 1626,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 1625,
                                        "name": "asset",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1615,
                                        "src": "40001:5:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "39991:16:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 1623,
                                    "name": "IOracle",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 515,
                                    "src": "39983:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IOracle_$515_$",
                                      "typeString": "type(contract IOracle)"
                                    }
                                  },
                                  "id": 1627,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "39983:25:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IOracle_$515",
                                    "typeString": "contract IOracle"
                                  }
                                },
                                "id": 1628,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getLatestPrice",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 514,
                                "src": "39983:40:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_int256_$",
                                  "typeString": "function () view external returns (int256)"
                                }
                              },
                              "id": 1629,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "39983:42:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "id": 1622,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "39975:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 1621,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "39975:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 1630,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "39975:51:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 1620,
                        "id": 1631,
                        "nodeType": "Return",
                        "src": "39968:58:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "16345f18",
                  "id": 1633,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLatestPrice",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1617,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "39926:8:0"
                  },
                  "parameters": {
                    "id": 1616,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1615,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1633,
                        "src": "39902:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1614,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "39902:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "39901:15:0"
                  },
                  "returnParameters": {
                    "id": 1620,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1619,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1633,
                        "src": "39949:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1618,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "39949:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "39948:9:0"
                  },
                  "scope": 1714,
                  "src": "39878:155:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    488
                  ],
                  "body": {
                    "id": 1659,
                    "nodeType": "Block",
                    "src": "40165:123:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1657,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1645,
                                "name": "validSubFactories",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 922,
                                "src": "40182:17:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 1647,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1646,
                                "name": "superFactory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1635,
                                "src": "40200:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "40182:31:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 1649,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1648,
                              "name": "subFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1637,
                              "src": "40214:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "40182:43:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 1656,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1651,
                                      "name": "subFactory",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1637,
                                      "src": "40241:10:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 1650,
                                    "name": "ISubFactory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 523,
                                    "src": "40229:11:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ISubFactory_$523_$",
                                      "typeString": "type(contract ISubFactory)"
                                    }
                                  },
                                  "id": 1652,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "40229:23:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ISubFactory_$523",
                                    "typeString": "contract ISubFactory"
                                  }
                                },
                                "id": 1653,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "factoryType",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 522,
                                "src": "40229:35:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_pure$__$returns$_t_uint8_$",
                                  "typeString": "function () pure external returns (uint8)"
                                }
                              },
                              "id": 1654,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "40229:37:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1655,
                              "name": "factoryType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1639,
                              "src": "40270:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "40229:52:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "40182:99:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1644,
                        "id": 1658,
                        "nodeType": "Return",
                        "src": "40175:106:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "13d459fb",
                  "id": 1660,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidSubFactory",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1641,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "40136:8:0"
                  },
                  "parameters": {
                    "id": 1640,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1635,
                        "mutability": "mutable",
                        "name": "superFactory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1660,
                        "src": "40066:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1634,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "40066:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1637,
                        "mutability": "mutable",
                        "name": "subFactory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1660,
                        "src": "40088:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1636,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "40088:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1639,
                        "mutability": "mutable",
                        "name": "factoryType",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1660,
                        "src": "40108:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 1638,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "40108:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "40065:61:0"
                  },
                  "returnParameters": {
                    "id": 1644,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1643,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1660,
                        "src": "40159:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1642,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "40159:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "40158:6:0"
                  },
                  "scope": 1714,
                  "src": "40039:249:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    498
                  ],
                  "body": {
                    "id": 1682,
                    "nodeType": "Block",
                    "src": "40383:78:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1680,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1670,
                              "name": "validCalcs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 883,
                              "src": "40400:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 1672,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1671,
                              "name": "calc",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1662,
                              "src": "40411:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "40400:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 1679,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1674,
                                      "name": "calc",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1662,
                                      "src": "40426:4:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 1673,
                                    "name": "ICalc",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16,
                                    "src": "40420:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ICalc_$16_$",
                                      "typeString": "type(contract ICalc)"
                                    }
                                  },
                                  "id": 1675,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "40420:11:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ICalc_$16",
                                    "typeString": "contract ICalc"
                                  }
                                },
                                "id": 1676,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "calcType",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9,
                                "src": "40420:20:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_pure$__$returns$_t_uint8_$",
                                  "typeString": "function () pure external returns (uint8)"
                                }
                              },
                              "id": 1677,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "40420:22:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1678,
                              "name": "calcType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1664,
                              "src": "40446:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "40420:34:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "40400:54:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1669,
                        "id": 1681,
                        "nodeType": "Return",
                        "src": "40393:61:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "1b5833f7",
                  "id": 1683,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidCalc",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1666,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "40354:8:0"
                  },
                  "parameters": {
                    "id": 1665,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1662,
                        "mutability": "mutable",
                        "name": "calc",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1683,
                        "src": "40315:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1661,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "40315:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1664,
                        "mutability": "mutable",
                        "name": "calcType",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1683,
                        "src": "40329:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 1663,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "40329:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "40314:30:0"
                  },
                  "returnParameters": {
                    "id": 1669,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1668,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1683,
                        "src": "40377:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1667,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "40377:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "40376:6:0"
                  },
                  "scope": 1714,
                  "src": "40294:167:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    506
                  ],
                  "body": {
                    "id": 1695,
                    "nodeType": "Block",
                    "src": "40548:60:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 1691,
                              "name": "lpCooldownPeriod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 859,
                              "src": "40566:16:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1692,
                              "name": "lpWithdrawWindow",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 865,
                              "src": "40584:16:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 1693,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "40565:36:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 1690,
                        "id": 1694,
                        "nodeType": "Return",
                        "src": "40558:43:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "9f51290b",
                  "id": 1696,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLpCooldownParams",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1685,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "40507:8:0"
                  },
                  "parameters": {
                    "id": 1684,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "40495:2:0"
                  },
                  "returnParameters": {
                    "id": 1690,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1687,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1696,
                        "src": "40530:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1686,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "40530:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1689,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1696,
                        "src": "40539:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1688,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "40539:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "40529:18:0"
                  },
                  "scope": 1714,
                  "src": "40467:141:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1712,
                    "nodeType": "Block",
                    "src": "40844:69:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1708,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1703,
                                "name": "percentage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1699,
                                "src": "40862:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "31305f303030",
                                    "id": 1706,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "40884:6:0",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10000_by_1",
                                      "typeString": "int_const 10000"
                                    },
                                    "value": "10_000"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_10000_by_1",
                                      "typeString": "int_const 10000"
                                    }
                                  ],
                                  "id": 1705,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "40876:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 1704,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "40876:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1707,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "40876:15:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "40862:29:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d473a5043545f4f4f42",
                              "id": 1709,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "40893:12:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_11f29c137b68d2671e26740f7046c88e0850ad47bf79352595ece9393bae19fe",
                                "typeString": "literal_string \"MG:PCT_OOB\""
                              },
                              "value": "MG:PCT_OOB"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_11f29c137b68d2671e26740f7046c88e0850ad47bf79352595ece9393bae19fe",
                                "typeString": "literal_string \"MG:PCT_OOB\""
                              }
                            ],
                            "id": 1702,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "40854:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1710,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "40854:52:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1711,
                        "nodeType": "ExpressionStatement",
                        "src": "40854:52:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1697,
                    "nodeType": "StructuredDocumentation",
                    "src": "40708:66:0",
                    "text": "@dev Checks that percentage is less than 100%."
                  },
                  "id": 1713,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_checkPercentageRange",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1700,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1699,
                        "mutability": "mutable",
                        "name": "percentage",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1713,
                        "src": "40810:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1698,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "40810:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "40809:20:0"
                  },
                  "returnParameters": {
                    "id": 1701,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "40844:0:0"
                  },
                  "scope": 1714,
                  "src": "40779:134:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 1715,
              "src": "31087:9829:0"
            }
          ],
          "src": "119:40798:0"
        },
        "id": 0
      }
    }
  }
}