{
  "_format": "hh-sol-artifact-1",
  "contractName": "Timelock",
  "sourceName": "contracts/peripherals/Timelock.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_admin",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_buffer",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_rewardManager",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_tokenManager",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_mintReceiver",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_maxTokenSupply",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "action",
          "type": "bytes32"
        }
      ],
      "name": "ClearAction",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "router",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "plugin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "action",
          "type": "bytes32"
        }
      ],
      "name": "SignalAddPlugin",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "action",
          "type": "bytes32"
        }
      ],
      "name": "SignalApprove",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "action",
          "type": "bytes32"
        }
      ],
      "name": "SignalMint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "action",
          "type": "bytes32"
        }
      ],
      "name": "SignalPendingAction",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "vaultPriceFeed",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "priceFeed",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "priceDecimals",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "isStrictStable",
          "type": "bool"
        }
      ],
      "name": "SignalPriceFeedSetTokenConfig",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "vault",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "SignalRedeemUsdg",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "gov",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "action",
          "type": "bytes32"
        }
      ],
      "name": "SignalSetGov",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "handler",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "isActive",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "action",
          "type": "bytes32"
        }
      ],
      "name": "SignalSetHandler",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "vault",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "priceFeed",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "action",
          "type": "bytes32"
        }
      ],
      "name": "SignalSetPriceFeed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "vault",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokenDecimals",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokenWeight",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "minProfitBps",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "maxUsdgAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "isStable",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "isShortable",
          "type": "bool"
        }
      ],
      "name": "SignalVaultSetTokenConfig",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "action",
          "type": "bytes32"
        }
      ],
      "name": "SignalWithdrawToken",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "MAX_BUFFER",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MAX_FEE_BASIS_POINTS",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MAX_FUNDING_RATE_FACTOR",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MAX_LEVERAGE_VALIDATION",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PRICE_PRECISION",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "addExcludedToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_router",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_plugin",
          "type": "address"
        }
      ],
      "name": "addPlugin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "admin",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_vester",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "_accounts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_amounts",
          "type": "uint256[]"
        }
      ],
      "name": "batchSetBonusRewards",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "buffer",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_action",
          "type": "bytes32"
        }
      ],
      "name": "cancelAction",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "excludedTokens",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_target",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_handler",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_isActive",
          "type": "bool"
        }
      ],
      "name": "managedSetHandler",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_target",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_minter",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_isActive",
          "type": "bool"
        }
      ],
      "name": "managedSetMinter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxTokenSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "mintReceiver",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "pendingActions",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_vaultPriceFeed",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_priceFeed",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_priceDecimals",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "_isStrictStable",
          "type": "bool"
        }
      ],
      "name": "priceFeedSetTokenConfig",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_receiver",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "processMint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_vault",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "redeemUsdg",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_account",
          "type": "address"
        }
      ],
      "name": "removeAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rewardManager",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_priceFeed",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_isAdditive",
          "type": "bool"
        },
        {
          "internalType": "uint256",
          "name": "_adjustmentBps",
          "type": "uint256"
        }
      ],
      "name": "setAdjustment",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_admin",
          "type": "address"
        }
      ],
      "name": "setAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_buffer",
          "type": "uint256"
        }
      ],
      "name": "setBuffer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_vault",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "setBufferAmount",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_target",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_admin",
          "type": "address"
        }
      ],
      "name": "setExternalAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_priceFeed",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_favorPrimaryPrice",
          "type": "bool"
        }
      ],
      "name": "setFavorPrimaryPrice",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_vault",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_taxBasisPoints",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_stableTaxBasisPoints",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_mintBurnFeeBasisPoints",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_swapFeeBasisPoints",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_stableSwapFeeBasisPoints",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_marginFeeBasisPoints",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_liquidationFeeUsd",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_minProfitTime",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "_hasDynamicFees",
          "type": "bool"
        }
      ],
      "name": "setFees",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_vault",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_fundingInterval",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_fundingRateFactor",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_stableFundingRateFactor",
          "type": "uint256"
        }
      ],
      "name": "setFundingRate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_target",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_gov",
          "type": "address"
        }
      ],
      "name": "setGov",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_target",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_handler",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_isActive",
          "type": "bool"
        }
      ],
      "name": "setHandler",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_vault",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_inPrivateLiquidationMode",
          "type": "bool"
        }
      ],
      "name": "setInPrivateLiquidationMode",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_inPrivateTransferMode",
          "type": "bool"
        }
      ],
      "name": "setInPrivateTransferMode",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_priceFeed",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_isEnabled",
          "type": "bool"
        }
      ],
      "name": "setIsAmmEnabled",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_vault",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_isLeverageEnabled",
          "type": "bool"
        }
      ],
      "name": "setIsLeverageEnabled",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_priceFeed",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_isEnabled",
          "type": "bool"
        }
      ],
      "name": "setIsSecondaryPriceEnabled",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_vault",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_isSwapEnabled",
          "type": "bool"
        }
      ],
      "name": "setIsSwapEnabled",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_vault",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_liquidator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_isActive",
          "type": "bool"
        }
      ],
      "name": "setLiquidator",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_vault",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_maxGasPrice",
          "type": "uint256"
        }
      ],
      "name": "setMaxGasPrice",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_vault",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_maxLeverage",
          "type": "uint256"
        }
      ],
      "name": "setMaxLeverage",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_priceFeed",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_maxStrictPriceDeviation",
          "type": "uint256"
        }
      ],
      "name": "setMaxStrictPriceDeviation",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_vault",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_priceFeed",
          "type": "address"
        }
      ],
      "name": "setPriceFeed",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_priceFeed",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_priceSampleSpace",
          "type": "uint256"
        }
      ],
      "name": "setPriceSampleSpace",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_priceFeed",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_spreadBasisPoints",
          "type": "uint256"
        }
      ],
      "name": "setSpreadBasisPoints",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_priceFeed",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_spreadThresholdBasisPoints",
          "type": "uint256"
        }
      ],
      "name": "setSpreadThresholdBasisPoints",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_vault",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_tokenWeight",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_minProfitBps",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_maxUsdgAmount",
          "type": "uint256"
        }
      ],
      "name": "setTokenConfig",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_priceFeed",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_useV2Pricing",
          "type": "bool"
        }
      ],
      "name": "setUseV2Pricing",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_router",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_plugin",
          "type": "address"
        }
      ],
      "name": "signalAddPlugin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "signalApprove",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_receiver",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "signalMint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_vaultPriceFeed",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_priceFeed",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_priceDecimals",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "_isStrictStable",
          "type": "bool"
        }
      ],
      "name": "signalPriceFeedSetTokenConfig",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_vault",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "signalRedeemUsdg",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_target",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_gov",
          "type": "address"
        }
      ],
      "name": "signalSetGov",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_target",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_handler",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_isActive",
          "type": "bool"
        }
      ],
      "name": "signalSetHandler",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_vault",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_priceFeed",
          "type": "address"
        }
      ],
      "name": "signalSetPriceFeed",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_vault",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_tokenDecimals",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_tokenWeight",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_minProfitBps",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_maxUsdgAmount",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "_isStable",
          "type": "bool"
        },
        {
          "internalType": "bool",
          "name": "_isShortable",
          "type": "bool"
        }
      ],
      "name": "signalVaultSetTokenConfig",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_target",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_receiver",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "signalWithdrawToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokenManager",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "transferIn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_vault",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_tokenDecimals",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_tokenWeight",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_minProfitBps",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_maxUsdgAmount",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "_isStable",
          "type": "bool"
        },
        {
          "internalType": "bool",
          "name": "_isShortable",
          "type": "bool"
        }
      ],
      "name": "vaultSetTokenConfig",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_vault",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_receiver",
          "type": "address"
        }
      ],
      "name": "withdrawFees",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_target",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_receiver",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "withdrawToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162004c5438038062004c54833981810160405260c08110156200003757600080fd5b508051602082015160408301516060840151608085015160a090950151939492939192909162069780851115620000b5576040805162461bcd60e51b815260206004820152601960248201527f54696d656c6f636b3a20696e76616c6964205f62756666657200000000000000604482015290519081900360640190fd5b600180546001600160a01b039788166001600160a01b031991821617909155600095909555600380549487169486169490941790935560028054928616928516929092179091556004805491909416921691909117909155600555614b3480620001206000396000f3fe608060405234801561001057600080fd5b50600436106102ea5760003560e01c80629a698e146102ef5780630191c2371461042457806309cc9a081461045a5780630e9587f3146104905780630f4ef8a6146104c85780631154e808146104ec578063117cf2041461052457806314aea3071461055257806321754d9e1461057e57806321bd0592146105ba578063227f03eb146105e857806324ccbe3014610620578063268959e5146106585780632877f4c3146106865780632965c8c7146106b2578063296b07e5146106e05780632a709b141461071e5780632ba3725a146107265780633335e38a14610740578063384cae73146107845780633e9accf9146107c857806340c10f191461080a578063454ffa461461083657806347de43e2146108645780634befe2ca1461089c5780634cd23f3b146108a457806350f7c204146108e057806351a6de0d146108e857806353b6bfdd1461091657806355ef1395146109445780635843752f146109725780635dae8841146109a057806361d07569146109da57806369623ae2146109e25780636e5227d414610a10578063704b6c0214610a7157806370ac0a9314610a9757806376e1128614610acd578063781cc3d314610afb5780637b6f775a14610b185780637b9fb22714610b4457806380894d6214610b7257806386803c7214610ba05780638a39735a14610bce5780638bf22c4614610bd657806395082d2514610c02578063996a7a1e14610c0a578063a0a316a214610c38578063adc7ea3714610c64578063bc8a8ab914610c81578063c7bb26a014610cb7578063cd2b123014610cbf578063d63a352e14610ced578063d7c2e92f14610d25578063da29012014610d4b578063db1c844114610d83578063dce6e18d14610ddc578063e1de680914610e12578063e1f21c6714610e48578063e30569e514610e7e578063e3cbeb0f14610e9b578063e4652f4914610ef4578063e7b0a3a114610f2a578063edaafe2014610f60578063f851a44014610f68575b600080fd5b6104226004803603606081101561030557600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561032f57600080fd5b82018360208201111561034157600080fd5b803590602001918460208302840111600160201b8311171561036257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156103b157600080fd5b8201836020820111156103c357600080fd5b803590602001918460208302840111600160201b831117156103e457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610f70945050505050565b005b6104226004803603606081101561043a57600080fd5b506001600160a01b038135811691602081013590911690604001356111ad565b6104226004803603606081101561047057600080fd5b506001600160a01b038135811691602081013590911690604001356112ab565b610422600480360360608110156104a657600080fd5b506001600160a01b0381358116916020810135821691604090910135166113aa565b6104d0611488565b604080516001600160a01b039092168252519081900360200190f35b6104226004803603606081101561050257600080fd5b506001600160a01b038135811691602081013590911690604001351515611497565b6104226004803603604081101561053a57600080fd5b506001600160a01b03813516906020013515156115c8565b6104226004803603604081101561056857600080fd5b506001600160a01b038135169060200135611679565b6104226004803603608081101561059457600080fd5b506001600160a01b0381358116916020810135821691604082013516906060013561170c565b610422600480360360408110156105d057600080fd5b506001600160a01b0381351690602001351515611857565b610422600480360360808110156105fe57600080fd5b506001600160a01b0381351690602081013590604081013590606001356118ec565b6104226004803603606081101561063657600080fd5b506001600160a01b038135811691602081013590911690604001351515611a0d565b6104226004803603604081101561066e57600080fd5b506001600160a01b0381358116916020013516611b16565b6104226004803603604081101561069c57600080fd5b506001600160a01b038135169060200135611bb2565b610422600480360360408110156106c857600080fd5b506001600160a01b0381351690602001351515611c97565b610422600480360360808110156106f657600080fd5b506001600160a01b038135811691602081013590911690604081013515159060600135611d2c565b6104d0611dda565b61072e611de9565b60408051918252519081900360200190f35b610422600480360360a081101561075657600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001351515611df0565b610422600480360360a081101561079a57600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001351515611f4a565b610422600480360360a08110156107de57600080fd5b506001600160a01b0381358116916020810135909116906040810135906060810135906080013561207b565b6104226004803603604081101561082057600080fd5b506001600160a01b0381351690602001356123e0565b6104226004803603604081101561084c57600080fd5b506001600160a01b0381351690602001351515612449565b6104226004803603606081101561087a57600080fd5b506001600160a01b0381358116916020810135909116906040013515156124de565b61072e6125a1565b610422600480360360808110156108ba57600080fd5b506001600160a01b038135811691602081013582169160408201351690606001356125a7565b61072e6126c2565b610422600480360360408110156108fe57600080fd5b506001600160a01b03813581169160200135166126c8565b6104226004803603604081101561092c57600080fd5b506001600160a01b03813581169160200135166127c2565b6104226004803603604081101561095a57600080fd5b506001600160a01b03813581169160200135166128b6565b6104226004803603604081101561098857600080fd5b506001600160a01b03813516906020013515156129ac565b6109c6600480360360208110156109b657600080fd5b50356001600160a01b0316612a41565b604080519115158252519081900360200190f35b61072e612a56565b610422600480360360408110156109f857600080fd5b506001600160a01b0381358116916020013516612a5d565b6104226004803603610140811015610a2757600080fd5b506001600160a01b038135169060208101359060408101359060608101359060808101359060a08101359060c08101359060e0810135906101008101359061012001351515612b5a565b61042260048036036020811015610a8757600080fd5b50356001600160a01b0316612e18565b61042260048036036060811015610aad57600080fd5b506001600160a01b03813581169160208101359091169060400135612e87565b61042260048036036040811015610ae357600080fd5b506001600160a01b0381358116916020013516613287565b61042260048036036020811015610b1157600080fd5b5035613386565b61042260048036036040811015610b2e57600080fd5b506001600160a01b0381351690602001356133df565b61042260048036036040811015610b5a57600080fd5b506001600160a01b03813516906020013515156134c9565b61042260048036036040811015610b8857600080fd5b506001600160a01b038135811691602001351661355e565b61042260048036036040811015610bb657600080fd5b506001600160a01b0381351690602001351515613654565b61072e613747565b61042260048036036040811015610bec57600080fd5b506001600160a01b03813516906020013561374c565b61072e61382f565b61042260048036036040811015610c2057600080fd5b506001600160a01b038135811691602001351661383f565b61042260048036036040811015610c4e57600080fd5b506001600160a01b038135169060200135613930565b61042260048036036020811015610c7a57600080fd5b50356139c3565b61042260048036036060811015610c9757600080fd5b506001600160a01b03813581169160208101359091169060400135613aa9565b6104d0613b65565b61042260048036036040811015610cd557600080fd5b506001600160a01b0381351690602001351515613b74565b61042260048036036060811015610d0357600080fd5b506001600160a01b038135811691602081013590911690604001351515613c09565b61042260048036036020811015610d3b57600080fd5b50356001600160a01b0316613caf565b61042260048036036060811015610d6157600080fd5b506001600160a01b038135811691602081013590911690604001351515613d20565b6104226004803603610100811015610d9a57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a08101359060c081013515159060e001351515613dc6565b61042260048036036060811015610df257600080fd5b506001600160a01b03813581169160208101359091169060400135613f23565b61042260048036036060811015610e2857600080fd5b506001600160a01b03813581169160208101359091169060400135614025565b61042260048036036060811015610e5e57600080fd5b506001600160a01b038135811691602081013590911690604001356140c9565b61072e60048036036020811015610e9457600080fd5b50356141fe565b6104226004803603610100811015610eb257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a08101359060c081013515159060e001351515614210565b61042260048036036060811015610f0a57600080fd5b506001600160a01b03813581169160208101359091169060400135614372565b61042260048036036060811015610f4057600080fd5b506001600160a01b03813581169160208101359091169060400135614418565b61072e6144bc565b6104d06144c2565b6001546001600160a01b03163314610fbd576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b805182511461100f576040805162461bcd60e51b815260206004820152601960248201527854696d656c6f636b3a20696e76616c6964206c656e6774687360381b604482015290519081900360640190fd5b604080516346ea87af60e01b815230600482015290516001600160a01b038516916346ea87af9160248083019260209291908290030181600087803b15801561105757600080fd5b505af115801561106b573d6000803e3d6000fd5b505050506040513d602081101561108157600080fd5b50516110ee5760408051639cb7de4b60e01b81523060048201526001602482015290516001600160a01b03851691639cb7de4b91604480830192600092919082900301818387803b1580156110d557600080fd5b505af11580156110e9573d6000803e3d6000fd5b505050505b60005b82518110156111a757600083828151811061110857fe5b60200260200101519050600083838151811061112057fe5b60200260200101519050856001600160a01b03166341f2272483836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561118157600080fd5b505af1158015611195573d6000803e3d6000fd5b5050600190940193506110f192505050565b50505050565b6001546001600160a01b031633146111fa576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b604080516972656465656d5573646760b01b6020808301919091526001600160601b0319606087811b8216602a85015286901b16603e8301526052808301859052835180840390910181526072909201909252805191012061125b816144d1565b604080516001600160a01b0380871682528516602082015280820184905290517fe6bd553b6ef21f3a22ebc877b3aaedc30fe15826b8156d4e8c8b373ebf11d78b9181900360600190a150505050565b6001546001600160a01b031633146112f8576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b60408051631b5a5b9d60e21b6020808301919091526001600160601b0319606087811b8216602485015286901b166038830152604c80830185905283518084039091018152606c9092019092528051910120611353816144d1565b604080516001600160a01b038087168252851660208201528082018490526060810183905290517f23d37bec99db82564427c9bbfe48ad7434bccf413a40fd357fb838c90a0d68289181900360800190a150505050565b6001546001600160a01b031633146113f7576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b826001600160a01b031663f255527883836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050602060405180830381600087803b15801561145757600080fd5b505af115801561146b573d6000803e3d6000fd5b505050506040513d602081101561148157600080fd5b5050505050565b6003546001600160a01b031681565b6001546001600160a01b031633146114e4576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b604080516939b2ba2430b7323632b960b11b6020808301919091526001600160601b0319606087811b8216602a85015286901b16603e83015283151560f81b605283015282516033818403018152605390920190925280519101206115488161452a565b611551816145d6565b836001600160a01b0316639cb7de4b84846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001821515815260200192505050600060405180830381600087803b1580156115aa57600080fd5b505af11580156115be573d6000803e3d6000fd5b5050505050505050565b6001546001600160a01b03163314611615576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b816001600160a01b03166330455ede826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b15801561165d57600080fd5b505af1158015611671573d6000803e3d6000fd5b505050505050565b6001546001600160a01b031633146116c6576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b816001600160a01b031663b731dd87826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561165d57600080fd5b6001546001600160a01b03163314611759576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b604080516c3bb4ba34323930bbaa37b5b2b760991b6020808301919091526001600160601b0319606088811b8216602d85015287811b8216604185015286901b166055830152606980830185905283518084039091018152608990920190925280519101206117c78161452a565b6117d0816145d6565b846001600160a01b03166301e336678585856040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561183857600080fd5b505af115801561184c573d6000803e3d6000fd5b505050505050505050565b6001546001600160a01b031633146118a4576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b816001600160a01b031663f07bbf77826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b15801561165d57600080fd5b6001546001600160a01b03163314611939576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b60c882106119785760405162461bcd60e51b81526004018080602001828103825260248152602001806148f66024913960400191505060405180910390fd5b60c881106119b75760405162461bcd60e51b815260040180806020018281038252602a815260200180614aaa602a913960400191505060405180910390fd5b836001600160a01b0316638a27d4688484846040518463ffffffff1660e01b8152600401808481526020018381526020018281526020019350505050600060405180830381600087803b1580156115aa57600080fd5b6001546001600160a01b03163314611a5a576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b604080516939b2ba2430b7323632b960b11b6020808301919091526001600160601b0319606087811b8216602a85015286901b16603e83015283151560f81b60528301528251603381840301815260539092019092528051910120611abe816144d1565b604080516001600160a01b03808716825285166020820152831515818301526060810183905290517f1929c4e13b0dbbad7856b9ce1fc9dca98c7bf7cedd56e22c04dd60ad1d34fe4b9181900360800190a150505050565b6001546001600160a01b03163314611b63576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b816001600160a01b0316631785f53c826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561165d57600080fd5b6001546001600160a01b03163314611bff576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b6005811115611c51576040805162461bcd60e51b8152602060048201526019602482015278496e76616c6964205f707269636553616d706c65537061636560381b604482015290519081900360640190fd5b816001600160a01b0316632fa03b8f826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561165d57600080fd5b6001546001600160a01b03163314611ce4576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b816001600160a01b031663eb1c92a9826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b15801561165d57600080fd5b6001546001600160a01b03163314611d79576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b836001600160a01b031663d694376c8484846040518463ffffffff1660e01b815260040180846001600160a01b0316815260200183151581526020018281526020019350505050600060405180830381600087803b1580156115aa57600080fd5b6002546001600160a01b031681565b6207a12081565b6001546001600160a01b03163314611e3d576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b6040805176707269636546656564536574546f6b656e436f6e66696760481b6020808301919091526001600160601b0319606089811b8216603785015288811b8216604b85015287901b16605f8301526073820185905283151560f81b60938301528251607481840301815260949092019092528051910120611ebf8161452a565b611ec8816145d6565b60408051634b9ade4760e01b81526001600160a01b0387811660048301528681166024830152604482018690528415156064830152915191881691634b9ade479160848082019260009290919082900301818387803b158015611f2a57600080fd5b505af1158015611f3e573d6000803e3d6000fd5b50505050505050505050565b6001546001600160a01b03163314611f97576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b6040805176707269636546656564536574546f6b656e436f6e66696760481b6020808301919091526001600160601b0319606089811b8216603785015288811b8216604b85015287901b16605f8301526073820185905283151560f81b60938301528251607481840301815260949092019092528051910120612019816144d1565b604080516001600160a01b038089168252808816602083015286168183015260608101859052831515608082015290517f1b2ddf357ae016d8c127dcd3a73c34744fdeaeeb4b7ef1e04490cebf7f4816fe9181900360a00190a1505050505050565b6001546001600160a01b031633146120c8576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b6101f482111561211f576040805162461bcd60e51b815260206004820152601f60248201527f54696d656c6f636b3a20696e76616c6964205f6d696e50726f66697442707300604482015290519081900360640190fd5b60408051630daf9c2160e41b81526001600160a01b0386811660048301529151879283169163daf9c210916024808301926020929190829003018186803b15801561216957600080fd5b505afa15801561217d573d6000803e3d6000fd5b505050506040513d602081101561219357600080fd5b50516121d05760405162461bcd60e51b81526004018080602001828103825260238152602001806149626023913960400191505060405180910390fd5b6000816001600160a01b0316638ee573ac876040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561221f57600080fd5b505afa158015612233573d6000803e3d6000fd5b505050506040513d602081101561224957600080fd5b5051604080516342b60b0360e01b81526001600160a01b0389811660048301529151929350600092918516916342b60b0391602480820192602092909190829003018186803b15801561229b57600080fd5b505afa1580156122af573d6000803e3d6000fd5b505050506040513d60208110156122c557600080fd5b50516040805163db3555fb60e01b81526001600160a01b038a8116600483015291519293506000929186169163db3555fb91602480820192602092909190829003018186803b15801561231757600080fd5b505afa15801561232b573d6000803e3d6000fd5b505050506040513d602081101561234157600080fd5b505160408051633c5a6e3560e01b81526001600160a01b038b8116600483015260248201879052604482018b9052606482018a90526084820189905285151560a483015283151560c48301529151929350908b1691633c5a6e359160e48082019260009290919082900301818387803b1580156123bd57600080fd5b505af11580156123d1573d6000803e3d6000fd5b50505050505050505050505050565b6001546001600160a01b0316331461242d576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b6004546124459083906001600160a01b03168361467b565b5050565b6001546001600160a01b03163314612496576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b816001600160a01b031663fd34ec40826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b15801561165d57600080fd5b6001546001600160a01b0316331461252b576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b826001600160a01b0316634453a37483836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001821515815260200192505050600060405180830381600087803b15801561258457600080fd5b505af1158015612598573d6000803e3d6000fd5b50505050505050565b61012c81565b6001546001600160a01b031633146125f4576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b604080516c3bb4ba34323930bbaa37b5b2b760991b6020808301919091526001600160601b0319606088811b8216602d85015287811b8216604185015286901b16605583015260698083018590528351808403909101815260899092019092528051910120612662816144d1565b604080516001600160a01b0380881682528087166020830152851681830152606081018490526080810183905290517f9ed7b0f07a9eed51079fab67f6d0f141f167f5b17fdb5a23282280e15fcafed39181900360a00190a15050505050565b60055481565b6001546001600160a01b03163314612715576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b604080516539b2ba23b7bb60d11b6020808301919091526001600160601b0319606086811b8216602685015285901b16603a8301528251602e818403018152604e909201909252805191012061276a8161452a565b612773816145d6565b826001600160a01b031663cfad57a2836040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561258457600080fd5b6001546001600160a01b0316331461280f576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b604080516830b23228363ab3b4b760b91b6020808301919091526001600160601b0319606086811b8216602985015285901b16603d8301528251603181840301815260519092019092528051910120612867816144d1565b604080516001600160a01b0380861682528416602082015280820183905290517fc0ad20f21e0e6b9c02a7ecfb229e39b214cb1914a4d6f202e7f9ec7ffb9445f69181900360600190a1505050565b6001546001600160a01b03163314612903576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b6001600160a01b03821630141561295d576040805162461bcd60e51b8152602060048201526019602482015278151a5b595b1bd8dace881a5b9d985b1a590817dd185c99d95d603a1b604482015290519081900360640190fd5b816001600160a01b031663704b6c02826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561165d57600080fd5b6001546001600160a01b031633146129f9576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b816001600160a01b0316639917dc74826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b15801561165d57600080fd5b60076020526000908152604090205460ff1681565b6206978081565b6001546001600160a01b03163314612aaa576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b604080516830b23228363ab3b4b760b91b6020808301919091526001600160601b0319606086811b8216602985015285901b16603d8301528251603181840301815260519092019092528051910120612b028161452a565b612b0b816145d6565b826001600160a01b031663d8867fc8836040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561258457600080fd5b6001546001600160a01b03163314612ba7576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b61012c8910612be75760405162461bcd60e51b81526004018080602001828103825260218152602001806149416021913960400191505060405180910390fd5b61012c8810612c275760405162461bcd60e51b81526004018080602001828103825260278152602001806149ad6027913960400191505060405180910390fd5b61012c8710612c675760405162461bcd60e51b81526004018080602001828103825260298152602001806149d46029913960400191505060405180910390fd5b61012c8610612ca75760405162461bcd60e51b81526004018080602001828103825260258152602001806148d16025913960400191505060405180910390fd5b61012c8510612ce75760405162461bcd60e51b815260040180806020018281038252602b815260200180614ad4602b913960400191505060405180910390fd5b61012c8410612d275760405162461bcd60e51b815260040180806020018281038252602781526020018061491a6027913960400191505060405180910390fd5b68fc6f7c40458122964d601f1b8310612d715760405162461bcd60e51b8152600401808060200182810382526024815260200180614a216024913960400191505060405180910390fd5b604080516320759c0160e11b8152600481018b9052602481018a905260448101899052606481018890526084810187905260a4810186905260c4810185905260e4810184905282151561010482015290516001600160a01b038c16916340eb38029161012480830192600092919082900301818387803b158015612df457600080fd5b505af1158015612e08573d6000803e3d6000fd5b5050505050505050505050505050565b6002546001600160a01b03163314612e65576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b03163314612ed4576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b604080516972656465656d5573646760b01b6020808301919091526001600160601b0319606087811b8216602a85015286901b16603e83015260528083018590528351808403909101815260729092019092528051910120612f358161452a565b612f3e816145d6565b6000846001600160a01b031663f5b91b7b6040518163ffffffff1660e01b815260040160206040518083038186803b158015612f7957600080fd5b505afa158015612f8d573d6000803e3d6000fd5b505050506040513d6020811015612fa357600080fd5b5051604080516352f4877760e11b81523060048201526001602482015290519192506001600160a01b0387169163a5e90eee9160448082019260009290919082900301818387803b158015612ff757600080fd5b505af115801561300b573d6000803e3d6000fd5b5050604080516312b5ad0160e11b815230600482015290516001600160a01b038516935063256b5a029250602480830192600092919082900301818387803b15801561305657600080fd5b505af115801561306a573d6000803e3d6000fd5b5050604080516340c10f1960e01b81523060048201526024810187905290516001600160a01b03851693506340c10f199250604480830192600092919082900301818387803b1580156130bc57600080fd5b505af11580156130d0573d6000803e3d6000fd5b50505050806001600160a01b031663a9059cbb86856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561312b57600080fd5b505af115801561313f573d6000803e3d6000fd5b505050506040513d602081101561315557600080fd5b50506004805460408051630711e61960e41b81526001600160a01b03888116948201949094529183166024830152519187169163711e6190916044808201926020929091908290030181600087803b1580156131b057600080fd5b505af11580156131c4573d6000803e3d6000fd5b505050506040513d60208110156131da57600080fd5b5050604080516352f4877760e11b815230600482015260006024820181905291516001600160a01b0388169263a5e90eee926044808201939182900301818387803b15801561322857600080fd5b505af115801561323c573d6000803e3d6000fd5b50506040805163ceb68c2360e01b815230600482015290516001600160a01b038516935063ceb68c239250602480830192600092919082900301818387803b15801561183857600080fd5b6001546001600160a01b031633146132d4576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b604080516b1cd95d141c9a58d95199595960a21b6020808301919091526001600160601b0319606086811b8216602c85015285901b1682840152825160348184030181526054909201909252805191012061332e8161452a565b613337816145d6565b826001600160a01b031663724e78da836040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561258457600080fd5b6001546001600160a01b031633146133d3576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b6133dc816145d6565b50565b6001546001600160a01b0316331461342c576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b6207a1208111613483576040805162461bcd60e51b815260206004820152601e60248201527f54696d656c6f636b3a20696e76616c6964205f6d61784c657665726167650000604482015290519081900360640190fd5b816001600160a01b031663d3127e63826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561165d57600080fd5b6001546001600160a01b03163314613516576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b816001600160a01b031663604f37e9826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b15801561165d57600080fd5b6001546001600160a01b031633146135ab576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b604080516b1cd95d141c9a58d95199595960a21b6020808301919091526001600160601b0319606086811b8216602c85015285901b16828401528251603481840301815260549092019092528051910120613605816144d1565b604080516001600160a01b0380861682528416602082015280820183905290517fb878dd4b5762f4118ad54995be907dd2bcd915d942e4ac75580fba9b4ee4727f9181900360600190a1505050565b6001546001600160a01b031633146136a1576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b6001600160a01b03821660009081526007602052604090205460ff16156136ff5780156136ff5760405162461bcd60e51b81526004018080602001828103825260288152602001806149856028913960400191505060405180910390fd5b816001600160a01b0316635a47a1a7826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b15801561165d57600080fd5b60c881565b6001546001600160a01b03163314613799576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b64012a05f20081116137e9576040805162461bcd60e51b8152602060048201526014602482015273496e76616c6964205f6d6178476173507269636560601b604482015290519081900360640190fd5b816001600160a01b031663d2fa635e826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561165d57600080fd5b68327cb2734119d3b7a9601e1b81565b6001546001600160a01b0316331461388c576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b604080516539b2ba23b7bb60d11b6020808301919091526001600160601b0319606086811b8216602685015285901b16603a8301528251602e818403018152604e90920190925280519101206138e1816144d1565b604080516001600160a01b0380861682528416602082015280820183905290517f2701a94fd55a560e291f3c54d36580040670d6fde558a77a75d619e38139f7139181900360600190a1505050565b6001546001600160a01b0316331461397d576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b816001600160a01b0316632fbfe3d3826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561165d57600080fd5b6001546001600160a01b03163314613a10576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b62069780811115613a64576040805162461bcd60e51b81526020600482015260196024820152782a34b6b2b637b1b59d1034b73b30b634b2102fb13ab33332b960391b604482015290519081900360640190fd5b6000548111613aa45760405162461bcd60e51b8152600401808060200182810382526024815260200180614a456024913960400191505060405180910390fd5b600055565b6001546001600160a01b03163314613af6576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b60408051631b5a5b9d60e21b6020808301919091526001600160601b0319606087811b8216602485015286901b166038830152604c80830185905283518084039091018152606c9092019092528051910120613b518161452a565b613b5a816145d6565b6111a784848461467b565b6004546001600160a01b031681565b6001546001600160a01b03163314613bc1576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b816001600160a01b0316637c2eb9f7826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b15801561165d57600080fd5b6003546001600160a01b03163314613c56576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b826001600160a01b0316639cb7de4b83836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001821515815260200192505050600060405180830381600087803b15801561258457600080fd5b6001546001600160a01b03163314613cfc576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6003546001600160a01b03163314613d6d576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b826001600160a01b031663cf456ae783836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001821515815260200192505050600060405180830381600087803b15801561258457600080fd5b6001546001600160a01b03163314613e13576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b60408051727661756c74536574546f6b656e436f6e66696760681b6020808301919091526001600160601b031960608c811b821660338501528b901b166047830152605b8201899052607b8201889052609b820187905260bb820186905284151560f890811b60db840152841515901b60dc830152825160bd81840301815260dd9092019092528051910120613ea8816144d1565b604080516001600160a01b03808c1682528a166020820152808201899052606081018890526080810187905260a0810186905284151560c082015283151560e082015290517f3510e9d8245371c6c1061c33781ce16bd0eafa03cd3d0781865036520af4c743918190036101000190a1505050505050505050565b6001546001600160a01b03163314613f70576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b6040805166617070726f766560c81b6020808301919091526001600160601b0319606087811b8216602785015286901b16603b830152604f80830185905283518084039091018152606f9092019092528051910120613fce816144d1565b604080516001600160a01b038087168252851660208201528082018490526060810183905290517f6af9d86ba7407a934e941ed8ae5f779369a88fe8ba2cd1c204185d6f8a8287fd9181900360800190a150505050565b6001546001600160a01b03163314614072576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b826001600160a01b0316638585f4d283836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561258457600080fd5b6001546001600160a01b03163314614116576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b6040805166617070726f766560c81b6020808301919091526001600160601b0319606087811b8216602785015286901b16603b830152604f80830185905283518084039091018152606f90920190925280519101206141748161452a565b61417d816145d6565b836001600160a01b031663095ea7b384846040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156141d457600080fd5b505af11580156141e8573d6000803e3d6000fd5b505050506040513d602081101561167157600080fd5b60066020526000908152604090205481565b6001546001600160a01b0316331461425d576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b60408051727661756c74536574546f6b656e436f6e66696760681b6020808301919091526001600160601b031960608c811b821660338501528b901b166047830152605b8201899052607b8201889052609b820187905260bb820186905284151560f890811b60db840152841515901b60dc830152825160bd81840301815260dd90920190925280519101206142f28161452a565b6142fb816145d6565b60408051633c5a6e3560e01b81526001600160a01b038a81166004830152602482018a905260448201899052606482018890526084820187905285151560a483015284151560c48301529151918b1691633c5a6e359160e48082019260009290919082900301818387803b1580156123bd57600080fd5b6001546001600160a01b031633146143bf576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b604080516323b872dd60e01b81526001600160a01b038581166004830152306024830152604482018490529151918416916323b872dd916064808201926020929091908290030181600087803b15801561145757600080fd5b6001546001600160a01b03163314614465576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b826001600160a01b0316639b88938083836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561258457600080fd5b60005481565b6001546001600160a01b031681565b6000546144df904290614871565b60008281526006602090815260409182902092909255805183815290517f5fb9c0ecf7b4a28c4c480212e868f9da7f373a2ed4d23498b0be6aadf35242fb929181900390910190a150565b60008181526006602052604090205461458a576040805162461bcd60e51b815260206004820152601e60248201527f54696d656c6f636b3a20616374696f6e206e6f74207369676e616c6c65640000604482015290519081900360640190fd5b60008181526006602052604090205442116133dc5760405162461bcd60e51b81526004018080602001828103825260248152602001806149fd6024913960400191505060405180910390fd5b600081815260066020526040902054614632576040805162461bcd60e51b81526020600482015260196024820152782a34b6b2b637b1b59d1034b73b30b634b2102fb0b1ba34b7b760391b604482015290519081900360640190fd5b600081815260066020908152604080832092909255815183815291517f194ed6dd5e37e2acc44a19455c3f208c4831ee695fe362d9c4ef2d316bc53aec9281900390910190a150565b604080516355138f0d60e11b8152306004820152905184916001600160a01b0383169163aa271e1a916024808201926020929091908290030181600087803b1580156146c657600080fd5b505af11580156146da573d6000803e3d6000fd5b505050506040513d60208110156146f057600080fd5b505161475d576040805163cf456ae760e01b81523060048201526001602482015290516001600160a01b0383169163cf456ae791604480830192600092919082900301818387803b15801561474457600080fd5b505af1158015614758573d6000803e3d6000fd5b505050505b806001600160a01b03166340c10f1984846040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156147b457600080fd5b505af11580156147c8573d6000803e3d6000fd5b50505050600554846001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561480857600080fd5b505afa15801561481c573d6000803e3d6000fd5b505050506040513d602081101561483257600080fd5b505111156111a75760405162461bcd60e51b8152600401808060200182810382526021815260200180614a896021913960400191505060405180910390fd5b6000828201838110156148c9576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b939250505056fe54696d656c6f636b3a20696e76616c6964205f737761704665654261736973506f696e747354696d656c6f636b3a20696e76616c6964205f66756e64696e6752617465466163746f7254696d656c6f636b3a20696e76616c6964205f6d617267696e4665654261736973506f696e747354696d656c6f636b3a20696e76616c6964205f7461784261736973506f696e747354696d656c6f636b3a20746f6b656e206e6f74207965742077686974656c697374656454696d656c6f636b3a20696e76616c6964205f696e507269766174655472616e736665724d6f646554696d656c6f636b3a20696e76616c6964205f737461626c655461784261736973506f696e747354696d656c6f636b3a20696e76616c6964205f6d696e744275726e4665654261736973506f696e747354696d656c6f636b3a20616374696f6e2074696d65206e6f74207965742070617373656454696d656c6f636b3a20696e76616c6964205f6c69717569646174696f6e46656555736454696d656c6f636b3a206275666665722063616e6e6f742062652064656372656173656454696d656c6f636b3a20666f7262696464656e0000000000000000000000000054696d656c6f636b3a206d6178546f6b656e537570706c7920657863656564656454696d656c6f636b3a20696e76616c6964205f737461626c6546756e64696e6752617465466163746f7254696d656c6f636b3a20696e76616c6964205f737461626c65537761704665654261736973506f696e7473a2646970667358221220499d9ab4e7b4429aafa0a4bb58a84647898c5b65737a9e218dae9a56287eafcf64736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102ea5760003560e01c80629a698e146102ef5780630191c2371461042457806309cc9a081461045a5780630e9587f3146104905780630f4ef8a6146104c85780631154e808146104ec578063117cf2041461052457806314aea3071461055257806321754d9e1461057e57806321bd0592146105ba578063227f03eb146105e857806324ccbe3014610620578063268959e5146106585780632877f4c3146106865780632965c8c7146106b2578063296b07e5146106e05780632a709b141461071e5780632ba3725a146107265780633335e38a14610740578063384cae73146107845780633e9accf9146107c857806340c10f191461080a578063454ffa461461083657806347de43e2146108645780634befe2ca1461089c5780634cd23f3b146108a457806350f7c204146108e057806351a6de0d146108e857806353b6bfdd1461091657806355ef1395146109445780635843752f146109725780635dae8841146109a057806361d07569146109da57806369623ae2146109e25780636e5227d414610a10578063704b6c0214610a7157806370ac0a9314610a9757806376e1128614610acd578063781cc3d314610afb5780637b6f775a14610b185780637b9fb22714610b4457806380894d6214610b7257806386803c7214610ba05780638a39735a14610bce5780638bf22c4614610bd657806395082d2514610c02578063996a7a1e14610c0a578063a0a316a214610c38578063adc7ea3714610c64578063bc8a8ab914610c81578063c7bb26a014610cb7578063cd2b123014610cbf578063d63a352e14610ced578063d7c2e92f14610d25578063da29012014610d4b578063db1c844114610d83578063dce6e18d14610ddc578063e1de680914610e12578063e1f21c6714610e48578063e30569e514610e7e578063e3cbeb0f14610e9b578063e4652f4914610ef4578063e7b0a3a114610f2a578063edaafe2014610f60578063f851a44014610f68575b600080fd5b6104226004803603606081101561030557600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561032f57600080fd5b82018360208201111561034157600080fd5b803590602001918460208302840111600160201b8311171561036257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156103b157600080fd5b8201836020820111156103c357600080fd5b803590602001918460208302840111600160201b831117156103e457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610f70945050505050565b005b6104226004803603606081101561043a57600080fd5b506001600160a01b038135811691602081013590911690604001356111ad565b6104226004803603606081101561047057600080fd5b506001600160a01b038135811691602081013590911690604001356112ab565b610422600480360360608110156104a657600080fd5b506001600160a01b0381358116916020810135821691604090910135166113aa565b6104d0611488565b604080516001600160a01b039092168252519081900360200190f35b6104226004803603606081101561050257600080fd5b506001600160a01b038135811691602081013590911690604001351515611497565b6104226004803603604081101561053a57600080fd5b506001600160a01b03813516906020013515156115c8565b6104226004803603604081101561056857600080fd5b506001600160a01b038135169060200135611679565b6104226004803603608081101561059457600080fd5b506001600160a01b0381358116916020810135821691604082013516906060013561170c565b610422600480360360408110156105d057600080fd5b506001600160a01b0381351690602001351515611857565b610422600480360360808110156105fe57600080fd5b506001600160a01b0381351690602081013590604081013590606001356118ec565b6104226004803603606081101561063657600080fd5b506001600160a01b038135811691602081013590911690604001351515611a0d565b6104226004803603604081101561066e57600080fd5b506001600160a01b0381358116916020013516611b16565b6104226004803603604081101561069c57600080fd5b506001600160a01b038135169060200135611bb2565b610422600480360360408110156106c857600080fd5b506001600160a01b0381351690602001351515611c97565b610422600480360360808110156106f657600080fd5b506001600160a01b038135811691602081013590911690604081013515159060600135611d2c565b6104d0611dda565b61072e611de9565b60408051918252519081900360200190f35b610422600480360360a081101561075657600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001351515611df0565b610422600480360360a081101561079a57600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001351515611f4a565b610422600480360360a08110156107de57600080fd5b506001600160a01b0381358116916020810135909116906040810135906060810135906080013561207b565b6104226004803603604081101561082057600080fd5b506001600160a01b0381351690602001356123e0565b6104226004803603604081101561084c57600080fd5b506001600160a01b0381351690602001351515612449565b6104226004803603606081101561087a57600080fd5b506001600160a01b0381358116916020810135909116906040013515156124de565b61072e6125a1565b610422600480360360808110156108ba57600080fd5b506001600160a01b038135811691602081013582169160408201351690606001356125a7565b61072e6126c2565b610422600480360360408110156108fe57600080fd5b506001600160a01b03813581169160200135166126c8565b6104226004803603604081101561092c57600080fd5b506001600160a01b03813581169160200135166127c2565b6104226004803603604081101561095a57600080fd5b506001600160a01b03813581169160200135166128b6565b6104226004803603604081101561098857600080fd5b506001600160a01b03813516906020013515156129ac565b6109c6600480360360208110156109b657600080fd5b50356001600160a01b0316612a41565b604080519115158252519081900360200190f35b61072e612a56565b610422600480360360408110156109f857600080fd5b506001600160a01b0381358116916020013516612a5d565b6104226004803603610140811015610a2757600080fd5b506001600160a01b038135169060208101359060408101359060608101359060808101359060a08101359060c08101359060e0810135906101008101359061012001351515612b5a565b61042260048036036020811015610a8757600080fd5b50356001600160a01b0316612e18565b61042260048036036060811015610aad57600080fd5b506001600160a01b03813581169160208101359091169060400135612e87565b61042260048036036040811015610ae357600080fd5b506001600160a01b0381358116916020013516613287565b61042260048036036020811015610b1157600080fd5b5035613386565b61042260048036036040811015610b2e57600080fd5b506001600160a01b0381351690602001356133df565b61042260048036036040811015610b5a57600080fd5b506001600160a01b03813516906020013515156134c9565b61042260048036036040811015610b8857600080fd5b506001600160a01b038135811691602001351661355e565b61042260048036036040811015610bb657600080fd5b506001600160a01b0381351690602001351515613654565b61072e613747565b61042260048036036040811015610bec57600080fd5b506001600160a01b03813516906020013561374c565b61072e61382f565b61042260048036036040811015610c2057600080fd5b506001600160a01b038135811691602001351661383f565b61042260048036036040811015610c4e57600080fd5b506001600160a01b038135169060200135613930565b61042260048036036020811015610c7a57600080fd5b50356139c3565b61042260048036036060811015610c9757600080fd5b506001600160a01b03813581169160208101359091169060400135613aa9565b6104d0613b65565b61042260048036036040811015610cd557600080fd5b506001600160a01b0381351690602001351515613b74565b61042260048036036060811015610d0357600080fd5b506001600160a01b038135811691602081013590911690604001351515613c09565b61042260048036036020811015610d3b57600080fd5b50356001600160a01b0316613caf565b61042260048036036060811015610d6157600080fd5b506001600160a01b038135811691602081013590911690604001351515613d20565b6104226004803603610100811015610d9a57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a08101359060c081013515159060e001351515613dc6565b61042260048036036060811015610df257600080fd5b506001600160a01b03813581169160208101359091169060400135613f23565b61042260048036036060811015610e2857600080fd5b506001600160a01b03813581169160208101359091169060400135614025565b61042260048036036060811015610e5e57600080fd5b506001600160a01b038135811691602081013590911690604001356140c9565b61072e60048036036020811015610e9457600080fd5b50356141fe565b6104226004803603610100811015610eb257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a08101359060c081013515159060e001351515614210565b61042260048036036060811015610f0a57600080fd5b506001600160a01b03813581169160208101359091169060400135614372565b61042260048036036060811015610f4057600080fd5b506001600160a01b03813581169160208101359091169060400135614418565b61072e6144bc565b6104d06144c2565b6001546001600160a01b03163314610fbd576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b805182511461100f576040805162461bcd60e51b815260206004820152601960248201527854696d656c6f636b3a20696e76616c6964206c656e6774687360381b604482015290519081900360640190fd5b604080516346ea87af60e01b815230600482015290516001600160a01b038516916346ea87af9160248083019260209291908290030181600087803b15801561105757600080fd5b505af115801561106b573d6000803e3d6000fd5b505050506040513d602081101561108157600080fd5b50516110ee5760408051639cb7de4b60e01b81523060048201526001602482015290516001600160a01b03851691639cb7de4b91604480830192600092919082900301818387803b1580156110d557600080fd5b505af11580156110e9573d6000803e3d6000fd5b505050505b60005b82518110156111a757600083828151811061110857fe5b60200260200101519050600083838151811061112057fe5b60200260200101519050856001600160a01b03166341f2272483836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561118157600080fd5b505af1158015611195573d6000803e3d6000fd5b5050600190940193506110f192505050565b50505050565b6001546001600160a01b031633146111fa576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b604080516972656465656d5573646760b01b6020808301919091526001600160601b0319606087811b8216602a85015286901b16603e8301526052808301859052835180840390910181526072909201909252805191012061125b816144d1565b604080516001600160a01b0380871682528516602082015280820184905290517fe6bd553b6ef21f3a22ebc877b3aaedc30fe15826b8156d4e8c8b373ebf11d78b9181900360600190a150505050565b6001546001600160a01b031633146112f8576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b60408051631b5a5b9d60e21b6020808301919091526001600160601b0319606087811b8216602485015286901b166038830152604c80830185905283518084039091018152606c9092019092528051910120611353816144d1565b604080516001600160a01b038087168252851660208201528082018490526060810183905290517f23d37bec99db82564427c9bbfe48ad7434bccf413a40fd357fb838c90a0d68289181900360800190a150505050565b6001546001600160a01b031633146113f7576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b826001600160a01b031663f255527883836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050602060405180830381600087803b15801561145757600080fd5b505af115801561146b573d6000803e3d6000fd5b505050506040513d602081101561148157600080fd5b5050505050565b6003546001600160a01b031681565b6001546001600160a01b031633146114e4576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b604080516939b2ba2430b7323632b960b11b6020808301919091526001600160601b0319606087811b8216602a85015286901b16603e83015283151560f81b605283015282516033818403018152605390920190925280519101206115488161452a565b611551816145d6565b836001600160a01b0316639cb7de4b84846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001821515815260200192505050600060405180830381600087803b1580156115aa57600080fd5b505af11580156115be573d6000803e3d6000fd5b5050505050505050565b6001546001600160a01b03163314611615576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b816001600160a01b03166330455ede826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b15801561165d57600080fd5b505af1158015611671573d6000803e3d6000fd5b505050505050565b6001546001600160a01b031633146116c6576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b816001600160a01b031663b731dd87826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561165d57600080fd5b6001546001600160a01b03163314611759576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b604080516c3bb4ba34323930bbaa37b5b2b760991b6020808301919091526001600160601b0319606088811b8216602d85015287811b8216604185015286901b166055830152606980830185905283518084039091018152608990920190925280519101206117c78161452a565b6117d0816145d6565b846001600160a01b03166301e336678585856040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561183857600080fd5b505af115801561184c573d6000803e3d6000fd5b505050505050505050565b6001546001600160a01b031633146118a4576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b816001600160a01b031663f07bbf77826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b15801561165d57600080fd5b6001546001600160a01b03163314611939576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b60c882106119785760405162461bcd60e51b81526004018080602001828103825260248152602001806148f66024913960400191505060405180910390fd5b60c881106119b75760405162461bcd60e51b815260040180806020018281038252602a815260200180614aaa602a913960400191505060405180910390fd5b836001600160a01b0316638a27d4688484846040518463ffffffff1660e01b8152600401808481526020018381526020018281526020019350505050600060405180830381600087803b1580156115aa57600080fd5b6001546001600160a01b03163314611a5a576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b604080516939b2ba2430b7323632b960b11b6020808301919091526001600160601b0319606087811b8216602a85015286901b16603e83015283151560f81b60528301528251603381840301815260539092019092528051910120611abe816144d1565b604080516001600160a01b03808716825285166020820152831515818301526060810183905290517f1929c4e13b0dbbad7856b9ce1fc9dca98c7bf7cedd56e22c04dd60ad1d34fe4b9181900360800190a150505050565b6001546001600160a01b03163314611b63576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b816001600160a01b0316631785f53c826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561165d57600080fd5b6001546001600160a01b03163314611bff576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b6005811115611c51576040805162461bcd60e51b8152602060048201526019602482015278496e76616c6964205f707269636553616d706c65537061636560381b604482015290519081900360640190fd5b816001600160a01b0316632fa03b8f826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561165d57600080fd5b6001546001600160a01b03163314611ce4576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b816001600160a01b031663eb1c92a9826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b15801561165d57600080fd5b6001546001600160a01b03163314611d79576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b836001600160a01b031663d694376c8484846040518463ffffffff1660e01b815260040180846001600160a01b0316815260200183151581526020018281526020019350505050600060405180830381600087803b1580156115aa57600080fd5b6002546001600160a01b031681565b6207a12081565b6001546001600160a01b03163314611e3d576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b6040805176707269636546656564536574546f6b656e436f6e66696760481b6020808301919091526001600160601b0319606089811b8216603785015288811b8216604b85015287901b16605f8301526073820185905283151560f81b60938301528251607481840301815260949092019092528051910120611ebf8161452a565b611ec8816145d6565b60408051634b9ade4760e01b81526001600160a01b0387811660048301528681166024830152604482018690528415156064830152915191881691634b9ade479160848082019260009290919082900301818387803b158015611f2a57600080fd5b505af1158015611f3e573d6000803e3d6000fd5b50505050505050505050565b6001546001600160a01b03163314611f97576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b6040805176707269636546656564536574546f6b656e436f6e66696760481b6020808301919091526001600160601b0319606089811b8216603785015288811b8216604b85015287901b16605f8301526073820185905283151560f81b60938301528251607481840301815260949092019092528051910120612019816144d1565b604080516001600160a01b038089168252808816602083015286168183015260608101859052831515608082015290517f1b2ddf357ae016d8c127dcd3a73c34744fdeaeeb4b7ef1e04490cebf7f4816fe9181900360a00190a1505050505050565b6001546001600160a01b031633146120c8576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b6101f482111561211f576040805162461bcd60e51b815260206004820152601f60248201527f54696d656c6f636b3a20696e76616c6964205f6d696e50726f66697442707300604482015290519081900360640190fd5b60408051630daf9c2160e41b81526001600160a01b0386811660048301529151879283169163daf9c210916024808301926020929190829003018186803b15801561216957600080fd5b505afa15801561217d573d6000803e3d6000fd5b505050506040513d602081101561219357600080fd5b50516121d05760405162461bcd60e51b81526004018080602001828103825260238152602001806149626023913960400191505060405180910390fd5b6000816001600160a01b0316638ee573ac876040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561221f57600080fd5b505afa158015612233573d6000803e3d6000fd5b505050506040513d602081101561224957600080fd5b5051604080516342b60b0360e01b81526001600160a01b0389811660048301529151929350600092918516916342b60b0391602480820192602092909190829003018186803b15801561229b57600080fd5b505afa1580156122af573d6000803e3d6000fd5b505050506040513d60208110156122c557600080fd5b50516040805163db3555fb60e01b81526001600160a01b038a8116600483015291519293506000929186169163db3555fb91602480820192602092909190829003018186803b15801561231757600080fd5b505afa15801561232b573d6000803e3d6000fd5b505050506040513d602081101561234157600080fd5b505160408051633c5a6e3560e01b81526001600160a01b038b8116600483015260248201879052604482018b9052606482018a90526084820189905285151560a483015283151560c48301529151929350908b1691633c5a6e359160e48082019260009290919082900301818387803b1580156123bd57600080fd5b505af11580156123d1573d6000803e3d6000fd5b50505050505050505050505050565b6001546001600160a01b0316331461242d576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b6004546124459083906001600160a01b03168361467b565b5050565b6001546001600160a01b03163314612496576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b816001600160a01b031663fd34ec40826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b15801561165d57600080fd5b6001546001600160a01b0316331461252b576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b826001600160a01b0316634453a37483836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001821515815260200192505050600060405180830381600087803b15801561258457600080fd5b505af1158015612598573d6000803e3d6000fd5b50505050505050565b61012c81565b6001546001600160a01b031633146125f4576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b604080516c3bb4ba34323930bbaa37b5b2b760991b6020808301919091526001600160601b0319606088811b8216602d85015287811b8216604185015286901b16605583015260698083018590528351808403909101815260899092019092528051910120612662816144d1565b604080516001600160a01b0380881682528087166020830152851681830152606081018490526080810183905290517f9ed7b0f07a9eed51079fab67f6d0f141f167f5b17fdb5a23282280e15fcafed39181900360a00190a15050505050565b60055481565b6001546001600160a01b03163314612715576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b604080516539b2ba23b7bb60d11b6020808301919091526001600160601b0319606086811b8216602685015285901b16603a8301528251602e818403018152604e909201909252805191012061276a8161452a565b612773816145d6565b826001600160a01b031663cfad57a2836040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561258457600080fd5b6001546001600160a01b0316331461280f576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b604080516830b23228363ab3b4b760b91b6020808301919091526001600160601b0319606086811b8216602985015285901b16603d8301528251603181840301815260519092019092528051910120612867816144d1565b604080516001600160a01b0380861682528416602082015280820183905290517fc0ad20f21e0e6b9c02a7ecfb229e39b214cb1914a4d6f202e7f9ec7ffb9445f69181900360600190a1505050565b6001546001600160a01b03163314612903576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b6001600160a01b03821630141561295d576040805162461bcd60e51b8152602060048201526019602482015278151a5b595b1bd8dace881a5b9d985b1a590817dd185c99d95d603a1b604482015290519081900360640190fd5b816001600160a01b031663704b6c02826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561165d57600080fd5b6001546001600160a01b031633146129f9576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b816001600160a01b0316639917dc74826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b15801561165d57600080fd5b60076020526000908152604090205460ff1681565b6206978081565b6001546001600160a01b03163314612aaa576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b604080516830b23228363ab3b4b760b91b6020808301919091526001600160601b0319606086811b8216602985015285901b16603d8301528251603181840301815260519092019092528051910120612b028161452a565b612b0b816145d6565b826001600160a01b031663d8867fc8836040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561258457600080fd5b6001546001600160a01b03163314612ba7576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b61012c8910612be75760405162461bcd60e51b81526004018080602001828103825260218152602001806149416021913960400191505060405180910390fd5b61012c8810612c275760405162461bcd60e51b81526004018080602001828103825260278152602001806149ad6027913960400191505060405180910390fd5b61012c8710612c675760405162461bcd60e51b81526004018080602001828103825260298152602001806149d46029913960400191505060405180910390fd5b61012c8610612ca75760405162461bcd60e51b81526004018080602001828103825260258152602001806148d16025913960400191505060405180910390fd5b61012c8510612ce75760405162461bcd60e51b815260040180806020018281038252602b815260200180614ad4602b913960400191505060405180910390fd5b61012c8410612d275760405162461bcd60e51b815260040180806020018281038252602781526020018061491a6027913960400191505060405180910390fd5b68fc6f7c40458122964d601f1b8310612d715760405162461bcd60e51b8152600401808060200182810382526024815260200180614a216024913960400191505060405180910390fd5b604080516320759c0160e11b8152600481018b9052602481018a905260448101899052606481018890526084810187905260a4810186905260c4810185905260e4810184905282151561010482015290516001600160a01b038c16916340eb38029161012480830192600092919082900301818387803b158015612df457600080fd5b505af1158015612e08573d6000803e3d6000fd5b5050505050505050505050505050565b6002546001600160a01b03163314612e65576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b03163314612ed4576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b604080516972656465656d5573646760b01b6020808301919091526001600160601b0319606087811b8216602a85015286901b16603e83015260528083018590528351808403909101815260729092019092528051910120612f358161452a565b612f3e816145d6565b6000846001600160a01b031663f5b91b7b6040518163ffffffff1660e01b815260040160206040518083038186803b158015612f7957600080fd5b505afa158015612f8d573d6000803e3d6000fd5b505050506040513d6020811015612fa357600080fd5b5051604080516352f4877760e11b81523060048201526001602482015290519192506001600160a01b0387169163a5e90eee9160448082019260009290919082900301818387803b158015612ff757600080fd5b505af115801561300b573d6000803e3d6000fd5b5050604080516312b5ad0160e11b815230600482015290516001600160a01b038516935063256b5a029250602480830192600092919082900301818387803b15801561305657600080fd5b505af115801561306a573d6000803e3d6000fd5b5050604080516340c10f1960e01b81523060048201526024810187905290516001600160a01b03851693506340c10f199250604480830192600092919082900301818387803b1580156130bc57600080fd5b505af11580156130d0573d6000803e3d6000fd5b50505050806001600160a01b031663a9059cbb86856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561312b57600080fd5b505af115801561313f573d6000803e3d6000fd5b505050506040513d602081101561315557600080fd5b50506004805460408051630711e61960e41b81526001600160a01b03888116948201949094529183166024830152519187169163711e6190916044808201926020929091908290030181600087803b1580156131b057600080fd5b505af11580156131c4573d6000803e3d6000fd5b505050506040513d60208110156131da57600080fd5b5050604080516352f4877760e11b815230600482015260006024820181905291516001600160a01b0388169263a5e90eee926044808201939182900301818387803b15801561322857600080fd5b505af115801561323c573d6000803e3d6000fd5b50506040805163ceb68c2360e01b815230600482015290516001600160a01b038516935063ceb68c239250602480830192600092919082900301818387803b15801561183857600080fd5b6001546001600160a01b031633146132d4576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b604080516b1cd95d141c9a58d95199595960a21b6020808301919091526001600160601b0319606086811b8216602c85015285901b1682840152825160348184030181526054909201909252805191012061332e8161452a565b613337816145d6565b826001600160a01b031663724e78da836040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561258457600080fd5b6001546001600160a01b031633146133d3576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b6133dc816145d6565b50565b6001546001600160a01b0316331461342c576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b6207a1208111613483576040805162461bcd60e51b815260206004820152601e60248201527f54696d656c6f636b3a20696e76616c6964205f6d61784c657665726167650000604482015290519081900360640190fd5b816001600160a01b031663d3127e63826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561165d57600080fd5b6001546001600160a01b03163314613516576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b816001600160a01b031663604f37e9826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b15801561165d57600080fd5b6001546001600160a01b031633146135ab576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b604080516b1cd95d141c9a58d95199595960a21b6020808301919091526001600160601b0319606086811b8216602c85015285901b16828401528251603481840301815260549092019092528051910120613605816144d1565b604080516001600160a01b0380861682528416602082015280820183905290517fb878dd4b5762f4118ad54995be907dd2bcd915d942e4ac75580fba9b4ee4727f9181900360600190a1505050565b6001546001600160a01b031633146136a1576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b6001600160a01b03821660009081526007602052604090205460ff16156136ff5780156136ff5760405162461bcd60e51b81526004018080602001828103825260288152602001806149856028913960400191505060405180910390fd5b816001600160a01b0316635a47a1a7826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b15801561165d57600080fd5b60c881565b6001546001600160a01b03163314613799576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b64012a05f20081116137e9576040805162461bcd60e51b8152602060048201526014602482015273496e76616c6964205f6d6178476173507269636560601b604482015290519081900360640190fd5b816001600160a01b031663d2fa635e826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561165d57600080fd5b68327cb2734119d3b7a9601e1b81565b6001546001600160a01b0316331461388c576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b604080516539b2ba23b7bb60d11b6020808301919091526001600160601b0319606086811b8216602685015285901b16603a8301528251602e818403018152604e90920190925280519101206138e1816144d1565b604080516001600160a01b0380861682528416602082015280820183905290517f2701a94fd55a560e291f3c54d36580040670d6fde558a77a75d619e38139f7139181900360600190a1505050565b6001546001600160a01b0316331461397d576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b816001600160a01b0316632fbfe3d3826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561165d57600080fd5b6001546001600160a01b03163314613a10576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b62069780811115613a64576040805162461bcd60e51b81526020600482015260196024820152782a34b6b2b637b1b59d1034b73b30b634b2102fb13ab33332b960391b604482015290519081900360640190fd5b6000548111613aa45760405162461bcd60e51b8152600401808060200182810382526024815260200180614a456024913960400191505060405180910390fd5b600055565b6001546001600160a01b03163314613af6576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b60408051631b5a5b9d60e21b6020808301919091526001600160601b0319606087811b8216602485015286901b166038830152604c80830185905283518084039091018152606c9092019092528051910120613b518161452a565b613b5a816145d6565b6111a784848461467b565b6004546001600160a01b031681565b6001546001600160a01b03163314613bc1576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b816001600160a01b0316637c2eb9f7826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b15801561165d57600080fd5b6003546001600160a01b03163314613c56576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b826001600160a01b0316639cb7de4b83836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001821515815260200192505050600060405180830381600087803b15801561258457600080fd5b6001546001600160a01b03163314613cfc576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6003546001600160a01b03163314613d6d576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b826001600160a01b031663cf456ae783836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001821515815260200192505050600060405180830381600087803b15801561258457600080fd5b6001546001600160a01b03163314613e13576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b60408051727661756c74536574546f6b656e436f6e66696760681b6020808301919091526001600160601b031960608c811b821660338501528b901b166047830152605b8201899052607b8201889052609b820187905260bb820186905284151560f890811b60db840152841515901b60dc830152825160bd81840301815260dd9092019092528051910120613ea8816144d1565b604080516001600160a01b03808c1682528a166020820152808201899052606081018890526080810187905260a0810186905284151560c082015283151560e082015290517f3510e9d8245371c6c1061c33781ce16bd0eafa03cd3d0781865036520af4c743918190036101000190a1505050505050505050565b6001546001600160a01b03163314613f70576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b6040805166617070726f766560c81b6020808301919091526001600160601b0319606087811b8216602785015286901b16603b830152604f80830185905283518084039091018152606f9092019092528051910120613fce816144d1565b604080516001600160a01b038087168252851660208201528082018490526060810183905290517f6af9d86ba7407a934e941ed8ae5f779369a88fe8ba2cd1c204185d6f8a8287fd9181900360800190a150505050565b6001546001600160a01b03163314614072576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b826001600160a01b0316638585f4d283836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561258457600080fd5b6001546001600160a01b03163314614116576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b6040805166617070726f766560c81b6020808301919091526001600160601b0319606087811b8216602785015286901b16603b830152604f80830185905283518084039091018152606f90920190925280519101206141748161452a565b61417d816145d6565b836001600160a01b031663095ea7b384846040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156141d457600080fd5b505af11580156141e8573d6000803e3d6000fd5b505050506040513d602081101561167157600080fd5b60066020526000908152604090205481565b6001546001600160a01b0316331461425d576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b60408051727661756c74536574546f6b656e436f6e66696760681b6020808301919091526001600160601b031960608c811b821660338501528b901b166047830152605b8201899052607b8201889052609b820187905260bb820186905284151560f890811b60db840152841515901b60dc830152825160bd81840301815260dd90920190925280519101206142f28161452a565b6142fb816145d6565b60408051633c5a6e3560e01b81526001600160a01b038a81166004830152602482018a905260448201899052606482018890526084820187905285151560a483015284151560c48301529151918b1691633c5a6e359160e48082019260009290919082900301818387803b1580156123bd57600080fd5b6001546001600160a01b031633146143bf576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b604080516323b872dd60e01b81526001600160a01b038581166004830152306024830152604482018490529151918416916323b872dd916064808201926020929091908290030181600087803b15801561145757600080fd5b6001546001600160a01b03163314614465576040805162461bcd60e51b81526020600482015260136024820152600080516020614a69833981519152604482015290519081900360640190fd5b826001600160a01b0316639b88938083836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561258457600080fd5b60005481565b6001546001600160a01b031681565b6000546144df904290614871565b60008281526006602090815260409182902092909255805183815290517f5fb9c0ecf7b4a28c4c480212e868f9da7f373a2ed4d23498b0be6aadf35242fb929181900390910190a150565b60008181526006602052604090205461458a576040805162461bcd60e51b815260206004820152601e60248201527f54696d656c6f636b3a20616374696f6e206e6f74207369676e616c6c65640000604482015290519081900360640190fd5b60008181526006602052604090205442116133dc5760405162461bcd60e51b81526004018080602001828103825260248152602001806149fd6024913960400191505060405180910390fd5b600081815260066020526040902054614632576040805162461bcd60e51b81526020600482015260196024820152782a34b6b2b637b1b59d1034b73b30b634b2102fb0b1ba34b7b760391b604482015290519081900360640190fd5b600081815260066020908152604080832092909255815183815291517f194ed6dd5e37e2acc44a19455c3f208c4831ee695fe362d9c4ef2d316bc53aec9281900390910190a150565b604080516355138f0d60e11b8152306004820152905184916001600160a01b0383169163aa271e1a916024808201926020929091908290030181600087803b1580156146c657600080fd5b505af11580156146da573d6000803e3d6000fd5b505050506040513d60208110156146f057600080fd5b505161475d576040805163cf456ae760e01b81523060048201526001602482015290516001600160a01b0383169163cf456ae791604480830192600092919082900301818387803b15801561474457600080fd5b505af1158015614758573d6000803e3d6000fd5b505050505b806001600160a01b03166340c10f1984846040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156147b457600080fd5b505af11580156147c8573d6000803e3d6000fd5b50505050600554846001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561480857600080fd5b505afa15801561481c573d6000803e3d6000fd5b505050506040513d602081101561483257600080fd5b505111156111a75760405162461bcd60e51b8152600401808060200182810382526021815260200180614a896021913960400191505060405180910390fd5b6000828201838110156148c9576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b939250505056fe54696d656c6f636b3a20696e76616c6964205f737761704665654261736973506f696e747354696d656c6f636b3a20696e76616c6964205f66756e64696e6752617465466163746f7254696d656c6f636b3a20696e76616c6964205f6d617267696e4665654261736973506f696e747354696d656c6f636b3a20696e76616c6964205f7461784261736973506f696e747354696d656c6f636b3a20746f6b656e206e6f74207965742077686974656c697374656454696d656c6f636b3a20696e76616c6964205f696e507269766174655472616e736665724d6f646554696d656c6f636b3a20696e76616c6964205f737461626c655461784261736973506f696e747354696d656c6f636b3a20696e76616c6964205f6d696e744275726e4665654261736973506f696e747354696d656c6f636b3a20616374696f6e2074696d65206e6f74207965742070617373656454696d656c6f636b3a20696e76616c6964205f6c69717569646174696f6e46656555736454696d656c6f636b3a206275666665722063616e6e6f742062652064656372656173656454696d656c6f636b3a20666f7262696464656e0000000000000000000000000054696d656c6f636b3a206d6178546f6b656e537570706c7920657863656564656454696d656c6f636b3a20696e76616c6964205f737461626c6546756e64696e6752617465466163746f7254696d656c6f636b3a20696e76616c6964205f737461626c65537761704665654261736973506f696e7473a2646970667358221220499d9ab4e7b4429aafa0a4bb58a84647898c5b65737a9e218dae9a56287eafcf64736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
