import json

WEPIGGY_DISTRIBUTION_ABI = json.loads('''
[
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"pid",
            "type":"uint256"
         }
      ],
      "name":"ClaimWpcFromPiggyBreeder",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"contract PToken",
            "name":"pToken",
            "type":"address"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"borrower",
            "type":"address"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"wpcDelta",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"wpcBorrowIndex",
            "type":"uint256"
         }
      ],
      "name":"DistributedBorrowerWpc",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"contract PToken",
            "name":"pToken",
            "type":"address"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"supplier",
            "type":"address"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"wpcDelta",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"wpcSupplyIndex",
            "type":"uint256"
         }
      ],
      "name":"DistributedSupplierWpc",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":false,
            "internalType":"string",
            "name":"action",
            "type":"string"
         },
         {
            "indexed":false,
            "internalType":"bool",
            "name":"state",
            "type":"bool"
         }
      ],
      "name":"EnableState",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"previousOwner",
            "type":"address"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"newOwner",
            "type":"address"
         }
      ],
      "name":"OwnershipTransferred",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":false,
            "internalType":"contract IERC20",
            "name":"token",
            "type":"address"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"pid",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"amount",
            "type":"uint256"
         }
      ],
      "name":"StakeTokenToPiggyBreeder",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"contract PToken",
            "name":"pToken",
            "type":"address"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"newSpeed",
            "type":"uint256"
         }
      ],
      "name":"WpcSpeedUpdated",
      "type":"event"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"pid",
            "type":"uint256"
         }
      ],
      "name":"_claimWpcFromPiggyBreeder",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address[]",
            "name":"pTokens",
            "type":"address[]"
         }
      ],
      "name":"_resetWpcSupplyState",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"bool",
            "name":"state",
            "type":"bool"
         }
      ],
      "name":"_setEnableAll",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"bool",
            "name":"state",
            "type":"bool"
         }
      ],
      "name":"_setEnableDistributeBorrowWpc",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"bool",
            "name":"state",
            "type":"bool"
         }
      ],
      "name":"_setEnableDistributeMintWpc",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"bool",
            "name":"state",
            "type":"bool"
         }
      ],
      "name":"_setEnableDistributeRedeemWpc",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"bool",
            "name":"state",
            "type":"bool"
         }
      ],
      "name":"_setEnableDistributeRepayBorrowWpc",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"bool",
            "name":"state",
            "type":"bool"
         }
      ],
      "name":"_setEnableDistributeSeizeWpc",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"bool",
            "name":"state",
            "type":"bool"
         }
      ],
      "name":"_setEnableDistributeTransferWpc",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"bool",
            "name":"state",
            "type":"bool"
         }
      ],
      "name":"_setEnableWpcClaim",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_piggy",
            "type":"address"
         }
      ],
      "name":"_setPiggy",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"contract PToken",
            "name":"pToken",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"wpcSpeed",
            "type":"uint256"
         }
      ],
      "name":"_setWpcSpeed",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"contract IERC20",
            "name":"token",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"pid",
            "type":"uint256"
         }
      ],
      "name":"_stakeTokenToPiggyBreeder",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"token",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"to",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"amount",
            "type":"uint256"
         }
      ],
      "name":"_transferToken",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"to",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"amount",
            "type":"uint256"
         }
      ],
      "name":"_transferWpc",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"holder",
            "type":"address"
         },
         {
            "internalType":"contract PToken[]",
            "name":"pTokens",
            "type":"address[]"
         }
      ],
      "name":"claimWpc",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address[]",
            "name":"holders",
            "type":"address[]"
         },
         {
            "internalType":"contract PToken[]",
            "name":"pTokens",
            "type":"address[]"
         },
         {
            "internalType":"bool",
            "name":"borrowers",
            "type":"bool"
         },
         {
            "internalType":"bool",
            "name":"suppliers",
            "type":"bool"
         }
      ],
      "name":"claimWpc",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"holder",
            "type":"address"
         }
      ],
      "name":"claimWpc",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"comptroller",
      "outputs":[
         {
            "internalType":"contract Comptroller",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"pToken",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"borrower",
            "type":"address"
         },
         {
            "internalType":"bool",
            "name":"distributeAll",
            "type":"bool"
         }
      ],
      "name":"distributeBorrowWpc",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"pToken",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"minter",
            "type":"address"
         },
         {
            "internalType":"bool",
            "name":"distributeAll",
            "type":"bool"
         }
      ],
      "name":"distributeMintWpc",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"pToken",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"redeemer",
            "type":"address"
         },
         {
            "internalType":"bool",
            "name":"distributeAll",
            "type":"bool"
         }
      ],
      "name":"distributeRedeemWpc",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"pToken",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"borrower",
            "type":"address"
         },
         {
            "internalType":"bool",
            "name":"distributeAll",
            "type":"bool"
         }
      ],
      "name":"distributeRepayBorrowWpc",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"pTokenCollateral",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"borrower",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"liquidator",
            "type":"address"
         },
         {
            "internalType":"bool",
            "name":"distributeAll",
            "type":"bool"
         }
      ],
      "name":"distributeSeizeWpc",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"pToken",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"src",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"dst",
            "type":"address"
         },
         {
            "internalType":"bool",
            "name":"distributeAll",
            "type":"bool"
         }
      ],
      "name":"distributeTransferWpc",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"enableDistributeBorrowWpc",
      "outputs":[
         {
            "internalType":"bool",
            "name":"",
            "type":"bool"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"enableDistributeMintWpc",
      "outputs":[
         {
            "internalType":"bool",
            "name":"",
            "type":"bool"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"enableDistributeRedeemWpc",
      "outputs":[
         {
            "internalType":"bool",
            "name":"",
            "type":"bool"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"enableDistributeRepayBorrowWpc",
      "outputs":[
         {
            "internalType":"bool",
            "name":"",
            "type":"bool"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"enableDistributeSeizeWpc",
      "outputs":[
         {
            "internalType":"bool",
            "name":"",
            "type":"bool"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"enableDistributeTransferWpc",
      "outputs":[
         {
            "internalType":"bool",
            "name":"",
            "type":"bool"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"enableWpcClaim",
      "outputs":[
         {
            "internalType":"bool",
            "name":"",
            "type":"bool"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"contract IERC20",
            "name":"_piggy",
            "type":"address"
         },
         {
            "internalType":"contract IPiggyBreeder",
            "name":"_piggyBreeder",
            "type":"address"
         },
         {
            "internalType":"contract Comptroller",
            "name":"_comptroller",
            "type":"address"
         }
      ],
      "name":"initialize",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"owner",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"holder",
            "type":"address"
         },
         {
            "internalType":"bool",
            "name":"borrowers",
            "type":"bool"
         },
         {
            "internalType":"bool",
            "name":"suppliers",
            "type":"bool"
         }
      ],
      "name":"pendingWpcAccrued",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"piggy",
      "outputs":[
         {
            "internalType":"contract IERC20",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"piggyBreeder",
      "outputs":[
         {
            "internalType":"contract IPiggyBreeder",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"renounceOwnership",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"newOwner",
            "type":"address"
         }
      ],
      "name":"transferOwnership",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "name":"wpcAccrued",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "name":"wpcBorrowState",
      "outputs":[
         {
            "internalType":"uint224",
            "name":"index",
            "type":"uint224"
         },
         {
            "internalType":"uint32",
            "name":"block",
            "type":"uint32"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "name":"wpcBorrowerIndex",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"wpcClaimThreshold",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"wpcInitialIndex",
      "outputs":[
         {
            "internalType":"uint224",
            "name":"",
            "type":"uint224"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "name":"wpcSpeeds",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "name":"wpcSupplierIndex",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "name":"wpcSupplyState",
      "outputs":[
         {
            "internalType":"uint224",
            "name":"index",
            "type":"uint224"
         },
         {
            "internalType":"uint32",
            "name":"block",
            "type":"uint32"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   }
]
''')