{
  "_format": "hh-sol-artifact-1",
  "contractName": "DataAvailabilityRewardManager",
  "sourceName": "contracts/tokenPools/implementation/DataAvailabilityRewardManager.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_rewardExpiryOffset",
          "type": "uint256"
        },
        {
          "internalType": "contract StateConnector",
          "name": "_stateConnector",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_inflation",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "authorizedAmountWei",
          "type": "uint256"
        }
      ],
      "name": "DailyAuthorizedInflationSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "proposedGovernance",
          "type": "address"
        }
      ],
      "name": "GovernanceProposed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldGovernance",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newGoveranance",
          "type": "address"
        }
      ],
      "name": "GovernanceUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountReceivedWei",
          "type": "uint256"
        }
      ],
      "name": "InflationReceived",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "whoClaimed",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sentTo",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "rewardEpoch",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "RewardClaimed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "rewardEpochId",
          "type": "uint256"
        }
      ],
      "name": "RewardClaimsExpired",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "activate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "active",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claimGovernance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "_recipient",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "_rewardEpochs",
          "type": "uint256[]"
        }
      ],
      "name": "claimReward",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_rewardAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "dailyAuthorizedInflation",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "deactivate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_rewardEpoch",
          "type": "uint256"
        }
      ],
      "name": "getEpochReward",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_totalReward",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_claimedReward",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getInflationAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getRewardEpochToExpireNext",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_rewardEpoch",
          "type": "uint256"
        }
      ],
      "name": "getStateOfRewards",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "_claimed",
          "type": "bool"
        },
        {
          "internalType": "bool",
          "name": "_claimable",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTokenPoolSupplyData",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_foundationAllocatedFundsWei",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_totalInflationAuthorizedWei",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_totalClaimedWei",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "governance",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        }
      ],
      "name": "initialise",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "lastInflationAuthorizationReceivedTs",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        }
      ],
      "name": "proposeGovernance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proposedGovernance",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "receiveInflation",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "rewardEpochs",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "totalDataAvailabilityPeriodsMined",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "totalRewardWei",
          "type": "uint256"
        },
        {
          "internalType": "uint64",
          "name": "unclaimedDataAvailabilityPeriodsMined",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "unclaimedRewardWei",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rewardExpiryOffset",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_toAuthorizeWei",
          "type": "uint256"
        }
      ],
      "name": "setDailyAuthorizedInflation",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_inflation",
          "type": "address"
        }
      ],
      "name": "setInflation",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "stateConnector",
      "outputs": [
        {
          "internalType": "contract StateConnector",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalAwardedWei",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalClaimedWei",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalExpiredWei",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalInflationAuthorizedWei",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalInflationReceivedWei",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSelfDestructReceivedWei",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        }
      ],
      "name": "transferGovernance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60c06040523480156200001157600080fd5b506040516200233d3803806200233d833981810160405260808110156200003757600080fd5b508051602082015160408301516060909301519192909183806001600160a01b038116156200006b576200006b81620002bd565b506001600160a01b038116620000bb576040805162461bcd60e51b815260206004820152601060248201526f5f676f7665726e616e6365207a65726f60801b604482015290519081900360640190fd5b50600160025560408051808201909152601281527137379039ba30ba329031b7b73732b1ba37b960711b60208201526001600160a01b038316620001805760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620001445781810151838201526020016200012a565b50505050905090810190601f168015620001725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060408051808201909152600e81526d696e666c6174696f6e207a65726f60901b60208201526001600160a01b038216620001fe5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315620001445781810151838201526020016200012a565b5060408051808201909152601581527f7265776172642065787069727920696e76616c69640000000000000000000000602082015283620002825760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315620001445781810151838201526020016200012a565b50601080546001600160a01b0319166001600160a01b039290921691909117905560601b6001600160601b03191660a05260805250620003a1565b600154600160a01b900460ff16156200031d576040805162461bcd60e51b815260206004820152601460248201527f696e697469616c6973656420213d2066616c7365000000000000000000000000604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b179055600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b60805160a05160601c611f48620003f56000398061067b52806108af5280610c8f5280610e60528061130b528061183f5280611b76525080610936528061095e528061099752806115ef5250611f486000f3fe6080604052600436106101c25760003560e01c8063708e34ce116100f7578063b2af870a11610095578063d418634a11610064578063d418634a146105c4578063e273956314610607578063ed39d3f814610631578063ee323c9214610646576101c2565b8063b2af870a14610489578063c373a08e14610549578063d0c1c3931461057c578063d38bfff414610591576101c2565b80639f71043e116100d15780639f71043e1461039f578063a4472c10146103b4578063a5555aea1461040d578063a795f40914610422576101c2565b8063708e34ce1461034257806372993615146103575780639d6a890f1461036c576101c2565b8063473252c4116101645780635aa6e6751161013e5780635aa6e675146102ee5780635d36b190146103035780635de8b2f31461031857806360f7ac971461032d576101c2565b8063473252c4146102af57806347eda685146102c457806351b42b00146102d9576101c2565b80630cc2a8fe116101a05780630cc2a8fe1461022b5780630f15f4c0146102525780632dafdbbf146102675780633e7ff8571461029a576101c2565b8063025ecb32146101c757806302fb0c5e146101f857806306201f1d14610221575b600080fd5b3480156101d357600080fd5b506101dc610679565b604080516001600160a01b039092168252519081900360200190f35b34801561020457600080fd5b5061020d61069d565b604080519115158252519081900360200190f35b6102296106a6565b005b34801561023757600080fd5b50610240610839565b60408051918252519081900360200190f35b34801561025e57600080fd5b5061022961083f565b34801561027357600080fd5b5061027c61089f565b60408051938452602084019290925282820152519081900360600190f35b3480156102a657600080fd5b506102406108aa565b3480156102bb57600080fd5b5061024061098f565b3480156102d057600080fd5b50610240610995565b3480156102e557600080fd5b506102296109b9565b3480156102fa57600080fd5b506101dc610a16565b34801561030f57600080fd5b50610229610a25565b34801561032457600080fd5b50610240610ae7565b34801561033957600080fd5b506101dc610aed565b34801561034e57600080fd5b50610240610afc565b34801561036357600080fd5b50610240610b02565b34801561037857600080fd5b506102296004803603602081101561038f57600080fd5b50356001600160a01b0316610b08565b3480156103ab57600080fd5b50610240610be2565b3480156103c057600080fd5b506103ed600480360360408110156103d757600080fd5b506001600160a01b038135169060200135610be8565b604080519384529115156020840152151582820152519081900360600190f35b34801561041957600080fd5b50610240610d21565b34801561042e57600080fd5b5061044c6004803603602081101561044557600080fd5b5035610d27565b60405180856001600160401b03168152602001848152602001836001600160401b0316815260200182815260200194505050505060405180910390f35b34801561049557600080fd5b50610240600480360360408110156104ac57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156104d757600080fd5b8201836020820111156104e957600080fd5b8035906020019184602083028401116401000000008311171561050b57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610d6f945050505050565b34801561055557600080fd5b506102296004803603602081101561056c57600080fd5b50356001600160a01b0316611003565b34801561058857600080fd5b506102406110a8565b34801561059d57600080fd5b50610229600480360360208110156105b457600080fd5b50356001600160a01b03166110ae565b3480156105d057600080fd5b506105ee600480360360208110156105e757600080fd5b5035611170565b6040805192835260208301919091528051918290030190f35b34801561061357600080fd5b506102296004803603602081101561062a57600080fd5b503561123b565b34801561063d57600080fd5b506101dc6113a6565b34801561065257600080fd5b506102296004803603602081101561066957600080fd5b50356001600160a01b03166113b5565b7f000000000000000000000000000000000000000000000000000000000000000081565b60035460ff1681565b60105460408051808201909152600e81526d696e666c6174696f6e206f6e6c7960901b6020820152906001600160a01b031633146107625760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561072757818101518382015260200161070f565b50505050905090810190601f1680156107545780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600061076d6114a3565b600b5490915061077d90346114fd565b600b55600f8190556040805134815290517f95c4e29cc99bc027cfc3cd719d6fd973d5f0317061885fbb322b9b17d8d35d379181900360200190a1506107c1611560565b47146040518060400160405280600e81526020016d6f7574206f662062616c616e636560901b815250906108365760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561072757818101518382015260200161070f565b50565b60095481565b6000546001600160a01b03163314610890576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b6003805460ff19166001179055565b600a54600854600092565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663adc890326040518163ffffffff1660e01b815260040160206040518083038186803b15801561090657600080fd5b505afa15801561091a573d6000803e3d6000fd5b505050506040513d602081101561093057600080fd5b505190507f0000000000000000000000000000000000000000000000000000000000000000811115610986577f00000000000000000000000000000000000000000000000000000000000000009003905061098c565b60009150505b90565b600d5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b03163314610a0a576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b6003805460ff19169055565b6000546001600160a01b031681565b6001546001600160a01b03163314610a74576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd0818db185a5b585a5b9d609a1b604482015290519081900360640190fd5b600054600154604080516001600160a01b03938416815292909116602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b60075481565b6001546001600160a01b031681565b600e5481565b600c5481565b600154600160a01b900460ff1615610b5e576040805162461bcd60e51b8152602060048201526014602482015273696e697469616c6973656420213d2066616c736560601b604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b179055600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b60085481565b6006546040805180820190915260148152730eadcd6dcdeeedc40e4caeec2e4c840cae0dec6d60631b6020820152600091829182918510610c6a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561072757818101518382015260200161070f565b506000610c7986866000611584565b90508060200151935080604001519250610d17857f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663adc890326040518163ffffffff1660e01b815260040160206040518083038186803b158015610ce657600080fd5b505afa158015610cfa573d6000803e3d6000fd5b505050506040513d6020811015610d1057600080fd5b50516115ea565b9150509250925092565b600b5481565b60068181548110610d3757600080fd5b600091825260209091206004909102018054600182015460028301546003909301546001600160401b03928316945090929091169084565b60035460408051808201909152601a81527f726577617264206d616e61676572206465616374697661746564000000000000602082015260009160ff16610df75760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561072757818101518382015260200161070f565b50600280541415610e4f576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60028055610e5b6114a3565b5060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663adc890326040518163ffffffff1660e01b815260040160206040518083038186803b158015610eb757600080fd5b505afa158015610ecb573d6000803e3d6000fd5b505050506040513d6020811015610ee157600080fd5b5051905060005b8351811015610f6a57610f0e848281518110610f0057fe5b6020026020010151836115ea565b610f1757610f62565b6000610f3833868481518110610f2957fe5b60200260200101516001611584565b90506000610f5a87878581518110610f4c57fe5b602002602001015184611638565b949094019350505b600101610ee8565b50610f75848361175d565b5047600f556001600255610f87611560565b47146040518060400160405280600e81526020016d6f7574206f662062616c616e636560901b81525090610ffc5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561072757818101518382015260200161070f565b5092915050565b6000546001600160a01b03163314611054576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f1f95fb40be3a947982072902a887b521248d1d8931a39eb38f84f4d6fd758b699181900360200190a150565b600a5481565b6000546001600160a01b031633146110ff576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6006546040805180820190915260148152730eadcd6dcdeeedc40e4caeec2e4c840cae0dec6d60631b602082015260009182919084106111f15760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561072757818101518382015260200161070f565b50600683815481106111ff57fe5b90600052602060002090600402016001015491506006838154811061122057fe5b90600052602060002090600402016003015482039050915091565b60105460408051808201909152600e81526d696e666c6174696f6e206f6e6c7960901b6020820152906001600160a01b031633146112ba5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561072757818101518382015260200161070f565b50600e819055600a546112cd90826114fd565b600a5542600d556040805182815290517f187f32a0f765499f15b3bb52ed0aebf6015059f230f2ace7e701e60a476695959181900360200190a160007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663adc890326040518163ffffffff1660e01b815260040160206040518083038186803b15801561136257600080fd5b505afa158015611376573d6000803e3d6000fd5b505050506040513d602081101561138c57600080fd5b505190506113998161182f565b6113a281611a1b565b5050565b6010546001600160a01b031690565b6000546001600160a01b03163314611406576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b60408051808201909152600e81526d696e666c6174696f6e207a65726f60901b60208201526001600160a01b0382166114805760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561072757818101518382015260200161070f565b50601080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806114bb34600f546114fd90919063ffffffff16565b9050479150808211156114ef576114e7816114e184600c546114fd90919063ffffffff16565b90611abf565b600c556114f9565b808210156114f957fe5b5090565b600082820183811015611557576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b600061157f6008546114e1600c54600b546114fd90919063ffffffff16565b905090565b61158c611ed1565b6115968385611b1c565b15801560408301526115bc57816115b7576115b18385611b47565b60208201525b6115e3565b6115c68484611b72565b6001600160401b03168082526115dd908490611c1c565b60208201525b9392505050565b6000817f00000000000000000000000000000000000000000000000000000000000000008401101561161e5750600061155a565b600654831061162f5750600061155a565b50600192915050565b600081604001511561164c575060006115e3565b81516001600160401b038116156116a357806006858154811061166b57fe5b60009182526020909120600490910201600201805467ffffffffffffffff1981166001600160401b0391821693909303169190911790555b602083015180156116e05780600686815481106116bc57fe5b60009182526020909120600360049092020101805491909103905560088054820190555b60008581526005602090815260408083203380855290835292819020805460ff19166001908117825581018590558151898152928301859052815190936001600160a01b038b169390927f7a84a08b02c91f3c62d572853f966fc799bbd121e8ad7833a4494ab8dcfcb40492918290030190a35095945050505050565b80156113a2576040516000906001600160a01b0384169083908381818185875af1925050503d80600081146117ae576040519150601f19603f3d011682016040523d82523d6000602084013e6117b3565b606091505b50509050806040518060400160405280600c81526020016b18db185a5b4819985a5b195960a21b815250906118295760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561072757818101518382015260200161070f565b50505050565b6006545b818110156113a25760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166347453f37836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156118a157600080fd5b505afa1580156118b5573d6000803e3d6000fd5b505050506040513d60208110156118cb57600080fd5b505190506001600160401b0381166118ee57600680546001018155600052611a12565b60006119048385036118fe611ce6565b90611d0b565b60075490915061191490826114fd565b600755604080516080810182526001600160401b03808516808352602083018581529383019081526060830194855260068054600181018255600091909152925160049093027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f8101805494841667ffffffffffffffff1995861617905593517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d40850155517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d418401805491909216921691909117905590517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d42909101555b50600101611833565b60005b600654600454108015611a3a5750611a38600454836115ea565b155b15611aab57600660045481548110611a4e57fe5b906000526020600020906004020160030154810190507f5d05c64f281304391697cf987812e1a736413a062a9bdf39af4102209eb6fa586004546040518082815260200191505060405180910390a1600480546001019055611a1e565b600954611ab890826114fd565b6009555050565b600082821115611b16576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60009182526005602090815260408084206001600160a01b0393909316845291905290206001015490565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dccb2d3284846040518363ffffffff1660e01b815260040180836001600160a01b031681526020018281526020019250505060206040518083038186803b158015611be957600080fd5b505afa158015611bfd573d6000803e3d6000fd5b505050506040513d6020811015611c1357600080fd5b50519392505050565b60006001600160401b038216611c345750600061155a565b600060068481548110611c4357fe5b90600052602060002090600402016003015490508060001415611c6a57600091505061155a565b600060068581548110611c7957fe5b60009182526020909120600260049092020101546001600160401b0390811691508416811415611cab5750905061155a565b806001600160401b0316846001600160401b031610611cc657fe5b611cdd826001600160401b03808716908416611d72565b95945050505050565b600061157f611d02600954600754611abf90919063ffffffff16565b600a5490611abf565b6000808211611d61576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381611d6a57fe5b049392505050565b6000808211611dbb576040805162461bcd60e51b815260206004820152601060248201526f4469766973696f6e206279207a65726f60801b604482015290519081900360640190fd5b83611dc8575060006115e3565b83830283858281611dd557fe5b041415611dee57828181611de557fe5b049150506115e3565b6000838681611df957fe5b0490506000848781611e0757fe5b0690506000858781611e1557fe5b0490506000868881611e2357fe5b069050611e6b611e37886118fe8685611e78565b611e65611e448686611e78565b611e65611e518987611e78565b611e658d611e5f8c8b611e78565b90611e78565b906114fd565b9998505050505050505050565b600082611e875750600061155a565b82820282848281611e9457fe5b04146115575760405162461bcd60e51b8152600401808060200182810382526021815260200180611ef26021913960400191505060405180910390fd5b60408051606081018252600080825260208201819052918101919091529056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212208acee6b3cc4cb994f06c19084d6244f219fa36a73a175ec9db50080e315d41ef64736f6c63430007060033",
  "deployedBytecode": "0x6080604052600436106101c25760003560e01c8063708e34ce116100f7578063b2af870a11610095578063d418634a11610064578063d418634a146105c4578063e273956314610607578063ed39d3f814610631578063ee323c9214610646576101c2565b8063b2af870a14610489578063c373a08e14610549578063d0c1c3931461057c578063d38bfff414610591576101c2565b80639f71043e116100d15780639f71043e1461039f578063a4472c10146103b4578063a5555aea1461040d578063a795f40914610422576101c2565b8063708e34ce1461034257806372993615146103575780639d6a890f1461036c576101c2565b8063473252c4116101645780635aa6e6751161013e5780635aa6e675146102ee5780635d36b190146103035780635de8b2f31461031857806360f7ac971461032d576101c2565b8063473252c4146102af57806347eda685146102c457806351b42b00146102d9576101c2565b80630cc2a8fe116101a05780630cc2a8fe1461022b5780630f15f4c0146102525780632dafdbbf146102675780633e7ff8571461029a576101c2565b8063025ecb32146101c757806302fb0c5e146101f857806306201f1d14610221575b600080fd5b3480156101d357600080fd5b506101dc610679565b604080516001600160a01b039092168252519081900360200190f35b34801561020457600080fd5b5061020d61069d565b604080519115158252519081900360200190f35b6102296106a6565b005b34801561023757600080fd5b50610240610839565b60408051918252519081900360200190f35b34801561025e57600080fd5b5061022961083f565b34801561027357600080fd5b5061027c61089f565b60408051938452602084019290925282820152519081900360600190f35b3480156102a657600080fd5b506102406108aa565b3480156102bb57600080fd5b5061024061098f565b3480156102d057600080fd5b50610240610995565b3480156102e557600080fd5b506102296109b9565b3480156102fa57600080fd5b506101dc610a16565b34801561030f57600080fd5b50610229610a25565b34801561032457600080fd5b50610240610ae7565b34801561033957600080fd5b506101dc610aed565b34801561034e57600080fd5b50610240610afc565b34801561036357600080fd5b50610240610b02565b34801561037857600080fd5b506102296004803603602081101561038f57600080fd5b50356001600160a01b0316610b08565b3480156103ab57600080fd5b50610240610be2565b3480156103c057600080fd5b506103ed600480360360408110156103d757600080fd5b506001600160a01b038135169060200135610be8565b604080519384529115156020840152151582820152519081900360600190f35b34801561041957600080fd5b50610240610d21565b34801561042e57600080fd5b5061044c6004803603602081101561044557600080fd5b5035610d27565b60405180856001600160401b03168152602001848152602001836001600160401b0316815260200182815260200194505050505060405180910390f35b34801561049557600080fd5b50610240600480360360408110156104ac57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156104d757600080fd5b8201836020820111156104e957600080fd5b8035906020019184602083028401116401000000008311171561050b57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610d6f945050505050565b34801561055557600080fd5b506102296004803603602081101561056c57600080fd5b50356001600160a01b0316611003565b34801561058857600080fd5b506102406110a8565b34801561059d57600080fd5b50610229600480360360208110156105b457600080fd5b50356001600160a01b03166110ae565b3480156105d057600080fd5b506105ee600480360360208110156105e757600080fd5b5035611170565b6040805192835260208301919091528051918290030190f35b34801561061357600080fd5b506102296004803603602081101561062a57600080fd5b503561123b565b34801561063d57600080fd5b506101dc6113a6565b34801561065257600080fd5b506102296004803603602081101561066957600080fd5b50356001600160a01b03166113b5565b7f000000000000000000000000000000000000000000000000000000000000000081565b60035460ff1681565b60105460408051808201909152600e81526d696e666c6174696f6e206f6e6c7960901b6020820152906001600160a01b031633146107625760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561072757818101518382015260200161070f565b50505050905090810190601f1680156107545780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600061076d6114a3565b600b5490915061077d90346114fd565b600b55600f8190556040805134815290517f95c4e29cc99bc027cfc3cd719d6fd973d5f0317061885fbb322b9b17d8d35d379181900360200190a1506107c1611560565b47146040518060400160405280600e81526020016d6f7574206f662062616c616e636560901b815250906108365760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561072757818101518382015260200161070f565b50565b60095481565b6000546001600160a01b03163314610890576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b6003805460ff19166001179055565b600a54600854600092565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663adc890326040518163ffffffff1660e01b815260040160206040518083038186803b15801561090657600080fd5b505afa15801561091a573d6000803e3d6000fd5b505050506040513d602081101561093057600080fd5b505190507f0000000000000000000000000000000000000000000000000000000000000000811115610986577f00000000000000000000000000000000000000000000000000000000000000009003905061098c565b60009150505b90565b600d5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b03163314610a0a576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b6003805460ff19169055565b6000546001600160a01b031681565b6001546001600160a01b03163314610a74576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd0818db185a5b585a5b9d609a1b604482015290519081900360640190fd5b600054600154604080516001600160a01b03938416815292909116602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b60075481565b6001546001600160a01b031681565b600e5481565b600c5481565b600154600160a01b900460ff1615610b5e576040805162461bcd60e51b8152602060048201526014602482015273696e697469616c6973656420213d2066616c736560601b604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b179055600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b60085481565b6006546040805180820190915260148152730eadcd6dcdeeedc40e4caeec2e4c840cae0dec6d60631b6020820152600091829182918510610c6a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561072757818101518382015260200161070f565b506000610c7986866000611584565b90508060200151935080604001519250610d17857f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663adc890326040518163ffffffff1660e01b815260040160206040518083038186803b158015610ce657600080fd5b505afa158015610cfa573d6000803e3d6000fd5b505050506040513d6020811015610d1057600080fd5b50516115ea565b9150509250925092565b600b5481565b60068181548110610d3757600080fd5b600091825260209091206004909102018054600182015460028301546003909301546001600160401b03928316945090929091169084565b60035460408051808201909152601a81527f726577617264206d616e61676572206465616374697661746564000000000000602082015260009160ff16610df75760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561072757818101518382015260200161070f565b50600280541415610e4f576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60028055610e5b6114a3565b5060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663adc890326040518163ffffffff1660e01b815260040160206040518083038186803b158015610eb757600080fd5b505afa158015610ecb573d6000803e3d6000fd5b505050506040513d6020811015610ee157600080fd5b5051905060005b8351811015610f6a57610f0e848281518110610f0057fe5b6020026020010151836115ea565b610f1757610f62565b6000610f3833868481518110610f2957fe5b60200260200101516001611584565b90506000610f5a87878581518110610f4c57fe5b602002602001015184611638565b949094019350505b600101610ee8565b50610f75848361175d565b5047600f556001600255610f87611560565b47146040518060400160405280600e81526020016d6f7574206f662062616c616e636560901b81525090610ffc5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561072757818101518382015260200161070f565b5092915050565b6000546001600160a01b03163314611054576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f1f95fb40be3a947982072902a887b521248d1d8931a39eb38f84f4d6fd758b699181900360200190a150565b600a5481565b6000546001600160a01b031633146110ff576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6006546040805180820190915260148152730eadcd6dcdeeedc40e4caeec2e4c840cae0dec6d60631b602082015260009182919084106111f15760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561072757818101518382015260200161070f565b50600683815481106111ff57fe5b90600052602060002090600402016001015491506006838154811061122057fe5b90600052602060002090600402016003015482039050915091565b60105460408051808201909152600e81526d696e666c6174696f6e206f6e6c7960901b6020820152906001600160a01b031633146112ba5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561072757818101518382015260200161070f565b50600e819055600a546112cd90826114fd565b600a5542600d556040805182815290517f187f32a0f765499f15b3bb52ed0aebf6015059f230f2ace7e701e60a476695959181900360200190a160007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663adc890326040518163ffffffff1660e01b815260040160206040518083038186803b15801561136257600080fd5b505afa158015611376573d6000803e3d6000fd5b505050506040513d602081101561138c57600080fd5b505190506113998161182f565b6113a281611a1b565b5050565b6010546001600160a01b031690565b6000546001600160a01b03163314611406576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b60408051808201909152600e81526d696e666c6174696f6e207a65726f60901b60208201526001600160a01b0382166114805760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561072757818101518382015260200161070f565b50601080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806114bb34600f546114fd90919063ffffffff16565b9050479150808211156114ef576114e7816114e184600c546114fd90919063ffffffff16565b90611abf565b600c556114f9565b808210156114f957fe5b5090565b600082820183811015611557576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b600061157f6008546114e1600c54600b546114fd90919063ffffffff16565b905090565b61158c611ed1565b6115968385611b1c565b15801560408301526115bc57816115b7576115b18385611b47565b60208201525b6115e3565b6115c68484611b72565b6001600160401b03168082526115dd908490611c1c565b60208201525b9392505050565b6000817f00000000000000000000000000000000000000000000000000000000000000008401101561161e5750600061155a565b600654831061162f5750600061155a565b50600192915050565b600081604001511561164c575060006115e3565b81516001600160401b038116156116a357806006858154811061166b57fe5b60009182526020909120600490910201600201805467ffffffffffffffff1981166001600160401b0391821693909303169190911790555b602083015180156116e05780600686815481106116bc57fe5b60009182526020909120600360049092020101805491909103905560088054820190555b60008581526005602090815260408083203380855290835292819020805460ff19166001908117825581018590558151898152928301859052815190936001600160a01b038b169390927f7a84a08b02c91f3c62d572853f966fc799bbd121e8ad7833a4494ab8dcfcb40492918290030190a35095945050505050565b80156113a2576040516000906001600160a01b0384169083908381818185875af1925050503d80600081146117ae576040519150601f19603f3d011682016040523d82523d6000602084013e6117b3565b606091505b50509050806040518060400160405280600c81526020016b18db185a5b4819985a5b195960a21b815250906118295760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561072757818101518382015260200161070f565b50505050565b6006545b818110156113a25760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166347453f37836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156118a157600080fd5b505afa1580156118b5573d6000803e3d6000fd5b505050506040513d60208110156118cb57600080fd5b505190506001600160401b0381166118ee57600680546001018155600052611a12565b60006119048385036118fe611ce6565b90611d0b565b60075490915061191490826114fd565b600755604080516080810182526001600160401b03808516808352602083018581529383019081526060830194855260068054600181018255600091909152925160049093027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f8101805494841667ffffffffffffffff1995861617905593517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d40850155517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d418401805491909216921691909117905590517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d42909101555b50600101611833565b60005b600654600454108015611a3a5750611a38600454836115ea565b155b15611aab57600660045481548110611a4e57fe5b906000526020600020906004020160030154810190507f5d05c64f281304391697cf987812e1a736413a062a9bdf39af4102209eb6fa586004546040518082815260200191505060405180910390a1600480546001019055611a1e565b600954611ab890826114fd565b6009555050565b600082821115611b16576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60009182526005602090815260408084206001600160a01b0393909316845291905290206001015490565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dccb2d3284846040518363ffffffff1660e01b815260040180836001600160a01b031681526020018281526020019250505060206040518083038186803b158015611be957600080fd5b505afa158015611bfd573d6000803e3d6000fd5b505050506040513d6020811015611c1357600080fd5b50519392505050565b60006001600160401b038216611c345750600061155a565b600060068481548110611c4357fe5b90600052602060002090600402016003015490508060001415611c6a57600091505061155a565b600060068581548110611c7957fe5b60009182526020909120600260049092020101546001600160401b0390811691508416811415611cab5750905061155a565b806001600160401b0316846001600160401b031610611cc657fe5b611cdd826001600160401b03808716908416611d72565b95945050505050565b600061157f611d02600954600754611abf90919063ffffffff16565b600a5490611abf565b6000808211611d61576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381611d6a57fe5b049392505050565b6000808211611dbb576040805162461bcd60e51b815260206004820152601060248201526f4469766973696f6e206279207a65726f60801b604482015290519081900360640190fd5b83611dc8575060006115e3565b83830283858281611dd557fe5b041415611dee57828181611de557fe5b049150506115e3565b6000838681611df957fe5b0490506000848781611e0757fe5b0690506000858781611e1557fe5b0490506000868881611e2357fe5b069050611e6b611e37886118fe8685611e78565b611e65611e448686611e78565b611e65611e518987611e78565b611e658d611e5f8c8b611e78565b90611e78565b906114fd565b9998505050505050505050565b600082611e875750600061155a565b82820282848281611e9457fe5b04146115575760405162461bcd60e51b8152600401808060200182810382526021815260200180611ef26021913960400191505060405180910390fd5b60408051606081018252600080825260208201819052918101919091529056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212208acee6b3cc4cb994f06c19084d6244f219fa36a73a175ec9db50080e315d41ef64736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
