{
  "_format": "hh-sol-artifact-1",
  "contractName": "Config",
  "sourceName": "contracts/core/Config.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "NewOwner",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldPendingOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newPendingOwner",
          "type": "address"
        }
      ],
      "name": "NewPendingOwner",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldOracle",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOracle",
          "type": "address"
        }
      ],
      "name": "PriceOracleChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldInterval",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newInterval",
          "type": "uint256"
        }
      ],
      "name": "RebaseIntervalChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldGap",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newGap",
          "type": "uint256"
        }
      ],
      "name": "RebasePriceGapChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "router",
          "type": "address"
        }
      ],
      "name": "RouterRegistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "router",
          "type": "address"
        }
      ],
      "name": "RouterUnregistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldBeta",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "beta",
          "type": "uint256"
        }
      ],
      "name": "SetBeta",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "router",
          "type": "address"
        }
      ],
      "name": "SetEmergency",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldFeeParameter",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "feeParameter",
          "type": "uint256"
        }
      ],
      "name": "SetFeeParameter",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldInitMarginRatio",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "initMarginRatio",
          "type": "uint256"
        }
      ],
      "name": "SetInitMarginRatio",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldLiquidateFeeRatio",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "liquidateFeeRatio",
          "type": "uint256"
        }
      ],
      "name": "SetLiquidateFeeRatio",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldLiquidateThreshold",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "liquidateThreshold",
          "type": "uint256"
        }
      ],
      "name": "SetLiquidateThreshold",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldLpWithdrawThresholdForNet",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "lpWithdrawThresholdForNet",
          "type": "uint256"
        }
      ],
      "name": "SetLpWithdrawThresholdForNet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldLpWithdrawThresholdForTotal",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "lpWithdrawThresholdForTotal",
          "type": "uint256"
        }
      ],
      "name": "SetLpWithdrawThresholdForTotal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldMaxCPFBoost",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "maxCPFBoost",
          "type": "uint256"
        }
      ],
      "name": "SetMaxCPFBoost",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldTradingSlippage",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newTradingSlippage",
          "type": "uint256"
        }
      ],
      "name": "TradingSlippageChanged",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "acceptOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "beta",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "feeParameter",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "inEmergency",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "initMarginRatio",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "liquidateFeeRatio",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "liquidateThreshold",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "lpWithdrawThresholdForNet",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "lpWithdrawThresholdForTotal",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxCPFBoost",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendingOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "priceOracle",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rebaseInterval",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rebasePriceGap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "router",
          "type": "address"
        }
      ],
      "name": "registerRouter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "routerMap",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "newBeta",
          "type": "uint8"
        }
      ],
      "name": "setBeta",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "router",
          "type": "address"
        }
      ],
      "name": "setEmergency",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newFeeParameter",
          "type": "uint256"
        }
      ],
      "name": "setFeeParameter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marginRatio",
          "type": "uint256"
        }
      ],
      "name": "setInitMarginRatio",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "feeRatio",
          "type": "uint256"
        }
      ],
      "name": "setLiquidateFeeRatio",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "threshold",
          "type": "uint256"
        }
      ],
      "name": "setLiquidateThreshold",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newLpWithdrawThresholdForNet",
          "type": "uint256"
        }
      ],
      "name": "setLpWithdrawThresholdForNet",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newLpWithdrawThresholdForTotal",
          "type": "uint256"
        }
      ],
      "name": "setLpWithdrawThresholdForTotal",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newMaxCPFBoost",
          "type": "uint256"
        }
      ],
      "name": "setMaxCPFBoost",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newPendingOwner",
          "type": "address"
        }
      ],
      "name": "setPendingOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOracle",
          "type": "address"
        }
      ],
      "name": "setPriceOracle",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "interval",
          "type": "uint256"
        }
      ],
      "name": "setRebaseInterval",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newGap",
          "type": "uint256"
        }
      ],
      "name": "setRebasePriceGap",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newTradingSlippage",
          "type": "uint256"
        }
      ],
      "name": "setTradingSlippage",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tradingSlippage",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "router",
          "type": "address"
        }
      ],
      "name": "unregisterRouter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526002805460ff60a01b1916600f60a31b179055600a600381815560045561038460059081556006556103206007556127106008556064600955600b808255556032600c5534801561005457600080fd5b50600080546001600160a01b03191633179055611228806100766000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80638da5cb5b1161011a578063e30c3978116100ad578063ec7b21511161007c578063ec7b21511461040f578063ef037fb914610432578063fbede22414610445578063fda2854914610458578063fdcb648c1461046b576101fb565b8063e30c3978146103d8578063e57d5636146103eb578063eb02a115146103f4578063ebbc496514610407576101fb565b80639faa3c91116100e95780639faa3c9114610383578063b85f9f0b146103a9578063c42069ec146103b2578063d73e732e146103c5576101fb565b80638da5cb5b1461032b5780638ecb45511461033e5780638ff471f7146103475780639518332e14610350576101fb565b8063683b41ef116101925780637367ec3e116101615780637367ec3e146102fd57806383866469146103065780638392897d1461030f57806389edeb7414610322576101fb565b8063683b41ef146102bb5780636dd26a07146102ce578063711a8f52146102d757806371fdd72d146102ea576101fb565b80634b225189116101ce5780634b2251891461026f5780635012e0a414610282578063530e784f14610295578063620d4d2b146102a8576101fb565b806322b19af7146102005780632630c12f146102155780633cf209b3146102455780633ffd2ee21461025c575b600080fd5b61021361020e36600461112d565b610474565b005b600254610228906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61024e600c5481565b60405190815260200161023c565b61021361026a36600461115b565b610577565b61021361027d36600461115b565b61064d565b61021361029036600461112d565b6106b8565b6102136102a336600461112d565b6107b0565b6102136102b636600461115b565b61085c565b6102136102c936600461115b565b61093d565b61024e60095481565b6102136102e536600461115b565b610a10565b6102136102f8366004611173565b610ae5565b61024e600b5481565b61024e60035481565b61021361031d36600461115b565b610bd2565b61024e60055481565b600054610228906001600160a01b031681565b61024e60045481565b61024e60065481565b61037361035e36600461112d565b600d6020526000908152604090205460ff1681565b604051901515815260200161023c565b60025461039790600160a01b900460ff1681565b60405160ff909116815260200161023c565b61024e600a5481565b6102136103c036600461112d565b610c8c565b6102136103d336600461115b565b610d67565b600154610228906001600160a01b031681565b61024e60075481565b61021361040236600461112d565b610dd2565b610213610ea7565b61037361041d36600461112d565b600e6020526000908152604090205460ff1681565b61021361044036600461115b565b610f9b565b61021361045336600461115b565b611006565b61021361046636600461115b565b6110c2565b61024e60085481565b6000546001600160a01b031633146104a75760405162461bcd60e51b815260040161049e906111c2565b60405180910390fd5b6001600160a01b0381166104cd5760405162461bcd60e51b815260040161049e90611194565b6001600160a01b0381166000908152600d602052604090205460ff161561052b5760405162461bcd60e51b815260206004820152601260248201527110dbdb999a59ce88149151d254d51154915160721b604482015260640161049e565b6001600160a01b0381166000818152600d6020526040808220805460ff19166001179055517f94df8c3a8087dce110e5fbc5acf380c83c94bbd31b2c8ed4c08e1396a696e1a89190a250565b6000546001600160a01b031633146105a15760405162461bcd60e51b815260040161049e906111c2565b612328811180156105b457506127108111155b61060c5760405162461bcd60e51b815260206004820152602360248201527f436f6e6669673a20494e56414c49445f4c49515549444154455f54485245534860448201526213d31160ea1b606482015260840161049e565b60085460408051918252602082018390527f33cf718637d6f1faf404b6902a2b551102381524c3b3c83f85cb3681e40758f7910160405180910390a1600855565b6000546001600160a01b031633146106775760405162461bcd60e51b815260040161049e906111c2565b600a5460408051918252602082018390527fd467fef04f1829519a852bd1ec06607466b3f22c9a92c9b0ec2efab69e98f0f2910160405180910390a1600a55565b6000546001600160a01b031633146106e25760405162461bcd60e51b815260040161049e906111c2565b6001600160a01b0381166107085760405162461bcd60e51b815260040161049e90611194565b6001600160a01b0381166000908152600d602052604090205460ff166107675760405162461bcd60e51b815260206004820152601460248201527310dbdb999a59ce881553949151d254d51154915160621b604482015260640161049e565b6001600160a01b0381166000818152600d6020526040808220805460ff19169055517f75651c5c467d4644a640a67bb1f11c3b5e6e05c68283a21a248c9b2685e4fa099190a250565b6000546001600160a01b031633146107da5760405162461bcd60e51b815260040161049e906111c2565b6001600160a01b0381166108005760405162461bcd60e51b815260040161049e90611194565b6002546040516001600160a01b038084169216907f40bddd72ea96b80dae14e3d13e8ce2c4ecd2500d88c6c0004d24a00deab28f9c90600090a3600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146108865760405162461bcd60e51b815260040161049e906111c2565b6001600b541015801561089c57506064600b5411155b6108fc5760405162461bcd60e51b815260206004820152602b60248201527f436f6e6669673a20494e56414c49445f4c49515549444154455f54485245534860448201526a13d31117d193d497d3915560aa1b606482015260840161049e565b600b5460408051918252602082018390527f82a280d2c70c751f71c47646c690aa43cc99a8660fb5f00e80fceb8d0031a017910160405180910390a1600b55565b6000546001600160a01b031633146109675760405162461bcd60e51b815260040161049e906111c2565b6000811180156109775750606481105b6109cf5760405162461bcd60e51b8152602060048201526024808201527f436f6e6669673a2054524144494e475f534c4950504147455f52414e47455f45604482015263292927a960e11b606482015260840161049e565b60065460408051918252602082018390527f93301c5c8702bd9fef38d0e194884f0dcdceec480fbdac4620781ad65ca09dea910160405180910390a1600655565b6000546001600160a01b03163314610a3a5760405162461bcd60e51b815260040161049e906111c2565b600081118015610a4c57506107d08111155b610aa45760405162461bcd60e51b815260206004820152602360248201527f436f6e6669673a20494e56414c49445f4c49515549444154455f4645455f524160448201526254494f60e81b606482015260840161049e565b60095460408051918252602082018390527f6e8fb8d7ccbce74238212d18376842dde6f674e4404bdcc2762602939d0fb86c910160405180910390a1600955565b6000546001600160a01b03163314610b0f5760405162461bcd60e51b815260040161049e906111c2565b60328160ff1610158015610b27575060c88160ff1611155b610b6a5760405162461bcd60e51b8152602060048201526014602482015273436f6e6669673a20494e56414c49445f4245544160601b604482015260640161049e565b6002546040805160ff600160a01b9093048316815291831660208301527fa2545869d941985a4dda10a4646a6ca753ab7789f05cf35cb7fd1ca56f7ea412910160405180910390a16002805460ff909216600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b03163314610bfc5760405162461bcd60e51b815260040161049e906111c2565b600081118015610c0c5750606481105b610c4b5760405162461bcd60e51b815260206004820152601060248201526f0436f6e6669673a205a45524f5f4741560841b604482015260640161049e565b60045460408051918252602082018390527f3dcf61c33d20fa3fc1936a5cefe7c78cc9b97adaadcf393a558b922577b83ba4910160405180910390a1600455565b6000546001600160a01b03163314610cb65760405162461bcd60e51b815260040161049e906111c2565b6001546001600160a01b0382811691161415610d0b5760405162461bcd60e51b815260206004820152601460248201527313dddb98589b194e881053149150511657d4d15560621b604482015260640161049e565b6001546040516001600160a01b038084169216907fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b90600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d915760405162461bcd60e51b815260040161049e906111c2565b60035460408051918252602082018390527f925aaf6ac64a831f734927a8208b1f475181ebdc9aa05aca723b5af4b419a3f8910160405180910390a1600355565b6000546001600160a01b03163314610dfc5760405162461bcd60e51b815260040161049e906111c2565b6001600160a01b0381166000908152600d602052604090205460ff16610e5b5760405162461bcd60e51b815260206004820152601460248201527310dbdb999a59ce881553949151d254d51154915160621b604482015260640161049e565b6001600160a01b0381166000818152600e6020526040808220805460ff19166001179055517fecd4fa7e5f855e908d57952c76af5585f7725f3524c7da4f3d336619e17b276d9190a250565b6001546001600160a01b03163314610f015760405162461bcd60e51b815260206004820152601e60248201527f4f776e61626c653a20524551554952455f50454e44494e475f4f574e45520000604482015260640161049e565b60008054600180546001600160a01b038082166001600160a01b03198086168217808855931690935560405193811694929391169184917f70aea8d848e8a90fb7661b227dc522eb6395c3dac71b63cb59edd5c9899b23649190a36001546040516001600160a01b03918216918316907fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b90600090a35050565b6000546001600160a01b03163314610fc55760405162461bcd60e51b815260040161049e906111c2565b60055460408051918252602082018390527fe53d8256da2697e24f3ec42a36b999071c1254abd9d21308a86ded54d1010fbe910160405180910390a1600555565b6000546001600160a01b031633146110305760405162461bcd60e51b815260040161049e906111c2565b60648110156110815760405162461bcd60e51b815260206004820152601c60248201527f436f6e6669673a20494e56414c49445f4d415247494e5f524154494f00000000604482015260640161049e565b60075460408051918252602082018390527f5edea59d534a04dd802be5d64f704cb2beda3fc7e16ee59646b655352202da80910160405180910390a1600755565b6000546001600160a01b031633146110ec5760405162461bcd60e51b815260040161049e906111c2565b600c5460408051918252602082018390527f9b0940675d31c4980e6dbbe4641a052f736cf663a0d484b63e6a6daee3755578910160405180910390a1600c55565b60006020828403121561113e578081fd5b81356001600160a01b0381168114611154578182fd5b9392505050565b60006020828403121561116c578081fd5b5035919050565b600060208284031215611184578081fd5b813560ff81168114611154578182fd5b602080825260149082015273436f6e6669673a205a45524f5f4144445245535360601b604082015260600190565b60208082526016908201527527bbb730b136329d102922a8aaa4a922afa7aba722a960511b60408201526060019056fea2646970667358221220f767a955e0879079f0166c282aecc9232f6c20794537e5bb5f8cbe4c9b58c5f064736f6c63430008020033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c80638da5cb5b1161011a578063e30c3978116100ad578063ec7b21511161007c578063ec7b21511461040f578063ef037fb914610432578063fbede22414610445578063fda2854914610458578063fdcb648c1461046b576101fb565b8063e30c3978146103d8578063e57d5636146103eb578063eb02a115146103f4578063ebbc496514610407576101fb565b80639faa3c91116100e95780639faa3c9114610383578063b85f9f0b146103a9578063c42069ec146103b2578063d73e732e146103c5576101fb565b80638da5cb5b1461032b5780638ecb45511461033e5780638ff471f7146103475780639518332e14610350576101fb565b8063683b41ef116101925780637367ec3e116101615780637367ec3e146102fd57806383866469146103065780638392897d1461030f57806389edeb7414610322576101fb565b8063683b41ef146102bb5780636dd26a07146102ce578063711a8f52146102d757806371fdd72d146102ea576101fb565b80634b225189116101ce5780634b2251891461026f5780635012e0a414610282578063530e784f14610295578063620d4d2b146102a8576101fb565b806322b19af7146102005780632630c12f146102155780633cf209b3146102455780633ffd2ee21461025c575b600080fd5b61021361020e36600461112d565b610474565b005b600254610228906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61024e600c5481565b60405190815260200161023c565b61021361026a36600461115b565b610577565b61021361027d36600461115b565b61064d565b61021361029036600461112d565b6106b8565b6102136102a336600461112d565b6107b0565b6102136102b636600461115b565b61085c565b6102136102c936600461115b565b61093d565b61024e60095481565b6102136102e536600461115b565b610a10565b6102136102f8366004611173565b610ae5565b61024e600b5481565b61024e60035481565b61021361031d36600461115b565b610bd2565b61024e60055481565b600054610228906001600160a01b031681565b61024e60045481565b61024e60065481565b61037361035e36600461112d565b600d6020526000908152604090205460ff1681565b604051901515815260200161023c565b60025461039790600160a01b900460ff1681565b60405160ff909116815260200161023c565b61024e600a5481565b6102136103c036600461112d565b610c8c565b6102136103d336600461115b565b610d67565b600154610228906001600160a01b031681565b61024e60075481565b61021361040236600461112d565b610dd2565b610213610ea7565b61037361041d36600461112d565b600e6020526000908152604090205460ff1681565b61021361044036600461115b565b610f9b565b61021361045336600461115b565b611006565b61021361046636600461115b565b6110c2565b61024e60085481565b6000546001600160a01b031633146104a75760405162461bcd60e51b815260040161049e906111c2565b60405180910390fd5b6001600160a01b0381166104cd5760405162461bcd60e51b815260040161049e90611194565b6001600160a01b0381166000908152600d602052604090205460ff161561052b5760405162461bcd60e51b815260206004820152601260248201527110dbdb999a59ce88149151d254d51154915160721b604482015260640161049e565b6001600160a01b0381166000818152600d6020526040808220805460ff19166001179055517f94df8c3a8087dce110e5fbc5acf380c83c94bbd31b2c8ed4c08e1396a696e1a89190a250565b6000546001600160a01b031633146105a15760405162461bcd60e51b815260040161049e906111c2565b612328811180156105b457506127108111155b61060c5760405162461bcd60e51b815260206004820152602360248201527f436f6e6669673a20494e56414c49445f4c49515549444154455f54485245534860448201526213d31160ea1b606482015260840161049e565b60085460408051918252602082018390527f33cf718637d6f1faf404b6902a2b551102381524c3b3c83f85cb3681e40758f7910160405180910390a1600855565b6000546001600160a01b031633146106775760405162461bcd60e51b815260040161049e906111c2565b600a5460408051918252602082018390527fd467fef04f1829519a852bd1ec06607466b3f22c9a92c9b0ec2efab69e98f0f2910160405180910390a1600a55565b6000546001600160a01b031633146106e25760405162461bcd60e51b815260040161049e906111c2565b6001600160a01b0381166107085760405162461bcd60e51b815260040161049e90611194565b6001600160a01b0381166000908152600d602052604090205460ff166107675760405162461bcd60e51b815260206004820152601460248201527310dbdb999a59ce881553949151d254d51154915160621b604482015260640161049e565b6001600160a01b0381166000818152600d6020526040808220805460ff19169055517f75651c5c467d4644a640a67bb1f11c3b5e6e05c68283a21a248c9b2685e4fa099190a250565b6000546001600160a01b031633146107da5760405162461bcd60e51b815260040161049e906111c2565b6001600160a01b0381166108005760405162461bcd60e51b815260040161049e90611194565b6002546040516001600160a01b038084169216907f40bddd72ea96b80dae14e3d13e8ce2c4ecd2500d88c6c0004d24a00deab28f9c90600090a3600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146108865760405162461bcd60e51b815260040161049e906111c2565b6001600b541015801561089c57506064600b5411155b6108fc5760405162461bcd60e51b815260206004820152602b60248201527f436f6e6669673a20494e56414c49445f4c49515549444154455f54485245534860448201526a13d31117d193d497d3915560aa1b606482015260840161049e565b600b5460408051918252602082018390527f82a280d2c70c751f71c47646c690aa43cc99a8660fb5f00e80fceb8d0031a017910160405180910390a1600b55565b6000546001600160a01b031633146109675760405162461bcd60e51b815260040161049e906111c2565b6000811180156109775750606481105b6109cf5760405162461bcd60e51b8152602060048201526024808201527f436f6e6669673a2054524144494e475f534c4950504147455f52414e47455f45604482015263292927a960e11b606482015260840161049e565b60065460408051918252602082018390527f93301c5c8702bd9fef38d0e194884f0dcdceec480fbdac4620781ad65ca09dea910160405180910390a1600655565b6000546001600160a01b03163314610a3a5760405162461bcd60e51b815260040161049e906111c2565b600081118015610a4c57506107d08111155b610aa45760405162461bcd60e51b815260206004820152602360248201527f436f6e6669673a20494e56414c49445f4c49515549444154455f4645455f524160448201526254494f60e81b606482015260840161049e565b60095460408051918252602082018390527f6e8fb8d7ccbce74238212d18376842dde6f674e4404bdcc2762602939d0fb86c910160405180910390a1600955565b6000546001600160a01b03163314610b0f5760405162461bcd60e51b815260040161049e906111c2565b60328160ff1610158015610b27575060c88160ff1611155b610b6a5760405162461bcd60e51b8152602060048201526014602482015273436f6e6669673a20494e56414c49445f4245544160601b604482015260640161049e565b6002546040805160ff600160a01b9093048316815291831660208301527fa2545869d941985a4dda10a4646a6ca753ab7789f05cf35cb7fd1ca56f7ea412910160405180910390a16002805460ff909216600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b03163314610bfc5760405162461bcd60e51b815260040161049e906111c2565b600081118015610c0c5750606481105b610c4b5760405162461bcd60e51b815260206004820152601060248201526f0436f6e6669673a205a45524f5f4741560841b604482015260640161049e565b60045460408051918252602082018390527f3dcf61c33d20fa3fc1936a5cefe7c78cc9b97adaadcf393a558b922577b83ba4910160405180910390a1600455565b6000546001600160a01b03163314610cb65760405162461bcd60e51b815260040161049e906111c2565b6001546001600160a01b0382811691161415610d0b5760405162461bcd60e51b815260206004820152601460248201527313dddb98589b194e881053149150511657d4d15560621b604482015260640161049e565b6001546040516001600160a01b038084169216907fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b90600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d915760405162461bcd60e51b815260040161049e906111c2565b60035460408051918252602082018390527f925aaf6ac64a831f734927a8208b1f475181ebdc9aa05aca723b5af4b419a3f8910160405180910390a1600355565b6000546001600160a01b03163314610dfc5760405162461bcd60e51b815260040161049e906111c2565b6001600160a01b0381166000908152600d602052604090205460ff16610e5b5760405162461bcd60e51b815260206004820152601460248201527310dbdb999a59ce881553949151d254d51154915160621b604482015260640161049e565b6001600160a01b0381166000818152600e6020526040808220805460ff19166001179055517fecd4fa7e5f855e908d57952c76af5585f7725f3524c7da4f3d336619e17b276d9190a250565b6001546001600160a01b03163314610f015760405162461bcd60e51b815260206004820152601e60248201527f4f776e61626c653a20524551554952455f50454e44494e475f4f574e45520000604482015260640161049e565b60008054600180546001600160a01b038082166001600160a01b03198086168217808855931690935560405193811694929391169184917f70aea8d848e8a90fb7661b227dc522eb6395c3dac71b63cb59edd5c9899b23649190a36001546040516001600160a01b03918216918316907fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b90600090a35050565b6000546001600160a01b03163314610fc55760405162461bcd60e51b815260040161049e906111c2565b60055460408051918252602082018390527fe53d8256da2697e24f3ec42a36b999071c1254abd9d21308a86ded54d1010fbe910160405180910390a1600555565b6000546001600160a01b031633146110305760405162461bcd60e51b815260040161049e906111c2565b60648110156110815760405162461bcd60e51b815260206004820152601c60248201527f436f6e6669673a20494e56414c49445f4d415247494e5f524154494f00000000604482015260640161049e565b60075460408051918252602082018390527f5edea59d534a04dd802be5d64f704cb2beda3fc7e16ee59646b655352202da80910160405180910390a1600755565b6000546001600160a01b031633146110ec5760405162461bcd60e51b815260040161049e906111c2565b600c5460408051918252602082018390527f9b0940675d31c4980e6dbbe4641a052f736cf663a0d484b63e6a6daee3755578910160405180910390a1600c55565b60006020828403121561113e578081fd5b81356001600160a01b0381168114611154578182fd5b9392505050565b60006020828403121561116c578081fd5b5035919050565b600060208284031215611184578081fd5b813560ff81168114611154578182fd5b602080825260149082015273436f6e6669673a205a45524f5f4144445245535360601b604082015260600190565b60208082526016908201527527bbb730b136329d102922a8aaa4a922afa7aba722a960511b60408201526060019056fea2646970667358221220f767a955e0879079f0166c282aecc9232f6c20794537e5bb5f8cbe4c9b58c5f064736f6c63430008020033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
