diff --git a/packages/horizon/ignition/configs/upgrade.localhost.json5 b/packages/horizon/ignition/configs/upgrade.localhost.json5 new file mode 100644 index 000000000..5b5b19621 --- /dev/null +++ b/packages/horizon/ignition/configs/upgrade.localhost.json5 @@ -0,0 +1,11 @@ +{ + "$global": { + // Existing contract addresses (from arbitrumSepolia fork) + "graphProxyAdminAddress": "0x7474a6cc5fAeDEc620Db0fa8E4da6eD58477042C", + "rewardsManagerAddress": "0x1F49caE7669086c8ba53CC35d1E9f80176d67E79", + + // Implementation addresses - each version needs its own parameter (fixed once deployed) + "rewardsManagerV2Address": "0xB90E09488d99D6b5e08D1E82080801a96c85976a", + "rewardsManagerV3Address": "0x5842F91bC81b4BfEcDd4C5c90A1001F0f9C70bBB" + } +} diff --git a/packages/horizon/ignition/deployments/horizon-localhost-upgrade/artifacts/UpgradeRewardsManagerDeployer#RewardsManagerProxy.json b/packages/horizon/ignition/deployments/horizon-localhost-upgrade/artifacts/UpgradeRewardsManagerDeployer#RewardsManagerProxy.json new file mode 100644 index 000000000..bdfba399f --- /dev/null +++ b/packages/horizon/ignition/deployments/horizon-localhost-upgrade/artifacts/UpgradeRewardsManagerDeployer#RewardsManagerProxy.json @@ -0,0 +1,177 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "GraphProxy", + "sourceName": "contracts/upgrades/GraphProxy.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_impl", + "type": "address" + }, + { + "internalType": "address", + "name": "_admin", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldAdmin", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldImplementation", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "ImplementationUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldPendingImplementation", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newPendingImplementation", + "type": "address" + } + ], + "name": "PendingImplementationUpdated", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [], + "name": "acceptUpgrade", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "acceptUpgradeAndCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "admin", + "outputs": [ + { + "internalType": "address", + "name": "adminAddress", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "implementationAddress", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "pendingImplementation", + "outputs": [ + { + "internalType": "address", + "name": "pendingImplementationAddress", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newAdmin", + "type": "address" + } + ], + "name": "setAdmin", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50604051610a12380380610a128339818101604052604081101561003357600080fd5b50805160209091015161004581610055565b61004e826100b3565b5050610137565b600061005f610111565b6000805160206109d2833981519152838155604051919250906001600160a01b0380851691908416907f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b90600090a3505050565b60006100bd610124565b6000805160206109f2833981519152838155604051919250906001600160a01b0380851691908416907f980c0d30fe97457c47903527d88b7009a1643be6de24d2af664214919f0540a190600090a3505050565b6000805160206109d28339815191525490565b6000805160206109f28339815191525490565b61088c806101466000396000f3fe6080604052600436106100745760003560e01c80635c60da1b1161004e5780635c60da1b14610104578063623faf6114610119578063704b6c0214610196578063f851a440146101c957610083565b80633659cfe61461008b578063396f7b23146100be57806359fc20bb146100ef57610083565b36610083576100816101de565b005b6100816101de565b34801561009757600080fd5b50610081600480360360208110156100ae57600080fd5b50356001600160a01b031661029e565b3480156100ca57600080fd5b506100d36102d8565b604080516001600160a01b039092168252519081900360200190f35b3480156100fb57600080fd5b50610081610338565b34801561011057600080fd5b506100d3610393565b34801561012557600080fd5b506100816004803603602081101561013c57600080fd5b81019060208101813564010000000081111561015757600080fd5b82018360208201111561016957600080fd5b8035906020019184600183028401116401000000008311171561018b57600080fd5b5090925090506103e1565b3480156101a257600080fd5b50610081600480360360208110156101b957600080fd5b50356001600160a01b03166104f1565b3480156101d557600080fd5b506100d3610576565b6101e66105c0565b6001600160a01b0316336001600160a01b0316141561024c576040805162461bcd60e51b815260206004820152601f60248201527f43616e6e6f742066616c6c6261636b20746f2070726f78792074617267657400604482015290519081900360640190fd5b6040516001600160a01b037f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541636600083376000803684845af490503d806000843e81801561029a578184f35b8184fd5b6102a66105c0565b6001600160a01b0316336001600160a01b031614156102cd576102c8816105e5565b6102d5565b6102d56101de565b50565b60006102e26105c0565b6001600160a01b0316336001600160a01b031614806103195750610304610655565b6001600160a01b0316336001600160a01b0316145b1561032d57610326610655565b9050610335565b6103356101de565b90565b6103406105c0565b6001600160a01b0316336001600160a01b031614806103775750610362610655565b6001600160a01b0316336001600160a01b0316145b156103895761038461067a565b610391565b6103916101de565b565b600061039d6105c0565b6001600160a01b0316336001600160a01b031614806103d457506103bf610655565b6001600160a01b0316336001600160a01b0316145b1561032d57610326610751565b6103e96105c0565b6001600160a01b0316336001600160a01b03161480610420575061040b610655565b6001600160a01b0316336001600160a01b0316145b156104e55761042d61067a565b6000610437610751565b6001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d8060008114610491576040519150601f19603f3d011682016040523d82523d6000602084013e610496565b606091505b50509050806104df576040805162461bcd60e51b815260206004820152601060248201526f125b5c1b0818d85b1b0819985a5b195960821b604482015290519081900360640190fd5b506104ed565b6104ed6101de565b5050565b6104f96105c0565b6001600160a01b0316336001600160a01b031614156102cd576001600160a01b03811661056d576040805162461bcd60e51b815260206004820152601e60248201527f41646d696e2063616e7420626520746865207a65726f20616464726573730000604482015290519081900360640190fd5b6102c881610776565b60006105806105c0565b6001600160a01b0316336001600160a01b031614806105b757506105a2610655565b6001600160a01b0316336001600160a01b0316145b1561032d576103265b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b60006105ef610655565b7f9e5eddc59e0b171f57125ab86bee043d9128098c3a6b9adb4f2e86333c2f6f8c838155604051919250906001600160a01b0380851691908416907f980c0d30fe97457c47903527d88b7009a1643be6de24d2af664214919f0540a190600090a3505050565b7f9e5eddc59e0b171f57125ab86bee043d9128098c3a6b9adb4f2e86333c2f6f8c5490565b6000610684610655565b90506001600160a01b0381166106e1576040805162461bcd60e51b815260206004820152601b60248201527f496d706c2063616e6e6f74206265207a65726f20616464726573730000000000604482015290519081900360640190fd5b336001600160a01b0382161461073e576040805162461bcd60e51b815260206004820152601b60248201527f4f6e6c792070656e64696e6720696d706c656d656e746174696f6e0000000000604482015290519081900360640190fd5b610747816107e6565b6102d560006105e5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b60006107806105c0565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103838155604051919250906001600160a01b0380851691908416907f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b90600090a3505050565b60006107f0610751565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc838155604051919250906001600160a01b0380851691908416907faa3f731066a578e5f39b4215468d826cdd15373cbc0dfc9cb9bdc649718ef7da90600090a350505056fea264697066735822122073800c706a88258a9c7cd1e2da8c1703452633510bc80596badfa39a83c6ae9564736f6c63430007060033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61039e5eddc59e0b171f57125ab86bee043d9128098c3a6b9adb4f2e86333c2f6f8c", + "deployedBytecode": "0x6080604052600436106100745760003560e01c80635c60da1b1161004e5780635c60da1b14610104578063623faf6114610119578063704b6c0214610196578063f851a440146101c957610083565b80633659cfe61461008b578063396f7b23146100be57806359fc20bb146100ef57610083565b36610083576100816101de565b005b6100816101de565b34801561009757600080fd5b50610081600480360360208110156100ae57600080fd5b50356001600160a01b031661029e565b3480156100ca57600080fd5b506100d36102d8565b604080516001600160a01b039092168252519081900360200190f35b3480156100fb57600080fd5b50610081610338565b34801561011057600080fd5b506100d3610393565b34801561012557600080fd5b506100816004803603602081101561013c57600080fd5b81019060208101813564010000000081111561015757600080fd5b82018360208201111561016957600080fd5b8035906020019184600183028401116401000000008311171561018b57600080fd5b5090925090506103e1565b3480156101a257600080fd5b50610081600480360360208110156101b957600080fd5b50356001600160a01b03166104f1565b3480156101d557600080fd5b506100d3610576565b6101e66105c0565b6001600160a01b0316336001600160a01b0316141561024c576040805162461bcd60e51b815260206004820152601f60248201527f43616e6e6f742066616c6c6261636b20746f2070726f78792074617267657400604482015290519081900360640190fd5b6040516001600160a01b037f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541636600083376000803684845af490503d806000843e81801561029a578184f35b8184fd5b6102a66105c0565b6001600160a01b0316336001600160a01b031614156102cd576102c8816105e5565b6102d5565b6102d56101de565b50565b60006102e26105c0565b6001600160a01b0316336001600160a01b031614806103195750610304610655565b6001600160a01b0316336001600160a01b0316145b1561032d57610326610655565b9050610335565b6103356101de565b90565b6103406105c0565b6001600160a01b0316336001600160a01b031614806103775750610362610655565b6001600160a01b0316336001600160a01b0316145b156103895761038461067a565b610391565b6103916101de565b565b600061039d6105c0565b6001600160a01b0316336001600160a01b031614806103d457506103bf610655565b6001600160a01b0316336001600160a01b0316145b1561032d57610326610751565b6103e96105c0565b6001600160a01b0316336001600160a01b03161480610420575061040b610655565b6001600160a01b0316336001600160a01b0316145b156104e55761042d61067a565b6000610437610751565b6001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d8060008114610491576040519150601f19603f3d011682016040523d82523d6000602084013e610496565b606091505b50509050806104df576040805162461bcd60e51b815260206004820152601060248201526f125b5c1b0818d85b1b0819985a5b195960821b604482015290519081900360640190fd5b506104ed565b6104ed6101de565b5050565b6104f96105c0565b6001600160a01b0316336001600160a01b031614156102cd576001600160a01b03811661056d576040805162461bcd60e51b815260206004820152601e60248201527f41646d696e2063616e7420626520746865207a65726f20616464726573730000604482015290519081900360640190fd5b6102c881610776565b60006105806105c0565b6001600160a01b0316336001600160a01b031614806105b757506105a2610655565b6001600160a01b0316336001600160a01b0316145b1561032d576103265b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b60006105ef610655565b7f9e5eddc59e0b171f57125ab86bee043d9128098c3a6b9adb4f2e86333c2f6f8c838155604051919250906001600160a01b0380851691908416907f980c0d30fe97457c47903527d88b7009a1643be6de24d2af664214919f0540a190600090a3505050565b7f9e5eddc59e0b171f57125ab86bee043d9128098c3a6b9adb4f2e86333c2f6f8c5490565b6000610684610655565b90506001600160a01b0381166106e1576040805162461bcd60e51b815260206004820152601b60248201527f496d706c2063616e6e6f74206265207a65726f20616464726573730000000000604482015290519081900360640190fd5b336001600160a01b0382161461073e576040805162461bcd60e51b815260206004820152601b60248201527f4f6e6c792070656e64696e6720696d706c656d656e746174696f6e0000000000604482015290519081900360640190fd5b610747816107e6565b6102d560006105e5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b60006107806105c0565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103838155604051919250906001600160a01b0380851691908416907f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b90600090a3505050565b60006107f0610751565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc838155604051919250906001600160a01b0380851691908416907faa3f731066a578e5f39b4215468d826cdd15373cbc0dfc9cb9bdc649718ef7da90600090a350505056fea264697066735822122073800c706a88258a9c7cd1e2da8c1703452633510bc80596badfa39a83c6ae9564736f6c63430007060033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/packages/horizon/ignition/deployments/horizon-localhost-upgrade/artifacts/UpgradeRewardsManagerDeployer#RewardsManagerV2.json b/packages/horizon/ignition/deployments/horizon-localhost-upgrade/artifacts/UpgradeRewardsManagerDeployer#RewardsManagerV2.json new file mode 100644 index 000000000..00711cc86 --- /dev/null +++ b/packages/horizon/ignition/deployments/horizon-localhost-upgrade/artifacts/UpgradeRewardsManagerDeployer#RewardsManagerV2.json @@ -0,0 +1,910 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "RewardsManager", + "sourceName": "contracts/rewards/RewardsManager.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "nameHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "contractAddress", + "type": "address" + } + ], + "name": "ContractSynced", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "indexer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "allocationID", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "HorizonRewardsAssigned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldIssuanceAllocator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newIssuanceAllocator", + "type": "address" + } + ], + "name": "IssuanceAllocatorSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "param", + "type": "string" + } + ], + "name": "ParameterUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "reason", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldAddress", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "ReclaimAddressSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "indexer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "allocationID", + "type": "address" + } + ], + "name": "RewardsDenied", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "indexer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "allocationID", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "RewardsDeniedDueToEligibility", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "subgraphDeploymentID", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "sinceBlock", + "type": "uint256" + } + ], + "name": "RewardsDenylistUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRewardsEligibilityOracle", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRewardsEligibilityOracle", + "type": "address" + } + ], + "name": "RewardsEligibilityOracleSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "reason", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "indexer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "allocationID", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "subgraphDeploymentID", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "RewardsReclaimed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "controller", + "type": "address" + } + ], + "name": "SetController", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldSubgraphService", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newSubgraphService", + "type": "address" + } + ], + "name": "SubgraphServiceSet", + "type": "event" + }, + { + "inputs": [], + "name": "accRewardsPerSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "accRewardsPerSignalLastBlockUpdated", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IGraphProxy", + "name": "_proxy", + "type": "address" + } + ], + "name": "acceptProxy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IGraphProxy", + "name": "_proxy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "acceptProxyAndCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "beforeIssuanceAllocationChange", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokens", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_accRewardsPerAllocatedToken", + "type": "uint256" + } + ], + "name": "calcRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "controller", + "outputs": [ + { + "internalType": "contract IController", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "denylist", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "getAccRewardsForSubgraph", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "getAccRewardsPerAllocatedToken", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAccRewardsPerSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getNewRewardsPerSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_rewardsIssuer", + "type": "address" + }, + { + "internalType": "address", + "name": "_allocationID", + "type": "address" + } + ], + "name": "getRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getRewardsIssuancePerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_controller", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "isDenied", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "issuanceAllocator", + "outputs": [ + { + "internalType": "contract IIssuanceAllocationDistribution", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "issuancePerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minimumSubgraphSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "onSubgraphAllocationUpdate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "onSubgraphSignalUpdate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "reclaimAddresses", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "reason", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "allocationID", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "reclaimRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rewardsEligibilityOracle", + "outputs": [ + { + "internalType": "contract IRewardsEligibility", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_controller", + "type": "address" + } + ], + "name": "setController", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + }, + { + "internalType": "bool", + "name": "_deny", + "type": "bool" + } + ], + "name": "setDenied", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newIssuanceAllocator", + "type": "address" + } + ], + "name": "setIssuanceAllocator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_issuancePerBlock", + "type": "uint256" + } + ], + "name": "setIssuancePerBlock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_minimumSubgraphSignal", + "type": "uint256" + } + ], + "name": "setMinimumSubgraphSignal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "reason", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "setReclaimAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newRewardsEligibilityOracle", + "type": "address" + } + ], + "name": "setRewardsEligibilityOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_subgraphAvailabilityOracle", + "type": "address" + } + ], + "name": "setSubgraphAvailabilityOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_subgraphService", + "type": "address" + } + ], + "name": "setSubgraphService", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "subgraphAvailabilityOracle", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "subgraphService", + "outputs": [ + { + "internalType": "contract IRewardsIssuer", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "subgraphs", + "outputs": [ + { + "internalType": "uint256", + "name": "accRewardsForSubgraph", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accRewardsForSubgraphSnapshot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accRewardsPerSignalSnapshot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accRewardsPerAllocatedToken", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "syncAllContracts", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_allocationID", + "type": "address" + } + ], + "name": "takeRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "updateAccRewardsPerSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6101606040527fe6876326c1291dfcbbd3864a6816d698cd591defc7aa2153d7f9c4c04016c89f6080527fc713c3df6d14cdf946460395d09af88993ee2b948b1a808161494e32c5f6706360a0527f966f1e8d8d8014e05f6ec4a57138da9be1f7c5a7f802928a18072f7c5318076160c0527f1df41cd916959d1163dc8f0671a666ea8a3e434c13e40faef527133b5d16703460e0527f45fc200c7e4544e457d3c5709bfe0d520442c30bbcbdaede89e8d4a4bbc19247610100527fd362cac9cb75c10d67bcc0b7eeb0b1ef48bb5420b556c092d4fd7f758816fcf0610120527f39605a6c26a173774ca666c67ef70cf491880e5d3d6d0ca66ec0a31034f15ea36101405234801561011057600080fd5b5060805160a05160c05160e0516101005161012051610140516128646101736000398061136952508061134052508061131752806120d35250806112ee5280611c7c5250806112c552508061129c5250806112735280611ac052506128646000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c8063931c0ac11161013b578063c8a5f81e116100b8578063e820e2841161007c578063e820e2841461049c578063eeac3e0e146104af578063f77c4791146104c2578063fc763657146104ca578063fcb5fa86146104dd57610248565b8063c8a5f81e1461045e578063d6866ea514610471578063db75092614610479578063e242cf1e1461048c578063e284f8481461049457610248565b8063a8cc0ee2116100ff578063a8cc0ee21461042b578063b951acd714610433578063c3e15de11461043b578063c4d66de814610443578063c7d1117d1461045657610248565b8063931c0ac1146103d757806393a90a1e146103ea5780639825545a146103fd5780639ce7abe514610405578063a2594d821461041857610248565b8063365b7f91116101c95780636c080f181161018d5780636c080f1814610380578063702a280e14610388578063779bcb9b146103a95780639006ce8b146103bc57806392eefe9b146103c457610248565b8063365b7f911461031c5780633df8d6821461032f5780634986594f146103375780634bbfc1c51461035a5780635c6cbd591461036d57610248565b80631324a506116102105780631324a506146102bb57806316a84ab2146102ce5780631ab6bff1146102ee5780631d1c2fec14610301578063260582491461031457610248565b806301ffc9a71461024d57806305bb8c6b146102765780630903c0941461028b5780630beff424146102a05780631156bdc1146102a8575b600080fd5b61026061025b366004612379565b6104f0565b60405161026d91906124b9565b60405180910390f35b61027e610544565b60405161026d919061248c565b61029e6102993660046121d6565b610553565b005b61027e6105af565b61029e6102b63660046122bf565b6105be565b61029e6102c9366004612355565b6105d2565b6102e16102dc3660046122bf565b610613565b60405161026d91906124c4565b6102e16102fc3660046122fb565b610625565b6102e161030f3660046122bf565b6106bc565b61027e6106f3565b61029e61032a3660046121d6565b610702565b61029e61081f565b61034a6103453660046122bf565b610827565b60405161026d94939291906127cf565b61029e6103683660046122bf565b61084e565b6102e161037b3660046122bf565b61094a565b6102e1610a52565b61039b6103963660046122bf565b610a58565b60405161026d9291906127c1565b6102e16103b736600461220e565b610bcc565b6102e1610cf2565b61029e6103d23660046121d6565b610cf8565b61029e6103e53660046121d6565b610d09565b61029e6103f83660046121d6565b610e2f565b6102e1610e89565b61029e6104133660046123a1565b610f2f565b61029e6104263660046121d6565b611085565b6102e16111a0565b6102e16111b6565b61027e6111bc565b61029e6104513660046121d6565b6111cb565b6102e1611237565b6102e161046c36600461246b565b61124f565b61029e61126e565b6102e16104873660046121d6565b61138f565b6102e16114e7565b6102e16114ed565b6102606104aa3660046122bf565b611605565b6102e16104bd3660046122bf565b611619565b61027e61164b565b61029e6104d83660046122d7565b61165a565b61027e6104eb3660046122bf565b611701565b60006001600160e01b031982166301ffc9a760e01b148061052157506001600160e01b0319821663aee4dc4360e01b145b8061053c57506001600160e01b0319821663022ee85560e51b145b90505b919050565b600f546001600160a01b031681565b61055b61171c565b600f80546001600160a01b0319166001600160a01b0383161790556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a4906124e2565b60405180910390a150565b6016546001600160a01b031681565b6105c661171c565b6105cf816117f0565b50565b600f546001600160a01b031633146106055760405162461bcd60e51b81526004016105fc90612519565b60405180910390fd5b61060f828261182c565b5050565b60116020526000908152604090205481565b60155460009033906001600160a01b031681146106545760405162461bcd60e51b81526004016105fc906126d2565b600080600061066384896118ef565b9250925092506106ad8984848b858c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119bf92505050565b9450505050505b949350505050565b60006106c6611237565b5060008281526010602052604090206106de8361094a565b808255600d5460029092019190915592915050565b6015546001600160a01b031681565b61070a61171c565b6016546001600160a01b038281169116146105cf576001600160a01b038116156107cd576040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790610761906366e305fd60e01b906004016124cd565b60206040518083038186803b15801561077957600080fd5b505afa15801561078d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b19190612246565b6107cd5760405162461bcd60e51b81526004016105fc90612597565b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f6a6254f061a8ff05f7d86ad3625787bb913090d9758a7495a002a44813d6e44890600090a35050565b6105cf611237565b60106020526000908152604090208054600182015460028301546003909301549192909184565b600f546001600160a01b03163314806108fb575060008054906101000a90046001600160a01b03166001600160a01b0316634fc07d756040518163ffffffff1660e01b815260040160206040518083038186803b1580156108ae57600080fd5b505afa1580156108c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e691906121f2565b6001600160a01b0316336001600160a01b0316145b6109175760405162461bcd60e51b81526004016105fc90612737565b60128190556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a490612568565b600081815260106020526040812061096183611605565b1561096e5754905061053f565b6000610978611ab9565b6001600160a01b03166346e855da856040518263ffffffff1660e01b81526004016109a391906124c4565b60206040518083038186803b1580156109bb57600080fd5b505afa1580156109cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f39190612453565b90506000601254821015610a08576000610a3a565b610a3a670de0b6b3a7640000610a3484610a2e8760020154610a286111a0565b90611ae4565b90611b41565b90611b9a565b8354909150610a499082611c01565b95945050505050565b60145481565b6000818152601060205260408120819081610a728561094a565b90506000610a84828460010154611c5b565b90506000806040518060400160405280610a9c611c75565b6001600160a01b03908116825260155416602090910152905060005b6002811015610b7b576000828260028110610acf57fe5b60200201516001600160a01b031614610b7357818160028110610aee57fe5b60200201516001600160a01b031663e2e1e8e98a6040518263ffffffff1660e01b8152600401610b1e91906124c4565b60206040518083038186803b158015610b3657600080fd5b505afa158015610b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e9190612453565b830192505b600101610ab8565b5081610b9257600084965096505050505050610bc7565b6000610baa83610a3486670de0b6b3a7640000611b41565b6003870154909150610bbc9082611c01565b975093955050505050505b915091565b6000610bd6611c75565b6001600160a01b0316836001600160a01b03161480610c0257506015546001600160a01b038481169116145b610c1e5760405162461bcd60e51b81526004016105fc906126d2565b6000806000806000876001600160a01b03166355c85269886040518263ffffffff1660e01b8152600401610c52919061248c565b60c06040518083038186803b158015610c6a57600080fd5b505afa158015610c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca29190612262565b955095509550955050945084610cc057600095505050505050610cec565b6000610ccb85610a58565b509050610ce3610cdc858584611ca0565b8390611c01565b96505050505050505b92915050565b600e5481565b610d00611cc5565b6105cf81611d24565b610d1161171c565b6017546001600160a01b038281169116146105cf57610d2e611237565b506001600160a01b03811615610ddd576040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790610d7190631e768dff60e21b906004016124cd565b60206040518083038186803b158015610d8957600080fd5b505afa158015610d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc19190612246565b610ddd5760405162461bcd60e51b81526004016105fc90612669565b601780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f01674b69434be290e7c6acef73422bc6cf74884b5228c9e6cab93117eae2cdcb90600090a35050565b610e3761171c565b601580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f97befc0afcf2bace352f077aea9873c9552fc2e5ab26874f356006fdf9da4ede90600090a35050565b6017546000906001600160a01b0316610ea457601454610f29565b601754604051630c19f2d360e21b81526001600160a01b0390911690633067cb4c90610ed490309060040161248c565b60806040518083038186803b158015610eec57600080fd5b505afa158015610f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2491906123f4565b604001515b90505b90565b82806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f6b57600080fd5b505af1158015610f7f573d6000803e3d6000fd5b505050506040513d6020811015610f9557600080fd5b50516001600160a01b03163314610ff3576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206d757374206265207468652070726f78792061646d696e0000604482015290519081900360640190fd5b60405163623faf6160e01b8152602060048201908152602482018490526001600160a01b0386169163623faf619186918691908190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561106757600080fd5b505af115801561107b573d6000803e3d6000fd5b5050505050505050565b80806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156110c157600080fd5b505af11580156110d5573d6000803e3d6000fd5b505050506040513d60208110156110eb57600080fd5b50516001600160a01b03163314611149576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206d757374206265207468652070726f78792061646d696e0000604482015290519081900360640190fd5b816001600160a01b03166359fc20bb6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561118457600080fd5b505af1158015611198573d6000803e3d6000fd5b505050505050565b6000610f296111ad6114ed565b600d5490611c01565b60125481565b6017546001600160a01b031681565b6111d3611dcc565b6001600160a01b0316336001600160a01b03161461122e576040805162461bcd60e51b815260206004820152601360248201527227b7363c9034b6b83632b6b2b73a30ba34b7b760691b604482015290519081900360640190fd5b6105cf81610d00565b60006112416111a0565b600d81905543600e55905090565b6000611267670de0b6b3a7640000610a348486611b41565b9392505050565b6112977f0000000000000000000000000000000000000000000000000000000000000000611df1565b6112c07f0000000000000000000000000000000000000000000000000000000000000000611df1565b6112e97f0000000000000000000000000000000000000000000000000000000000000000611df1565b6113127f0000000000000000000000000000000000000000000000000000000000000000611df1565b61133b7f0000000000000000000000000000000000000000000000000000000000000000611df1565b6113647f0000000000000000000000000000000000000000000000000000000000000000611df1565b61138d7f0000000000000000000000000000000000000000000000000000000000000000611df1565b565b60003361139a611c75565b6001600160a01b0316816001600160a01b031614806113c657506015546001600160a01b038281169116145b6113e25760405162461bcd60e51b81526004016105fc90612700565b60008060006113f184876118ef565b925092509250826000141561140d57600094505050505061053f565b61141983838884611ef2565b1561142b57600094505050505061053f565b6114336120cc565b6001600160a01b03166340c10f1985856040518363ffffffff1660e01b81526004016114609291906124a0565b600060405180830381600087803b15801561147a57600080fd5b505af115801561148e573d6000803e3d6000fd5b50505050856001600160a01b0316826001600160a01b03167fa111914d7f2ea8beca61d12f1a1f38c5533de5f1823c3936422df4404ac2ec68856040516114d591906124c4565b60405180910390a35090949350505050565b600d5481565b600080611505600e5443611ae490919063ffffffff16565b905080611516576000915050610f2c565b6000611520610e89565b90508061153257600092505050610f2c565b600061153c6120cc565b90506000816001600160a01b03166370a08231611557611ab9565b6040518263ffffffff1660e01b8152600401611573919061248c565b60206040518083038186803b15801561158b57600080fd5b505afa15801561159f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c39190612453565b9050806115d7576000945050505050610f2c565b60006115e38486611b41565b90506115fb82610a3483670de0b6b3a7640000611b41565b9550505050505090565b600090815260116020526040902054151590565b6000818152601060205260408120818061163285610a58565b6003850182905560019094019390935550909392505050565b6000546001600160a01b031681565b61166261171c565b8161167f5760405162461bcd60e51b81526004016105fc906125f4565b6000828152601860205260409020546001600160a01b0390811690821681146116fc5760008381526018602052604080822080546001600160a01b0319166001600160a01b03868116918217909255915191929084169186917f125079be6e3f6efadf63498088ca509edc3835fb416ba13d25649bd1d47d2fa991a45b505050565b6018602052600090815260409020546001600160a01b031681565b60008054906101000a90046001600160a01b03166001600160a01b0316634fc07d756040518163ffffffff1660e01b815260040160206040518083038186803b15801561176857600080fd5b505afa15801561177c573d6000803e3d6000fd5b505050506040513d602081101561179257600080fd5b50516001600160a01b0316331461138d576040805162461bcd60e51b815260206004820152601860248201527f4f6e6c7920436f6e74726f6c6c657220676f7665726e6f720000000000000000604482015290519081900360640190fd5b6117f8611237565b5060148190556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a49061263f565b611835826106bc565b5080156118a25760008281526011602052604090205461189d57600082815260116020526040908190204390819055905183917fe016102b339c3889f4967b491f3381f2c352c8fe3d4f880007807d45b124065a9161189491906124c4565b60405180910390a25b61060f565b6000828152601160205260408082208290555183917fe016102b339c3889f4967b491f3381f2c352c8fe3d4f880007807d45b124065a916118e391906124c4565b60405180910390a25050565b60008060008060008060008060008a6001600160a01b03166355c852698b6040518263ffffffff1660e01b8152600401611929919061248c565b60c06040518083038186803b15801561194157600080fd5b505afa158015611955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119799190612262565b955095509550955095509550600061199085611619565b90508661199e5760006119ac565b6119ac610cdc858584611ca0565b9c959b5093995093975050505050505050565b6000868152601860205260408120546001600160a01b031686158015906119ee57506001600160a01b03811615155b15611aae576119fb6120cc565b6001600160a01b03166340c10f1982896040518363ffffffff1660e01b8152600401611a289291906124a0565b600060405180830381600087803b158015611a4257600080fd5b505af1158015611a56573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b0316897fc65eb6cf0937b3705ec8a3ab7f01707d806f4e42f65a2f06b1143fc30862df5e8a8888604051611aa29392919061275f565b60405180910390a48691505b509695505050505050565b6000610f297f00000000000000000000000000000000000000000000000000000000000000006120f3565b600082821115611b3b576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082611b5057506000610cec565b82820282848281611b5d57fe5b04146112675760405162461bcd60e51b815260040180806020018281038252602181526020018061280e6021913960400191505060405180910390fd5b6000808211611bf0576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381611bf957fe5b049392505050565b600082820183811015611267576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818311611c6b576000611267565b6112678383611ae4565b6000610f297f00000000000000000000000000000000000000000000000000000000000000006120f3565b600080611cad8385611ae4565b9050610a49670de0b6b3a7640000610a348388611b41565b6000546001600160a01b0316331461138d576040805162461bcd60e51b815260206004820152601960248201527f43616c6c6572206d75737420626520436f6e74726f6c6c657200000000000000604482015290519081900360640190fd5b6001600160a01b038116611d78576040805162461bcd60e51b815260206004820152601660248201527510dbdb9d1c9bdb1b195c881b5d5cdd081899481cd95d60521b604482015290519081900360640190fd5b600080546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f4ff638452bbf33c012645d18ae6f05515ff5f2d1dfb0cece8cbf018c60903f709181900360200190a150565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6000805460408051637bb20d2f60e11b81526004810185905290516001600160a01b039092169163f7641a5e91602480820192602092909190829003018186803b158015611e3e57600080fd5b505afa158015611e52573d6000803e3d6000fd5b505050506040513d6020811015611e6857600080fd5b50516000838152600160205260409020549091506001600160a01b0380831691161461060f5760008281526001602090815260409182902080546001600160a01b0319166001600160a01b0385169081179091558251908152915184927fd0e7a942b1fc38c411c4f53d153ba14fd24542a6a35ebacd9b6afca1a154e20692908290030190a25050565b6000611efd82611605565b15611f9057826001600160a01b0316846001600160a01b03167f9b1323a10f3955b1c9c054ffbda78edfdf49998aaf37f61d9f84776b59ac804360405160405180910390a3611f7f7fc0f4a5620db2f97e7c3a4ba7058497eaa0d497538b2666d66bd6932f25345c8886868686604051806020016040528060008152506119bf565b15611f8c575060016106b4565b5060015b6016546001600160a01b03161580159061202757506016546040516366e305fd60e01b81526001600160a01b03909116906366e305fd90611fd590879060040161248c565b60206040518083038186803b158015611fed57600080fd5b505afa158015612001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120259190612246565b155b156106b457826001600160a01b0316846001600160a01b03167fb012e09970916d172f2899bd374aae8d902671bf721e50331e2d57775f90e7478760405161206f91906124c4565b60405180910390a36120b47ffcadc72cad493def76767524554db9da829b6aca9457c0187f63000dba3c943986868686604051806020016040528060008152506119bf565b156120c1575060016106b4565b506001949350505050565b6000610f297f00000000000000000000000000000000000000000000000000000000000000005b6000818152600160205260408120546001600160a01b03168061053c5760005460408051637bb20d2f60e11b81526004810186905290516001600160a01b039092169163f7641a5e91602480820192602092909190829003018186803b15801561215c57600080fd5b505afa158015612170573d6000803e3d6000fd5b505050506040513d602081101561218657600080fd5b50519392505050565b60008083601f8401126121a0578182fd5b50813567ffffffffffffffff8111156121b7578182fd5b6020830191508360208285010111156121cf57600080fd5b9250929050565b6000602082840312156121e7578081fd5b8135611267816127ea565b600060208284031215612203578081fd5b8151611267816127ea565b60008060408385031215612220578081fd5b823561222b816127ea565b9150602083013561223b816127ea565b809150509250929050565b600060208284031215612257578081fd5b8151611267816127ff565b60008060008060008060c0878903121561227a578182fd5b8651612285816127ff565b6020880151909650612296816127ea565b6040880151606089015160808a015160a0909a0151989b929a5090989097909650945092505050565b6000602082840312156122d0578081fd5b5035919050565b600080604083850312156122e9578182fd5b82359150602083013561223b816127ea565b60008060008060608587031215612310578384fd5b843593506020850135612322816127ea565b9250604085013567ffffffffffffffff81111561233d578283fd5b6123498782880161218f565b95989497509550505050565b60008060408385031215612367578182fd5b82359150602083013561223b816127ff565b60006020828403121561238a578081fd5b81356001600160e01b031981168114611267578182fd5b6000806000604084860312156123b5578283fd5b83356123c0816127ea565b9250602084013567ffffffffffffffff8111156123db578283fd5b6123e78682870161218f565b9497909650939450505050565b600060808284031215612405578081fd5b6040516080810181811067ffffffffffffffff8211171561242257fe5b8060405250825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612464578081fd5b5051919050565b6000806040838503121561247d578182fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b6001600160e01b031991909116815260200190565b6020808252601a908201527f7375626772617068417661696c6162696c6974794f7261636c65000000000000604082015260600190565b6020808252602f908201527f43616c6c6572206d75737420626520746865207375626772617068206176616960408201526e6c6162696c697479206f7261636c6560881b606082015260800190565b6020808252601590820152741b5a5b9a5b5d5b54dd5899dc985c1a14da59db985b605a1b604082015260600190565b60208082526037908201527f436f6e747261637420646f6573206e6f7420737570706f72742049526577617260408201527f6473456c69676962696c69747920696e74657266616365000000000000000000606082015260800190565b6020808252602b908201527f43616e6e6f7420736574207265636c61696d206164647265737320666f72202860408201526a627974657333322830292960a81b606082015260800190565b60208082526010908201526f69737375616e6365506572426c6f636b60801b604082015260600190565b60208082526043908201527f436f6e747261637420646f6573206e6f7420737570706f72742049497373756160408201527f6e6365416c6c6f636174696f6e446973747269627574696f6e20696e7465726660608201526261636560e81b608082015260a00190565b6020808252601490820152732737ba1030903932bbb0b932399034b9b9bab2b960611b604082015260600190565b6020808252601f908201527f43616c6c6572206d757374206265206120726577617264732069737375657200604082015260600190565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b600084825260208481840152606060408401528351806060850152825b818110156127985785810183015185820160800152820161277c565b818111156127a95783608083870101525b50601f01601f19169290920160800195945050505050565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b6001600160a01b03811681146105cf57600080fd5b80151581146105cf57600080fdfe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212207419d71079463c2ab6f09756cef155b2ab7c65e9f3f2a7debd98b5b547540fba64736f6c63430007060033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102485760003560e01c8063931c0ac11161013b578063c8a5f81e116100b8578063e820e2841161007c578063e820e2841461049c578063eeac3e0e146104af578063f77c4791146104c2578063fc763657146104ca578063fcb5fa86146104dd57610248565b8063c8a5f81e1461045e578063d6866ea514610471578063db75092614610479578063e242cf1e1461048c578063e284f8481461049457610248565b8063a8cc0ee2116100ff578063a8cc0ee21461042b578063b951acd714610433578063c3e15de11461043b578063c4d66de814610443578063c7d1117d1461045657610248565b8063931c0ac1146103d757806393a90a1e146103ea5780639825545a146103fd5780639ce7abe514610405578063a2594d821461041857610248565b8063365b7f91116101c95780636c080f181161018d5780636c080f1814610380578063702a280e14610388578063779bcb9b146103a95780639006ce8b146103bc57806392eefe9b146103c457610248565b8063365b7f911461031c5780633df8d6821461032f5780634986594f146103375780634bbfc1c51461035a5780635c6cbd591461036d57610248565b80631324a506116102105780631324a506146102bb57806316a84ab2146102ce5780631ab6bff1146102ee5780631d1c2fec14610301578063260582491461031457610248565b806301ffc9a71461024d57806305bb8c6b146102765780630903c0941461028b5780630beff424146102a05780631156bdc1146102a8575b600080fd5b61026061025b366004612379565b6104f0565b60405161026d91906124b9565b60405180910390f35b61027e610544565b60405161026d919061248c565b61029e6102993660046121d6565b610553565b005b61027e6105af565b61029e6102b63660046122bf565b6105be565b61029e6102c9366004612355565b6105d2565b6102e16102dc3660046122bf565b610613565b60405161026d91906124c4565b6102e16102fc3660046122fb565b610625565b6102e161030f3660046122bf565b6106bc565b61027e6106f3565b61029e61032a3660046121d6565b610702565b61029e61081f565b61034a6103453660046122bf565b610827565b60405161026d94939291906127cf565b61029e6103683660046122bf565b61084e565b6102e161037b3660046122bf565b61094a565b6102e1610a52565b61039b6103963660046122bf565b610a58565b60405161026d9291906127c1565b6102e16103b736600461220e565b610bcc565b6102e1610cf2565b61029e6103d23660046121d6565b610cf8565b61029e6103e53660046121d6565b610d09565b61029e6103f83660046121d6565b610e2f565b6102e1610e89565b61029e6104133660046123a1565b610f2f565b61029e6104263660046121d6565b611085565b6102e16111a0565b6102e16111b6565b61027e6111bc565b61029e6104513660046121d6565b6111cb565b6102e1611237565b6102e161046c36600461246b565b61124f565b61029e61126e565b6102e16104873660046121d6565b61138f565b6102e16114e7565b6102e16114ed565b6102606104aa3660046122bf565b611605565b6102e16104bd3660046122bf565b611619565b61027e61164b565b61029e6104d83660046122d7565b61165a565b61027e6104eb3660046122bf565b611701565b60006001600160e01b031982166301ffc9a760e01b148061052157506001600160e01b0319821663aee4dc4360e01b145b8061053c57506001600160e01b0319821663022ee85560e51b145b90505b919050565b600f546001600160a01b031681565b61055b61171c565b600f80546001600160a01b0319166001600160a01b0383161790556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a4906124e2565b60405180910390a150565b6016546001600160a01b031681565b6105c661171c565b6105cf816117f0565b50565b600f546001600160a01b031633146106055760405162461bcd60e51b81526004016105fc90612519565b60405180910390fd5b61060f828261182c565b5050565b60116020526000908152604090205481565b60155460009033906001600160a01b031681146106545760405162461bcd60e51b81526004016105fc906126d2565b600080600061066384896118ef565b9250925092506106ad8984848b858c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119bf92505050565b9450505050505b949350505050565b60006106c6611237565b5060008281526010602052604090206106de8361094a565b808255600d5460029092019190915592915050565b6015546001600160a01b031681565b61070a61171c565b6016546001600160a01b038281169116146105cf576001600160a01b038116156107cd576040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790610761906366e305fd60e01b906004016124cd565b60206040518083038186803b15801561077957600080fd5b505afa15801561078d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b19190612246565b6107cd5760405162461bcd60e51b81526004016105fc90612597565b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f6a6254f061a8ff05f7d86ad3625787bb913090d9758a7495a002a44813d6e44890600090a35050565b6105cf611237565b60106020526000908152604090208054600182015460028301546003909301549192909184565b600f546001600160a01b03163314806108fb575060008054906101000a90046001600160a01b03166001600160a01b0316634fc07d756040518163ffffffff1660e01b815260040160206040518083038186803b1580156108ae57600080fd5b505afa1580156108c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e691906121f2565b6001600160a01b0316336001600160a01b0316145b6109175760405162461bcd60e51b81526004016105fc90612737565b60128190556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a490612568565b600081815260106020526040812061096183611605565b1561096e5754905061053f565b6000610978611ab9565b6001600160a01b03166346e855da856040518263ffffffff1660e01b81526004016109a391906124c4565b60206040518083038186803b1580156109bb57600080fd5b505afa1580156109cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f39190612453565b90506000601254821015610a08576000610a3a565b610a3a670de0b6b3a7640000610a3484610a2e8760020154610a286111a0565b90611ae4565b90611b41565b90611b9a565b8354909150610a499082611c01565b95945050505050565b60145481565b6000818152601060205260408120819081610a728561094a565b90506000610a84828460010154611c5b565b90506000806040518060400160405280610a9c611c75565b6001600160a01b03908116825260155416602090910152905060005b6002811015610b7b576000828260028110610acf57fe5b60200201516001600160a01b031614610b7357818160028110610aee57fe5b60200201516001600160a01b031663e2e1e8e98a6040518263ffffffff1660e01b8152600401610b1e91906124c4565b60206040518083038186803b158015610b3657600080fd5b505afa158015610b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e9190612453565b830192505b600101610ab8565b5081610b9257600084965096505050505050610bc7565b6000610baa83610a3486670de0b6b3a7640000611b41565b6003870154909150610bbc9082611c01565b975093955050505050505b915091565b6000610bd6611c75565b6001600160a01b0316836001600160a01b03161480610c0257506015546001600160a01b038481169116145b610c1e5760405162461bcd60e51b81526004016105fc906126d2565b6000806000806000876001600160a01b03166355c85269886040518263ffffffff1660e01b8152600401610c52919061248c565b60c06040518083038186803b158015610c6a57600080fd5b505afa158015610c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca29190612262565b955095509550955050945084610cc057600095505050505050610cec565b6000610ccb85610a58565b509050610ce3610cdc858584611ca0565b8390611c01565b96505050505050505b92915050565b600e5481565b610d00611cc5565b6105cf81611d24565b610d1161171c565b6017546001600160a01b038281169116146105cf57610d2e611237565b506001600160a01b03811615610ddd576040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790610d7190631e768dff60e21b906004016124cd565b60206040518083038186803b158015610d8957600080fd5b505afa158015610d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc19190612246565b610ddd5760405162461bcd60e51b81526004016105fc90612669565b601780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f01674b69434be290e7c6acef73422bc6cf74884b5228c9e6cab93117eae2cdcb90600090a35050565b610e3761171c565b601580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f97befc0afcf2bace352f077aea9873c9552fc2e5ab26874f356006fdf9da4ede90600090a35050565b6017546000906001600160a01b0316610ea457601454610f29565b601754604051630c19f2d360e21b81526001600160a01b0390911690633067cb4c90610ed490309060040161248c565b60806040518083038186803b158015610eec57600080fd5b505afa158015610f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2491906123f4565b604001515b90505b90565b82806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f6b57600080fd5b505af1158015610f7f573d6000803e3d6000fd5b505050506040513d6020811015610f9557600080fd5b50516001600160a01b03163314610ff3576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206d757374206265207468652070726f78792061646d696e0000604482015290519081900360640190fd5b60405163623faf6160e01b8152602060048201908152602482018490526001600160a01b0386169163623faf619186918691908190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561106757600080fd5b505af115801561107b573d6000803e3d6000fd5b5050505050505050565b80806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156110c157600080fd5b505af11580156110d5573d6000803e3d6000fd5b505050506040513d60208110156110eb57600080fd5b50516001600160a01b03163314611149576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206d757374206265207468652070726f78792061646d696e0000604482015290519081900360640190fd5b816001600160a01b03166359fc20bb6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561118457600080fd5b505af1158015611198573d6000803e3d6000fd5b505050505050565b6000610f296111ad6114ed565b600d5490611c01565b60125481565b6017546001600160a01b031681565b6111d3611dcc565b6001600160a01b0316336001600160a01b03161461122e576040805162461bcd60e51b815260206004820152601360248201527227b7363c9034b6b83632b6b2b73a30ba34b7b760691b604482015290519081900360640190fd5b6105cf81610d00565b60006112416111a0565b600d81905543600e55905090565b6000611267670de0b6b3a7640000610a348486611b41565b9392505050565b6112977f0000000000000000000000000000000000000000000000000000000000000000611df1565b6112c07f0000000000000000000000000000000000000000000000000000000000000000611df1565b6112e97f0000000000000000000000000000000000000000000000000000000000000000611df1565b6113127f0000000000000000000000000000000000000000000000000000000000000000611df1565b61133b7f0000000000000000000000000000000000000000000000000000000000000000611df1565b6113647f0000000000000000000000000000000000000000000000000000000000000000611df1565b61138d7f0000000000000000000000000000000000000000000000000000000000000000611df1565b565b60003361139a611c75565b6001600160a01b0316816001600160a01b031614806113c657506015546001600160a01b038281169116145b6113e25760405162461bcd60e51b81526004016105fc90612700565b60008060006113f184876118ef565b925092509250826000141561140d57600094505050505061053f565b61141983838884611ef2565b1561142b57600094505050505061053f565b6114336120cc565b6001600160a01b03166340c10f1985856040518363ffffffff1660e01b81526004016114609291906124a0565b600060405180830381600087803b15801561147a57600080fd5b505af115801561148e573d6000803e3d6000fd5b50505050856001600160a01b0316826001600160a01b03167fa111914d7f2ea8beca61d12f1a1f38c5533de5f1823c3936422df4404ac2ec68856040516114d591906124c4565b60405180910390a35090949350505050565b600d5481565b600080611505600e5443611ae490919063ffffffff16565b905080611516576000915050610f2c565b6000611520610e89565b90508061153257600092505050610f2c565b600061153c6120cc565b90506000816001600160a01b03166370a08231611557611ab9565b6040518263ffffffff1660e01b8152600401611573919061248c565b60206040518083038186803b15801561158b57600080fd5b505afa15801561159f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c39190612453565b9050806115d7576000945050505050610f2c565b60006115e38486611b41565b90506115fb82610a3483670de0b6b3a7640000611b41565b9550505050505090565b600090815260116020526040902054151590565b6000818152601060205260408120818061163285610a58565b6003850182905560019094019390935550909392505050565b6000546001600160a01b031681565b61166261171c565b8161167f5760405162461bcd60e51b81526004016105fc906125f4565b6000828152601860205260409020546001600160a01b0390811690821681146116fc5760008381526018602052604080822080546001600160a01b0319166001600160a01b03868116918217909255915191929084169186917f125079be6e3f6efadf63498088ca509edc3835fb416ba13d25649bd1d47d2fa991a45b505050565b6018602052600090815260409020546001600160a01b031681565b60008054906101000a90046001600160a01b03166001600160a01b0316634fc07d756040518163ffffffff1660e01b815260040160206040518083038186803b15801561176857600080fd5b505afa15801561177c573d6000803e3d6000fd5b505050506040513d602081101561179257600080fd5b50516001600160a01b0316331461138d576040805162461bcd60e51b815260206004820152601860248201527f4f6e6c7920436f6e74726f6c6c657220676f7665726e6f720000000000000000604482015290519081900360640190fd5b6117f8611237565b5060148190556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a49061263f565b611835826106bc565b5080156118a25760008281526011602052604090205461189d57600082815260116020526040908190204390819055905183917fe016102b339c3889f4967b491f3381f2c352c8fe3d4f880007807d45b124065a9161189491906124c4565b60405180910390a25b61060f565b6000828152601160205260408082208290555183917fe016102b339c3889f4967b491f3381f2c352c8fe3d4f880007807d45b124065a916118e391906124c4565b60405180910390a25050565b60008060008060008060008060008a6001600160a01b03166355c852698b6040518263ffffffff1660e01b8152600401611929919061248c565b60c06040518083038186803b15801561194157600080fd5b505afa158015611955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119799190612262565b955095509550955095509550600061199085611619565b90508661199e5760006119ac565b6119ac610cdc858584611ca0565b9c959b5093995093975050505050505050565b6000868152601860205260408120546001600160a01b031686158015906119ee57506001600160a01b03811615155b15611aae576119fb6120cc565b6001600160a01b03166340c10f1982896040518363ffffffff1660e01b8152600401611a289291906124a0565b600060405180830381600087803b158015611a4257600080fd5b505af1158015611a56573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b0316897fc65eb6cf0937b3705ec8a3ab7f01707d806f4e42f65a2f06b1143fc30862df5e8a8888604051611aa29392919061275f565b60405180910390a48691505b509695505050505050565b6000610f297f00000000000000000000000000000000000000000000000000000000000000006120f3565b600082821115611b3b576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082611b5057506000610cec565b82820282848281611b5d57fe5b04146112675760405162461bcd60e51b815260040180806020018281038252602181526020018061280e6021913960400191505060405180910390fd5b6000808211611bf0576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381611bf957fe5b049392505050565b600082820183811015611267576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818311611c6b576000611267565b6112678383611ae4565b6000610f297f00000000000000000000000000000000000000000000000000000000000000006120f3565b600080611cad8385611ae4565b9050610a49670de0b6b3a7640000610a348388611b41565b6000546001600160a01b0316331461138d576040805162461bcd60e51b815260206004820152601960248201527f43616c6c6572206d75737420626520436f6e74726f6c6c657200000000000000604482015290519081900360640190fd5b6001600160a01b038116611d78576040805162461bcd60e51b815260206004820152601660248201527510dbdb9d1c9bdb1b195c881b5d5cdd081899481cd95d60521b604482015290519081900360640190fd5b600080546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f4ff638452bbf33c012645d18ae6f05515ff5f2d1dfb0cece8cbf018c60903f709181900360200190a150565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6000805460408051637bb20d2f60e11b81526004810185905290516001600160a01b039092169163f7641a5e91602480820192602092909190829003018186803b158015611e3e57600080fd5b505afa158015611e52573d6000803e3d6000fd5b505050506040513d6020811015611e6857600080fd5b50516000838152600160205260409020549091506001600160a01b0380831691161461060f5760008281526001602090815260409182902080546001600160a01b0319166001600160a01b0385169081179091558251908152915184927fd0e7a942b1fc38c411c4f53d153ba14fd24542a6a35ebacd9b6afca1a154e20692908290030190a25050565b6000611efd82611605565b15611f9057826001600160a01b0316846001600160a01b03167f9b1323a10f3955b1c9c054ffbda78edfdf49998aaf37f61d9f84776b59ac804360405160405180910390a3611f7f7fc0f4a5620db2f97e7c3a4ba7058497eaa0d497538b2666d66bd6932f25345c8886868686604051806020016040528060008152506119bf565b15611f8c575060016106b4565b5060015b6016546001600160a01b03161580159061202757506016546040516366e305fd60e01b81526001600160a01b03909116906366e305fd90611fd590879060040161248c565b60206040518083038186803b158015611fed57600080fd5b505afa158015612001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120259190612246565b155b156106b457826001600160a01b0316846001600160a01b03167fb012e09970916d172f2899bd374aae8d902671bf721e50331e2d57775f90e7478760405161206f91906124c4565b60405180910390a36120b47ffcadc72cad493def76767524554db9da829b6aca9457c0187f63000dba3c943986868686604051806020016040528060008152506119bf565b156120c1575060016106b4565b506001949350505050565b6000610f297f00000000000000000000000000000000000000000000000000000000000000005b6000818152600160205260408120546001600160a01b03168061053c5760005460408051637bb20d2f60e11b81526004810186905290516001600160a01b039092169163f7641a5e91602480820192602092909190829003018186803b15801561215c57600080fd5b505afa158015612170573d6000803e3d6000fd5b505050506040513d602081101561218657600080fd5b50519392505050565b60008083601f8401126121a0578182fd5b50813567ffffffffffffffff8111156121b7578182fd5b6020830191508360208285010111156121cf57600080fd5b9250929050565b6000602082840312156121e7578081fd5b8135611267816127ea565b600060208284031215612203578081fd5b8151611267816127ea565b60008060408385031215612220578081fd5b823561222b816127ea565b9150602083013561223b816127ea565b809150509250929050565b600060208284031215612257578081fd5b8151611267816127ff565b60008060008060008060c0878903121561227a578182fd5b8651612285816127ff565b6020880151909650612296816127ea565b6040880151606089015160808a015160a0909a0151989b929a5090989097909650945092505050565b6000602082840312156122d0578081fd5b5035919050565b600080604083850312156122e9578182fd5b82359150602083013561223b816127ea565b60008060008060608587031215612310578384fd5b843593506020850135612322816127ea565b9250604085013567ffffffffffffffff81111561233d578283fd5b6123498782880161218f565b95989497509550505050565b60008060408385031215612367578182fd5b82359150602083013561223b816127ff565b60006020828403121561238a578081fd5b81356001600160e01b031981168114611267578182fd5b6000806000604084860312156123b5578283fd5b83356123c0816127ea565b9250602084013567ffffffffffffffff8111156123db578283fd5b6123e78682870161218f565b9497909650939450505050565b600060808284031215612405578081fd5b6040516080810181811067ffffffffffffffff8211171561242257fe5b8060405250825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612464578081fd5b5051919050565b6000806040838503121561247d578182fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b6001600160e01b031991909116815260200190565b6020808252601a908201527f7375626772617068417661696c6162696c6974794f7261636c65000000000000604082015260600190565b6020808252602f908201527f43616c6c6572206d75737420626520746865207375626772617068206176616960408201526e6c6162696c697479206f7261636c6560881b606082015260800190565b6020808252601590820152741b5a5b9a5b5d5b54dd5899dc985c1a14da59db985b605a1b604082015260600190565b60208082526037908201527f436f6e747261637420646f6573206e6f7420737570706f72742049526577617260408201527f6473456c69676962696c69747920696e74657266616365000000000000000000606082015260800190565b6020808252602b908201527f43616e6e6f7420736574207265636c61696d206164647265737320666f72202860408201526a627974657333322830292960a81b606082015260800190565b60208082526010908201526f69737375616e6365506572426c6f636b60801b604082015260600190565b60208082526043908201527f436f6e747261637420646f6573206e6f7420737570706f72742049497373756160408201527f6e6365416c6c6f636174696f6e446973747269627574696f6e20696e7465726660608201526261636560e81b608082015260a00190565b6020808252601490820152732737ba1030903932bbb0b932399034b9b9bab2b960611b604082015260600190565b6020808252601f908201527f43616c6c6572206d757374206265206120726577617264732069737375657200604082015260600190565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b600084825260208481840152606060408401528351806060850152825b818110156127985785810183015185820160800152820161277c565b818111156127a95783608083870101525b50601f01601f19169290920160800195945050505050565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b6001600160a01b03811681146105cf57600080fd5b80151581146105cf57600080fdfe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212207419d71079463c2ab6f09756cef155b2ab7c65e9f3f2a7debd98b5b547540fba64736f6c63430007060033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/packages/horizon/ignition/deployments/horizon-localhost-upgrade/artifacts/UpgradeRewardsManagerDeployer#RewardsManagerV3.json b/packages/horizon/ignition/deployments/horizon-localhost-upgrade/artifacts/UpgradeRewardsManagerDeployer#RewardsManagerV3.json new file mode 100644 index 000000000..00711cc86 --- /dev/null +++ b/packages/horizon/ignition/deployments/horizon-localhost-upgrade/artifacts/UpgradeRewardsManagerDeployer#RewardsManagerV3.json @@ -0,0 +1,910 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "RewardsManager", + "sourceName": "contracts/rewards/RewardsManager.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "nameHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "contractAddress", + "type": "address" + } + ], + "name": "ContractSynced", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "indexer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "allocationID", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "HorizonRewardsAssigned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldIssuanceAllocator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newIssuanceAllocator", + "type": "address" + } + ], + "name": "IssuanceAllocatorSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "param", + "type": "string" + } + ], + "name": "ParameterUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "reason", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldAddress", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "ReclaimAddressSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "indexer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "allocationID", + "type": "address" + } + ], + "name": "RewardsDenied", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "indexer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "allocationID", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "RewardsDeniedDueToEligibility", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "subgraphDeploymentID", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "sinceBlock", + "type": "uint256" + } + ], + "name": "RewardsDenylistUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRewardsEligibilityOracle", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRewardsEligibilityOracle", + "type": "address" + } + ], + "name": "RewardsEligibilityOracleSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "reason", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "indexer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "allocationID", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "subgraphDeploymentID", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "RewardsReclaimed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "controller", + "type": "address" + } + ], + "name": "SetController", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldSubgraphService", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newSubgraphService", + "type": "address" + } + ], + "name": "SubgraphServiceSet", + "type": "event" + }, + { + "inputs": [], + "name": "accRewardsPerSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "accRewardsPerSignalLastBlockUpdated", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IGraphProxy", + "name": "_proxy", + "type": "address" + } + ], + "name": "acceptProxy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IGraphProxy", + "name": "_proxy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "acceptProxyAndCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "beforeIssuanceAllocationChange", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokens", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_accRewardsPerAllocatedToken", + "type": "uint256" + } + ], + "name": "calcRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "controller", + "outputs": [ + { + "internalType": "contract IController", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "denylist", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "getAccRewardsForSubgraph", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "getAccRewardsPerAllocatedToken", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAccRewardsPerSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getNewRewardsPerSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_rewardsIssuer", + "type": "address" + }, + { + "internalType": "address", + "name": "_allocationID", + "type": "address" + } + ], + "name": "getRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getRewardsIssuancePerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_controller", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "isDenied", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "issuanceAllocator", + "outputs": [ + { + "internalType": "contract IIssuanceAllocationDistribution", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "issuancePerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minimumSubgraphSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "onSubgraphAllocationUpdate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "onSubgraphSignalUpdate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "reclaimAddresses", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "reason", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "allocationID", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "reclaimRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rewardsEligibilityOracle", + "outputs": [ + { + "internalType": "contract IRewardsEligibility", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_controller", + "type": "address" + } + ], + "name": "setController", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + }, + { + "internalType": "bool", + "name": "_deny", + "type": "bool" + } + ], + "name": "setDenied", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newIssuanceAllocator", + "type": "address" + } + ], + "name": "setIssuanceAllocator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_issuancePerBlock", + "type": "uint256" + } + ], + "name": "setIssuancePerBlock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_minimumSubgraphSignal", + "type": "uint256" + } + ], + "name": "setMinimumSubgraphSignal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "reason", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "setReclaimAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newRewardsEligibilityOracle", + "type": "address" + } + ], + "name": "setRewardsEligibilityOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_subgraphAvailabilityOracle", + "type": "address" + } + ], + "name": "setSubgraphAvailabilityOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_subgraphService", + "type": "address" + } + ], + "name": "setSubgraphService", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "subgraphAvailabilityOracle", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "subgraphService", + "outputs": [ + { + "internalType": "contract IRewardsIssuer", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "subgraphs", + "outputs": [ + { + "internalType": "uint256", + "name": "accRewardsForSubgraph", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accRewardsForSubgraphSnapshot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accRewardsPerSignalSnapshot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accRewardsPerAllocatedToken", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "syncAllContracts", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_allocationID", + "type": "address" + } + ], + "name": "takeRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "updateAccRewardsPerSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6101606040527fe6876326c1291dfcbbd3864a6816d698cd591defc7aa2153d7f9c4c04016c89f6080527fc713c3df6d14cdf946460395d09af88993ee2b948b1a808161494e32c5f6706360a0527f966f1e8d8d8014e05f6ec4a57138da9be1f7c5a7f802928a18072f7c5318076160c0527f1df41cd916959d1163dc8f0671a666ea8a3e434c13e40faef527133b5d16703460e0527f45fc200c7e4544e457d3c5709bfe0d520442c30bbcbdaede89e8d4a4bbc19247610100527fd362cac9cb75c10d67bcc0b7eeb0b1ef48bb5420b556c092d4fd7f758816fcf0610120527f39605a6c26a173774ca666c67ef70cf491880e5d3d6d0ca66ec0a31034f15ea36101405234801561011057600080fd5b5060805160a05160c05160e0516101005161012051610140516128646101736000398061136952508061134052508061131752806120d35250806112ee5280611c7c5250806112c552508061129c5250806112735280611ac052506128646000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c8063931c0ac11161013b578063c8a5f81e116100b8578063e820e2841161007c578063e820e2841461049c578063eeac3e0e146104af578063f77c4791146104c2578063fc763657146104ca578063fcb5fa86146104dd57610248565b8063c8a5f81e1461045e578063d6866ea514610471578063db75092614610479578063e242cf1e1461048c578063e284f8481461049457610248565b8063a8cc0ee2116100ff578063a8cc0ee21461042b578063b951acd714610433578063c3e15de11461043b578063c4d66de814610443578063c7d1117d1461045657610248565b8063931c0ac1146103d757806393a90a1e146103ea5780639825545a146103fd5780639ce7abe514610405578063a2594d821461041857610248565b8063365b7f91116101c95780636c080f181161018d5780636c080f1814610380578063702a280e14610388578063779bcb9b146103a95780639006ce8b146103bc57806392eefe9b146103c457610248565b8063365b7f911461031c5780633df8d6821461032f5780634986594f146103375780634bbfc1c51461035a5780635c6cbd591461036d57610248565b80631324a506116102105780631324a506146102bb57806316a84ab2146102ce5780631ab6bff1146102ee5780631d1c2fec14610301578063260582491461031457610248565b806301ffc9a71461024d57806305bb8c6b146102765780630903c0941461028b5780630beff424146102a05780631156bdc1146102a8575b600080fd5b61026061025b366004612379565b6104f0565b60405161026d91906124b9565b60405180910390f35b61027e610544565b60405161026d919061248c565b61029e6102993660046121d6565b610553565b005b61027e6105af565b61029e6102b63660046122bf565b6105be565b61029e6102c9366004612355565b6105d2565b6102e16102dc3660046122bf565b610613565b60405161026d91906124c4565b6102e16102fc3660046122fb565b610625565b6102e161030f3660046122bf565b6106bc565b61027e6106f3565b61029e61032a3660046121d6565b610702565b61029e61081f565b61034a6103453660046122bf565b610827565b60405161026d94939291906127cf565b61029e6103683660046122bf565b61084e565b6102e161037b3660046122bf565b61094a565b6102e1610a52565b61039b6103963660046122bf565b610a58565b60405161026d9291906127c1565b6102e16103b736600461220e565b610bcc565b6102e1610cf2565b61029e6103d23660046121d6565b610cf8565b61029e6103e53660046121d6565b610d09565b61029e6103f83660046121d6565b610e2f565b6102e1610e89565b61029e6104133660046123a1565b610f2f565b61029e6104263660046121d6565b611085565b6102e16111a0565b6102e16111b6565b61027e6111bc565b61029e6104513660046121d6565b6111cb565b6102e1611237565b6102e161046c36600461246b565b61124f565b61029e61126e565b6102e16104873660046121d6565b61138f565b6102e16114e7565b6102e16114ed565b6102606104aa3660046122bf565b611605565b6102e16104bd3660046122bf565b611619565b61027e61164b565b61029e6104d83660046122d7565b61165a565b61027e6104eb3660046122bf565b611701565b60006001600160e01b031982166301ffc9a760e01b148061052157506001600160e01b0319821663aee4dc4360e01b145b8061053c57506001600160e01b0319821663022ee85560e51b145b90505b919050565b600f546001600160a01b031681565b61055b61171c565b600f80546001600160a01b0319166001600160a01b0383161790556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a4906124e2565b60405180910390a150565b6016546001600160a01b031681565b6105c661171c565b6105cf816117f0565b50565b600f546001600160a01b031633146106055760405162461bcd60e51b81526004016105fc90612519565b60405180910390fd5b61060f828261182c565b5050565b60116020526000908152604090205481565b60155460009033906001600160a01b031681146106545760405162461bcd60e51b81526004016105fc906126d2565b600080600061066384896118ef565b9250925092506106ad8984848b858c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119bf92505050565b9450505050505b949350505050565b60006106c6611237565b5060008281526010602052604090206106de8361094a565b808255600d5460029092019190915592915050565b6015546001600160a01b031681565b61070a61171c565b6016546001600160a01b038281169116146105cf576001600160a01b038116156107cd576040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790610761906366e305fd60e01b906004016124cd565b60206040518083038186803b15801561077957600080fd5b505afa15801561078d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b19190612246565b6107cd5760405162461bcd60e51b81526004016105fc90612597565b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f6a6254f061a8ff05f7d86ad3625787bb913090d9758a7495a002a44813d6e44890600090a35050565b6105cf611237565b60106020526000908152604090208054600182015460028301546003909301549192909184565b600f546001600160a01b03163314806108fb575060008054906101000a90046001600160a01b03166001600160a01b0316634fc07d756040518163ffffffff1660e01b815260040160206040518083038186803b1580156108ae57600080fd5b505afa1580156108c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e691906121f2565b6001600160a01b0316336001600160a01b0316145b6109175760405162461bcd60e51b81526004016105fc90612737565b60128190556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a490612568565b600081815260106020526040812061096183611605565b1561096e5754905061053f565b6000610978611ab9565b6001600160a01b03166346e855da856040518263ffffffff1660e01b81526004016109a391906124c4565b60206040518083038186803b1580156109bb57600080fd5b505afa1580156109cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f39190612453565b90506000601254821015610a08576000610a3a565b610a3a670de0b6b3a7640000610a3484610a2e8760020154610a286111a0565b90611ae4565b90611b41565b90611b9a565b8354909150610a499082611c01565b95945050505050565b60145481565b6000818152601060205260408120819081610a728561094a565b90506000610a84828460010154611c5b565b90506000806040518060400160405280610a9c611c75565b6001600160a01b03908116825260155416602090910152905060005b6002811015610b7b576000828260028110610acf57fe5b60200201516001600160a01b031614610b7357818160028110610aee57fe5b60200201516001600160a01b031663e2e1e8e98a6040518263ffffffff1660e01b8152600401610b1e91906124c4565b60206040518083038186803b158015610b3657600080fd5b505afa158015610b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e9190612453565b830192505b600101610ab8565b5081610b9257600084965096505050505050610bc7565b6000610baa83610a3486670de0b6b3a7640000611b41565b6003870154909150610bbc9082611c01565b975093955050505050505b915091565b6000610bd6611c75565b6001600160a01b0316836001600160a01b03161480610c0257506015546001600160a01b038481169116145b610c1e5760405162461bcd60e51b81526004016105fc906126d2565b6000806000806000876001600160a01b03166355c85269886040518263ffffffff1660e01b8152600401610c52919061248c565b60c06040518083038186803b158015610c6a57600080fd5b505afa158015610c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca29190612262565b955095509550955050945084610cc057600095505050505050610cec565b6000610ccb85610a58565b509050610ce3610cdc858584611ca0565b8390611c01565b96505050505050505b92915050565b600e5481565b610d00611cc5565b6105cf81611d24565b610d1161171c565b6017546001600160a01b038281169116146105cf57610d2e611237565b506001600160a01b03811615610ddd576040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790610d7190631e768dff60e21b906004016124cd565b60206040518083038186803b158015610d8957600080fd5b505afa158015610d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc19190612246565b610ddd5760405162461bcd60e51b81526004016105fc90612669565b601780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f01674b69434be290e7c6acef73422bc6cf74884b5228c9e6cab93117eae2cdcb90600090a35050565b610e3761171c565b601580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f97befc0afcf2bace352f077aea9873c9552fc2e5ab26874f356006fdf9da4ede90600090a35050565b6017546000906001600160a01b0316610ea457601454610f29565b601754604051630c19f2d360e21b81526001600160a01b0390911690633067cb4c90610ed490309060040161248c565b60806040518083038186803b158015610eec57600080fd5b505afa158015610f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2491906123f4565b604001515b90505b90565b82806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f6b57600080fd5b505af1158015610f7f573d6000803e3d6000fd5b505050506040513d6020811015610f9557600080fd5b50516001600160a01b03163314610ff3576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206d757374206265207468652070726f78792061646d696e0000604482015290519081900360640190fd5b60405163623faf6160e01b8152602060048201908152602482018490526001600160a01b0386169163623faf619186918691908190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561106757600080fd5b505af115801561107b573d6000803e3d6000fd5b5050505050505050565b80806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156110c157600080fd5b505af11580156110d5573d6000803e3d6000fd5b505050506040513d60208110156110eb57600080fd5b50516001600160a01b03163314611149576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206d757374206265207468652070726f78792061646d696e0000604482015290519081900360640190fd5b816001600160a01b03166359fc20bb6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561118457600080fd5b505af1158015611198573d6000803e3d6000fd5b505050505050565b6000610f296111ad6114ed565b600d5490611c01565b60125481565b6017546001600160a01b031681565b6111d3611dcc565b6001600160a01b0316336001600160a01b03161461122e576040805162461bcd60e51b815260206004820152601360248201527227b7363c9034b6b83632b6b2b73a30ba34b7b760691b604482015290519081900360640190fd5b6105cf81610d00565b60006112416111a0565b600d81905543600e55905090565b6000611267670de0b6b3a7640000610a348486611b41565b9392505050565b6112977f0000000000000000000000000000000000000000000000000000000000000000611df1565b6112c07f0000000000000000000000000000000000000000000000000000000000000000611df1565b6112e97f0000000000000000000000000000000000000000000000000000000000000000611df1565b6113127f0000000000000000000000000000000000000000000000000000000000000000611df1565b61133b7f0000000000000000000000000000000000000000000000000000000000000000611df1565b6113647f0000000000000000000000000000000000000000000000000000000000000000611df1565b61138d7f0000000000000000000000000000000000000000000000000000000000000000611df1565b565b60003361139a611c75565b6001600160a01b0316816001600160a01b031614806113c657506015546001600160a01b038281169116145b6113e25760405162461bcd60e51b81526004016105fc90612700565b60008060006113f184876118ef565b925092509250826000141561140d57600094505050505061053f565b61141983838884611ef2565b1561142b57600094505050505061053f565b6114336120cc565b6001600160a01b03166340c10f1985856040518363ffffffff1660e01b81526004016114609291906124a0565b600060405180830381600087803b15801561147a57600080fd5b505af115801561148e573d6000803e3d6000fd5b50505050856001600160a01b0316826001600160a01b03167fa111914d7f2ea8beca61d12f1a1f38c5533de5f1823c3936422df4404ac2ec68856040516114d591906124c4565b60405180910390a35090949350505050565b600d5481565b600080611505600e5443611ae490919063ffffffff16565b905080611516576000915050610f2c565b6000611520610e89565b90508061153257600092505050610f2c565b600061153c6120cc565b90506000816001600160a01b03166370a08231611557611ab9565b6040518263ffffffff1660e01b8152600401611573919061248c565b60206040518083038186803b15801561158b57600080fd5b505afa15801561159f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c39190612453565b9050806115d7576000945050505050610f2c565b60006115e38486611b41565b90506115fb82610a3483670de0b6b3a7640000611b41565b9550505050505090565b600090815260116020526040902054151590565b6000818152601060205260408120818061163285610a58565b6003850182905560019094019390935550909392505050565b6000546001600160a01b031681565b61166261171c565b8161167f5760405162461bcd60e51b81526004016105fc906125f4565b6000828152601860205260409020546001600160a01b0390811690821681146116fc5760008381526018602052604080822080546001600160a01b0319166001600160a01b03868116918217909255915191929084169186917f125079be6e3f6efadf63498088ca509edc3835fb416ba13d25649bd1d47d2fa991a45b505050565b6018602052600090815260409020546001600160a01b031681565b60008054906101000a90046001600160a01b03166001600160a01b0316634fc07d756040518163ffffffff1660e01b815260040160206040518083038186803b15801561176857600080fd5b505afa15801561177c573d6000803e3d6000fd5b505050506040513d602081101561179257600080fd5b50516001600160a01b0316331461138d576040805162461bcd60e51b815260206004820152601860248201527f4f6e6c7920436f6e74726f6c6c657220676f7665726e6f720000000000000000604482015290519081900360640190fd5b6117f8611237565b5060148190556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a49061263f565b611835826106bc565b5080156118a25760008281526011602052604090205461189d57600082815260116020526040908190204390819055905183917fe016102b339c3889f4967b491f3381f2c352c8fe3d4f880007807d45b124065a9161189491906124c4565b60405180910390a25b61060f565b6000828152601160205260408082208290555183917fe016102b339c3889f4967b491f3381f2c352c8fe3d4f880007807d45b124065a916118e391906124c4565b60405180910390a25050565b60008060008060008060008060008a6001600160a01b03166355c852698b6040518263ffffffff1660e01b8152600401611929919061248c565b60c06040518083038186803b15801561194157600080fd5b505afa158015611955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119799190612262565b955095509550955095509550600061199085611619565b90508661199e5760006119ac565b6119ac610cdc858584611ca0565b9c959b5093995093975050505050505050565b6000868152601860205260408120546001600160a01b031686158015906119ee57506001600160a01b03811615155b15611aae576119fb6120cc565b6001600160a01b03166340c10f1982896040518363ffffffff1660e01b8152600401611a289291906124a0565b600060405180830381600087803b158015611a4257600080fd5b505af1158015611a56573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b0316897fc65eb6cf0937b3705ec8a3ab7f01707d806f4e42f65a2f06b1143fc30862df5e8a8888604051611aa29392919061275f565b60405180910390a48691505b509695505050505050565b6000610f297f00000000000000000000000000000000000000000000000000000000000000006120f3565b600082821115611b3b576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082611b5057506000610cec565b82820282848281611b5d57fe5b04146112675760405162461bcd60e51b815260040180806020018281038252602181526020018061280e6021913960400191505060405180910390fd5b6000808211611bf0576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381611bf957fe5b049392505050565b600082820183811015611267576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818311611c6b576000611267565b6112678383611ae4565b6000610f297f00000000000000000000000000000000000000000000000000000000000000006120f3565b600080611cad8385611ae4565b9050610a49670de0b6b3a7640000610a348388611b41565b6000546001600160a01b0316331461138d576040805162461bcd60e51b815260206004820152601960248201527f43616c6c6572206d75737420626520436f6e74726f6c6c657200000000000000604482015290519081900360640190fd5b6001600160a01b038116611d78576040805162461bcd60e51b815260206004820152601660248201527510dbdb9d1c9bdb1b195c881b5d5cdd081899481cd95d60521b604482015290519081900360640190fd5b600080546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f4ff638452bbf33c012645d18ae6f05515ff5f2d1dfb0cece8cbf018c60903f709181900360200190a150565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6000805460408051637bb20d2f60e11b81526004810185905290516001600160a01b039092169163f7641a5e91602480820192602092909190829003018186803b158015611e3e57600080fd5b505afa158015611e52573d6000803e3d6000fd5b505050506040513d6020811015611e6857600080fd5b50516000838152600160205260409020549091506001600160a01b0380831691161461060f5760008281526001602090815260409182902080546001600160a01b0319166001600160a01b0385169081179091558251908152915184927fd0e7a942b1fc38c411c4f53d153ba14fd24542a6a35ebacd9b6afca1a154e20692908290030190a25050565b6000611efd82611605565b15611f9057826001600160a01b0316846001600160a01b03167f9b1323a10f3955b1c9c054ffbda78edfdf49998aaf37f61d9f84776b59ac804360405160405180910390a3611f7f7fc0f4a5620db2f97e7c3a4ba7058497eaa0d497538b2666d66bd6932f25345c8886868686604051806020016040528060008152506119bf565b15611f8c575060016106b4565b5060015b6016546001600160a01b03161580159061202757506016546040516366e305fd60e01b81526001600160a01b03909116906366e305fd90611fd590879060040161248c565b60206040518083038186803b158015611fed57600080fd5b505afa158015612001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120259190612246565b155b156106b457826001600160a01b0316846001600160a01b03167fb012e09970916d172f2899bd374aae8d902671bf721e50331e2d57775f90e7478760405161206f91906124c4565b60405180910390a36120b47ffcadc72cad493def76767524554db9da829b6aca9457c0187f63000dba3c943986868686604051806020016040528060008152506119bf565b156120c1575060016106b4565b506001949350505050565b6000610f297f00000000000000000000000000000000000000000000000000000000000000005b6000818152600160205260408120546001600160a01b03168061053c5760005460408051637bb20d2f60e11b81526004810186905290516001600160a01b039092169163f7641a5e91602480820192602092909190829003018186803b15801561215c57600080fd5b505afa158015612170573d6000803e3d6000fd5b505050506040513d602081101561218657600080fd5b50519392505050565b60008083601f8401126121a0578182fd5b50813567ffffffffffffffff8111156121b7578182fd5b6020830191508360208285010111156121cf57600080fd5b9250929050565b6000602082840312156121e7578081fd5b8135611267816127ea565b600060208284031215612203578081fd5b8151611267816127ea565b60008060408385031215612220578081fd5b823561222b816127ea565b9150602083013561223b816127ea565b809150509250929050565b600060208284031215612257578081fd5b8151611267816127ff565b60008060008060008060c0878903121561227a578182fd5b8651612285816127ff565b6020880151909650612296816127ea565b6040880151606089015160808a015160a0909a0151989b929a5090989097909650945092505050565b6000602082840312156122d0578081fd5b5035919050565b600080604083850312156122e9578182fd5b82359150602083013561223b816127ea565b60008060008060608587031215612310578384fd5b843593506020850135612322816127ea565b9250604085013567ffffffffffffffff81111561233d578283fd5b6123498782880161218f565b95989497509550505050565b60008060408385031215612367578182fd5b82359150602083013561223b816127ff565b60006020828403121561238a578081fd5b81356001600160e01b031981168114611267578182fd5b6000806000604084860312156123b5578283fd5b83356123c0816127ea565b9250602084013567ffffffffffffffff8111156123db578283fd5b6123e78682870161218f565b9497909650939450505050565b600060808284031215612405578081fd5b6040516080810181811067ffffffffffffffff8211171561242257fe5b8060405250825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612464578081fd5b5051919050565b6000806040838503121561247d578182fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b6001600160e01b031991909116815260200190565b6020808252601a908201527f7375626772617068417661696c6162696c6974794f7261636c65000000000000604082015260600190565b6020808252602f908201527f43616c6c6572206d75737420626520746865207375626772617068206176616960408201526e6c6162696c697479206f7261636c6560881b606082015260800190565b6020808252601590820152741b5a5b9a5b5d5b54dd5899dc985c1a14da59db985b605a1b604082015260600190565b60208082526037908201527f436f6e747261637420646f6573206e6f7420737570706f72742049526577617260408201527f6473456c69676962696c69747920696e74657266616365000000000000000000606082015260800190565b6020808252602b908201527f43616e6e6f7420736574207265636c61696d206164647265737320666f72202860408201526a627974657333322830292960a81b606082015260800190565b60208082526010908201526f69737375616e6365506572426c6f636b60801b604082015260600190565b60208082526043908201527f436f6e747261637420646f6573206e6f7420737570706f72742049497373756160408201527f6e6365416c6c6f636174696f6e446973747269627574696f6e20696e7465726660608201526261636560e81b608082015260a00190565b6020808252601490820152732737ba1030903932bbb0b932399034b9b9bab2b960611b604082015260600190565b6020808252601f908201527f43616c6c6572206d757374206265206120726577617264732069737375657200604082015260600190565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b600084825260208481840152606060408401528351806060850152825b818110156127985785810183015185820160800152820161277c565b818111156127a95783608083870101525b50601f01601f19169290920160800195945050505050565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b6001600160a01b03811681146105cf57600080fd5b80151581146105cf57600080fdfe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212207419d71079463c2ab6f09756cef155b2ab7c65e9f3f2a7debd98b5b547540fba64736f6c63430007060033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102485760003560e01c8063931c0ac11161013b578063c8a5f81e116100b8578063e820e2841161007c578063e820e2841461049c578063eeac3e0e146104af578063f77c4791146104c2578063fc763657146104ca578063fcb5fa86146104dd57610248565b8063c8a5f81e1461045e578063d6866ea514610471578063db75092614610479578063e242cf1e1461048c578063e284f8481461049457610248565b8063a8cc0ee2116100ff578063a8cc0ee21461042b578063b951acd714610433578063c3e15de11461043b578063c4d66de814610443578063c7d1117d1461045657610248565b8063931c0ac1146103d757806393a90a1e146103ea5780639825545a146103fd5780639ce7abe514610405578063a2594d821461041857610248565b8063365b7f91116101c95780636c080f181161018d5780636c080f1814610380578063702a280e14610388578063779bcb9b146103a95780639006ce8b146103bc57806392eefe9b146103c457610248565b8063365b7f911461031c5780633df8d6821461032f5780634986594f146103375780634bbfc1c51461035a5780635c6cbd591461036d57610248565b80631324a506116102105780631324a506146102bb57806316a84ab2146102ce5780631ab6bff1146102ee5780631d1c2fec14610301578063260582491461031457610248565b806301ffc9a71461024d57806305bb8c6b146102765780630903c0941461028b5780630beff424146102a05780631156bdc1146102a8575b600080fd5b61026061025b366004612379565b6104f0565b60405161026d91906124b9565b60405180910390f35b61027e610544565b60405161026d919061248c565b61029e6102993660046121d6565b610553565b005b61027e6105af565b61029e6102b63660046122bf565b6105be565b61029e6102c9366004612355565b6105d2565b6102e16102dc3660046122bf565b610613565b60405161026d91906124c4565b6102e16102fc3660046122fb565b610625565b6102e161030f3660046122bf565b6106bc565b61027e6106f3565b61029e61032a3660046121d6565b610702565b61029e61081f565b61034a6103453660046122bf565b610827565b60405161026d94939291906127cf565b61029e6103683660046122bf565b61084e565b6102e161037b3660046122bf565b61094a565b6102e1610a52565b61039b6103963660046122bf565b610a58565b60405161026d9291906127c1565b6102e16103b736600461220e565b610bcc565b6102e1610cf2565b61029e6103d23660046121d6565b610cf8565b61029e6103e53660046121d6565b610d09565b61029e6103f83660046121d6565b610e2f565b6102e1610e89565b61029e6104133660046123a1565b610f2f565b61029e6104263660046121d6565b611085565b6102e16111a0565b6102e16111b6565b61027e6111bc565b61029e6104513660046121d6565b6111cb565b6102e1611237565b6102e161046c36600461246b565b61124f565b61029e61126e565b6102e16104873660046121d6565b61138f565b6102e16114e7565b6102e16114ed565b6102606104aa3660046122bf565b611605565b6102e16104bd3660046122bf565b611619565b61027e61164b565b61029e6104d83660046122d7565b61165a565b61027e6104eb3660046122bf565b611701565b60006001600160e01b031982166301ffc9a760e01b148061052157506001600160e01b0319821663aee4dc4360e01b145b8061053c57506001600160e01b0319821663022ee85560e51b145b90505b919050565b600f546001600160a01b031681565b61055b61171c565b600f80546001600160a01b0319166001600160a01b0383161790556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a4906124e2565b60405180910390a150565b6016546001600160a01b031681565b6105c661171c565b6105cf816117f0565b50565b600f546001600160a01b031633146106055760405162461bcd60e51b81526004016105fc90612519565b60405180910390fd5b61060f828261182c565b5050565b60116020526000908152604090205481565b60155460009033906001600160a01b031681146106545760405162461bcd60e51b81526004016105fc906126d2565b600080600061066384896118ef565b9250925092506106ad8984848b858c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119bf92505050565b9450505050505b949350505050565b60006106c6611237565b5060008281526010602052604090206106de8361094a565b808255600d5460029092019190915592915050565b6015546001600160a01b031681565b61070a61171c565b6016546001600160a01b038281169116146105cf576001600160a01b038116156107cd576040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790610761906366e305fd60e01b906004016124cd565b60206040518083038186803b15801561077957600080fd5b505afa15801561078d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b19190612246565b6107cd5760405162461bcd60e51b81526004016105fc90612597565b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f6a6254f061a8ff05f7d86ad3625787bb913090d9758a7495a002a44813d6e44890600090a35050565b6105cf611237565b60106020526000908152604090208054600182015460028301546003909301549192909184565b600f546001600160a01b03163314806108fb575060008054906101000a90046001600160a01b03166001600160a01b0316634fc07d756040518163ffffffff1660e01b815260040160206040518083038186803b1580156108ae57600080fd5b505afa1580156108c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e691906121f2565b6001600160a01b0316336001600160a01b0316145b6109175760405162461bcd60e51b81526004016105fc90612737565b60128190556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a490612568565b600081815260106020526040812061096183611605565b1561096e5754905061053f565b6000610978611ab9565b6001600160a01b03166346e855da856040518263ffffffff1660e01b81526004016109a391906124c4565b60206040518083038186803b1580156109bb57600080fd5b505afa1580156109cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f39190612453565b90506000601254821015610a08576000610a3a565b610a3a670de0b6b3a7640000610a3484610a2e8760020154610a286111a0565b90611ae4565b90611b41565b90611b9a565b8354909150610a499082611c01565b95945050505050565b60145481565b6000818152601060205260408120819081610a728561094a565b90506000610a84828460010154611c5b565b90506000806040518060400160405280610a9c611c75565b6001600160a01b03908116825260155416602090910152905060005b6002811015610b7b576000828260028110610acf57fe5b60200201516001600160a01b031614610b7357818160028110610aee57fe5b60200201516001600160a01b031663e2e1e8e98a6040518263ffffffff1660e01b8152600401610b1e91906124c4565b60206040518083038186803b158015610b3657600080fd5b505afa158015610b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e9190612453565b830192505b600101610ab8565b5081610b9257600084965096505050505050610bc7565b6000610baa83610a3486670de0b6b3a7640000611b41565b6003870154909150610bbc9082611c01565b975093955050505050505b915091565b6000610bd6611c75565b6001600160a01b0316836001600160a01b03161480610c0257506015546001600160a01b038481169116145b610c1e5760405162461bcd60e51b81526004016105fc906126d2565b6000806000806000876001600160a01b03166355c85269886040518263ffffffff1660e01b8152600401610c52919061248c565b60c06040518083038186803b158015610c6a57600080fd5b505afa158015610c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca29190612262565b955095509550955050945084610cc057600095505050505050610cec565b6000610ccb85610a58565b509050610ce3610cdc858584611ca0565b8390611c01565b96505050505050505b92915050565b600e5481565b610d00611cc5565b6105cf81611d24565b610d1161171c565b6017546001600160a01b038281169116146105cf57610d2e611237565b506001600160a01b03811615610ddd576040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790610d7190631e768dff60e21b906004016124cd565b60206040518083038186803b158015610d8957600080fd5b505afa158015610d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc19190612246565b610ddd5760405162461bcd60e51b81526004016105fc90612669565b601780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f01674b69434be290e7c6acef73422bc6cf74884b5228c9e6cab93117eae2cdcb90600090a35050565b610e3761171c565b601580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f97befc0afcf2bace352f077aea9873c9552fc2e5ab26874f356006fdf9da4ede90600090a35050565b6017546000906001600160a01b0316610ea457601454610f29565b601754604051630c19f2d360e21b81526001600160a01b0390911690633067cb4c90610ed490309060040161248c565b60806040518083038186803b158015610eec57600080fd5b505afa158015610f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2491906123f4565b604001515b90505b90565b82806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f6b57600080fd5b505af1158015610f7f573d6000803e3d6000fd5b505050506040513d6020811015610f9557600080fd5b50516001600160a01b03163314610ff3576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206d757374206265207468652070726f78792061646d696e0000604482015290519081900360640190fd5b60405163623faf6160e01b8152602060048201908152602482018490526001600160a01b0386169163623faf619186918691908190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561106757600080fd5b505af115801561107b573d6000803e3d6000fd5b5050505050505050565b80806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156110c157600080fd5b505af11580156110d5573d6000803e3d6000fd5b505050506040513d60208110156110eb57600080fd5b50516001600160a01b03163314611149576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206d757374206265207468652070726f78792061646d696e0000604482015290519081900360640190fd5b816001600160a01b03166359fc20bb6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561118457600080fd5b505af1158015611198573d6000803e3d6000fd5b505050505050565b6000610f296111ad6114ed565b600d5490611c01565b60125481565b6017546001600160a01b031681565b6111d3611dcc565b6001600160a01b0316336001600160a01b03161461122e576040805162461bcd60e51b815260206004820152601360248201527227b7363c9034b6b83632b6b2b73a30ba34b7b760691b604482015290519081900360640190fd5b6105cf81610d00565b60006112416111a0565b600d81905543600e55905090565b6000611267670de0b6b3a7640000610a348486611b41565b9392505050565b6112977f0000000000000000000000000000000000000000000000000000000000000000611df1565b6112c07f0000000000000000000000000000000000000000000000000000000000000000611df1565b6112e97f0000000000000000000000000000000000000000000000000000000000000000611df1565b6113127f0000000000000000000000000000000000000000000000000000000000000000611df1565b61133b7f0000000000000000000000000000000000000000000000000000000000000000611df1565b6113647f0000000000000000000000000000000000000000000000000000000000000000611df1565b61138d7f0000000000000000000000000000000000000000000000000000000000000000611df1565b565b60003361139a611c75565b6001600160a01b0316816001600160a01b031614806113c657506015546001600160a01b038281169116145b6113e25760405162461bcd60e51b81526004016105fc90612700565b60008060006113f184876118ef565b925092509250826000141561140d57600094505050505061053f565b61141983838884611ef2565b1561142b57600094505050505061053f565b6114336120cc565b6001600160a01b03166340c10f1985856040518363ffffffff1660e01b81526004016114609291906124a0565b600060405180830381600087803b15801561147a57600080fd5b505af115801561148e573d6000803e3d6000fd5b50505050856001600160a01b0316826001600160a01b03167fa111914d7f2ea8beca61d12f1a1f38c5533de5f1823c3936422df4404ac2ec68856040516114d591906124c4565b60405180910390a35090949350505050565b600d5481565b600080611505600e5443611ae490919063ffffffff16565b905080611516576000915050610f2c565b6000611520610e89565b90508061153257600092505050610f2c565b600061153c6120cc565b90506000816001600160a01b03166370a08231611557611ab9565b6040518263ffffffff1660e01b8152600401611573919061248c565b60206040518083038186803b15801561158b57600080fd5b505afa15801561159f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c39190612453565b9050806115d7576000945050505050610f2c565b60006115e38486611b41565b90506115fb82610a3483670de0b6b3a7640000611b41565b9550505050505090565b600090815260116020526040902054151590565b6000818152601060205260408120818061163285610a58565b6003850182905560019094019390935550909392505050565b6000546001600160a01b031681565b61166261171c565b8161167f5760405162461bcd60e51b81526004016105fc906125f4565b6000828152601860205260409020546001600160a01b0390811690821681146116fc5760008381526018602052604080822080546001600160a01b0319166001600160a01b03868116918217909255915191929084169186917f125079be6e3f6efadf63498088ca509edc3835fb416ba13d25649bd1d47d2fa991a45b505050565b6018602052600090815260409020546001600160a01b031681565b60008054906101000a90046001600160a01b03166001600160a01b0316634fc07d756040518163ffffffff1660e01b815260040160206040518083038186803b15801561176857600080fd5b505afa15801561177c573d6000803e3d6000fd5b505050506040513d602081101561179257600080fd5b50516001600160a01b0316331461138d576040805162461bcd60e51b815260206004820152601860248201527f4f6e6c7920436f6e74726f6c6c657220676f7665726e6f720000000000000000604482015290519081900360640190fd5b6117f8611237565b5060148190556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a49061263f565b611835826106bc565b5080156118a25760008281526011602052604090205461189d57600082815260116020526040908190204390819055905183917fe016102b339c3889f4967b491f3381f2c352c8fe3d4f880007807d45b124065a9161189491906124c4565b60405180910390a25b61060f565b6000828152601160205260408082208290555183917fe016102b339c3889f4967b491f3381f2c352c8fe3d4f880007807d45b124065a916118e391906124c4565b60405180910390a25050565b60008060008060008060008060008a6001600160a01b03166355c852698b6040518263ffffffff1660e01b8152600401611929919061248c565b60c06040518083038186803b15801561194157600080fd5b505afa158015611955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119799190612262565b955095509550955095509550600061199085611619565b90508661199e5760006119ac565b6119ac610cdc858584611ca0565b9c959b5093995093975050505050505050565b6000868152601860205260408120546001600160a01b031686158015906119ee57506001600160a01b03811615155b15611aae576119fb6120cc565b6001600160a01b03166340c10f1982896040518363ffffffff1660e01b8152600401611a289291906124a0565b600060405180830381600087803b158015611a4257600080fd5b505af1158015611a56573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b0316897fc65eb6cf0937b3705ec8a3ab7f01707d806f4e42f65a2f06b1143fc30862df5e8a8888604051611aa29392919061275f565b60405180910390a48691505b509695505050505050565b6000610f297f00000000000000000000000000000000000000000000000000000000000000006120f3565b600082821115611b3b576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082611b5057506000610cec565b82820282848281611b5d57fe5b04146112675760405162461bcd60e51b815260040180806020018281038252602181526020018061280e6021913960400191505060405180910390fd5b6000808211611bf0576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381611bf957fe5b049392505050565b600082820183811015611267576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818311611c6b576000611267565b6112678383611ae4565b6000610f297f00000000000000000000000000000000000000000000000000000000000000006120f3565b600080611cad8385611ae4565b9050610a49670de0b6b3a7640000610a348388611b41565b6000546001600160a01b0316331461138d576040805162461bcd60e51b815260206004820152601960248201527f43616c6c6572206d75737420626520436f6e74726f6c6c657200000000000000604482015290519081900360640190fd5b6001600160a01b038116611d78576040805162461bcd60e51b815260206004820152601660248201527510dbdb9d1c9bdb1b195c881b5d5cdd081899481cd95d60521b604482015290519081900360640190fd5b600080546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f4ff638452bbf33c012645d18ae6f05515ff5f2d1dfb0cece8cbf018c60903f709181900360200190a150565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6000805460408051637bb20d2f60e11b81526004810185905290516001600160a01b039092169163f7641a5e91602480820192602092909190829003018186803b158015611e3e57600080fd5b505afa158015611e52573d6000803e3d6000fd5b505050506040513d6020811015611e6857600080fd5b50516000838152600160205260409020549091506001600160a01b0380831691161461060f5760008281526001602090815260409182902080546001600160a01b0319166001600160a01b0385169081179091558251908152915184927fd0e7a942b1fc38c411c4f53d153ba14fd24542a6a35ebacd9b6afca1a154e20692908290030190a25050565b6000611efd82611605565b15611f9057826001600160a01b0316846001600160a01b03167f9b1323a10f3955b1c9c054ffbda78edfdf49998aaf37f61d9f84776b59ac804360405160405180910390a3611f7f7fc0f4a5620db2f97e7c3a4ba7058497eaa0d497538b2666d66bd6932f25345c8886868686604051806020016040528060008152506119bf565b15611f8c575060016106b4565b5060015b6016546001600160a01b03161580159061202757506016546040516366e305fd60e01b81526001600160a01b03909116906366e305fd90611fd590879060040161248c565b60206040518083038186803b158015611fed57600080fd5b505afa158015612001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120259190612246565b155b156106b457826001600160a01b0316846001600160a01b03167fb012e09970916d172f2899bd374aae8d902671bf721e50331e2d57775f90e7478760405161206f91906124c4565b60405180910390a36120b47ffcadc72cad493def76767524554db9da829b6aca9457c0187f63000dba3c943986868686604051806020016040528060008152506119bf565b156120c1575060016106b4565b506001949350505050565b6000610f297f00000000000000000000000000000000000000000000000000000000000000005b6000818152600160205260408120546001600160a01b03168061053c5760005460408051637bb20d2f60e11b81526004810186905290516001600160a01b039092169163f7641a5e91602480820192602092909190829003018186803b15801561215c57600080fd5b505afa158015612170573d6000803e3d6000fd5b505050506040513d602081101561218657600080fd5b50519392505050565b60008083601f8401126121a0578182fd5b50813567ffffffffffffffff8111156121b7578182fd5b6020830191508360208285010111156121cf57600080fd5b9250929050565b6000602082840312156121e7578081fd5b8135611267816127ea565b600060208284031215612203578081fd5b8151611267816127ea565b60008060408385031215612220578081fd5b823561222b816127ea565b9150602083013561223b816127ea565b809150509250929050565b600060208284031215612257578081fd5b8151611267816127ff565b60008060008060008060c0878903121561227a578182fd5b8651612285816127ff565b6020880151909650612296816127ea565b6040880151606089015160808a015160a0909a0151989b929a5090989097909650945092505050565b6000602082840312156122d0578081fd5b5035919050565b600080604083850312156122e9578182fd5b82359150602083013561223b816127ea565b60008060008060608587031215612310578384fd5b843593506020850135612322816127ea565b9250604085013567ffffffffffffffff81111561233d578283fd5b6123498782880161218f565b95989497509550505050565b60008060408385031215612367578182fd5b82359150602083013561223b816127ff565b60006020828403121561238a578081fd5b81356001600160e01b031981168114611267578182fd5b6000806000604084860312156123b5578283fd5b83356123c0816127ea565b9250602084013567ffffffffffffffff8111156123db578283fd5b6123e78682870161218f565b9497909650939450505050565b600060808284031215612405578081fd5b6040516080810181811067ffffffffffffffff8211171561242257fe5b8060405250825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612464578081fd5b5051919050565b6000806040838503121561247d578182fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b6001600160e01b031991909116815260200190565b6020808252601a908201527f7375626772617068417661696c6162696c6974794f7261636c65000000000000604082015260600190565b6020808252602f908201527f43616c6c6572206d75737420626520746865207375626772617068206176616960408201526e6c6162696c697479206f7261636c6560881b606082015260800190565b6020808252601590820152741b5a5b9a5b5d5b54dd5899dc985c1a14da59db985b605a1b604082015260600190565b60208082526037908201527f436f6e747261637420646f6573206e6f7420737570706f72742049526577617260408201527f6473456c69676962696c69747920696e74657266616365000000000000000000606082015260800190565b6020808252602b908201527f43616e6e6f7420736574207265636c61696d206164647265737320666f72202860408201526a627974657333322830292960a81b606082015260800190565b60208082526010908201526f69737375616e6365506572426c6f636b60801b604082015260600190565b60208082526043908201527f436f6e747261637420646f6573206e6f7420737570706f72742049497373756160408201527f6e6365416c6c6f636174696f6e446973747269627574696f6e20696e7465726660608201526261636560e81b608082015260a00190565b6020808252601490820152732737ba1030903932bbb0b932399034b9b9bab2b960611b604082015260600190565b6020808252601f908201527f43616c6c6572206d757374206265206120726577617264732069737375657200604082015260600190565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b600084825260208481840152606060408401528351806060850152825b818110156127985785810183015185820160800152820161277c565b818111156127a95783608083870101525b50601f01601f19169290920160800195945050505050565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b6001600160a01b03811681146105cf57600080fd5b80151581146105cf57600080fdfe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212207419d71079463c2ab6f09756cef155b2ab7c65e9f3f2a7debd98b5b547540fba64736f6c63430007060033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/packages/horizon/ignition/deployments/horizon-localhost-upgrade/artifacts/UpgradeRewardsManagerGovernor#GraphProxyAdmin.json b/packages/horizon/ignition/deployments/horizon-localhost-upgrade/artifacts/UpgradeRewardsManagerGovernor#GraphProxyAdmin.json new file mode 100644 index 000000000..638d7bc87 --- /dev/null +++ b/packages/horizon/ignition/deployments/horizon-localhost-upgrade/artifacts/UpgradeRewardsManagerGovernor#GraphProxyAdmin.json @@ -0,0 +1,234 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "GraphProxyAdmin", + "sourceName": "contracts/upgrades/GraphProxyAdmin.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "NewOwnership", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "NewPendingOwnership", + "type": "event" + }, + { + "inputs": [], + "name": "acceptOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract GraphUpgradeable", + "name": "_implementation", + "type": "address" + }, + { + "internalType": "contract IGraphProxy", + "name": "_proxy", + "type": "address" + } + ], + "name": "acceptProxy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract GraphUpgradeable", + "name": "_implementation", + "type": "address" + }, + { + "internalType": "contract IGraphProxy", + "name": "_proxy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "acceptProxyAndCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IGraphProxy", + "name": "_proxy", + "type": "address" + }, + { + "internalType": "address", + "name": "_newAdmin", + "type": "address" + } + ], + "name": "changeProxyAdmin", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IGraphProxy", + "name": "_proxy", + "type": "address" + } + ], + "name": "getProxyAdmin", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IGraphProxy", + "name": "_proxy", + "type": "address" + } + ], + "name": "getProxyImplementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IGraphProxy", + "name": "_proxy", + "type": "address" + } + ], + "name": "getProxyPendingImplementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "governor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingGovernor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newGovernor", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IGraphProxy", + "name": "_proxy", + "type": "address" + }, + { + "internalType": "address", + "name": "_implementation", + "type": "address" + } + ], + "name": "upgrade", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506100243361002960201b610a0c1760201c565b61004b565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b610a648061005a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80637eff275e116100715780637eff275e146101b157806399a88ec4146101df578063e3056a341461020d578063eb451a0214610215578063f2fde38b14610243578063f3b7dead14610269576100a9565b806307ebde0e146100ae5780630c340a2414610139578063204e1c7a1461015d5780635bf410eb1461018357806379ba5097146101a9575b600080fd5b610137600480360360608110156100c457600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156100f857600080fd5b82018360208201111561010a57600080fd5b8035906020019184600183028401116401000000008311171561012c57600080fd5b50909250905061028f565b005b610141610388565b604080516001600160a01b039092168252519081900360200190f35b6101416004803603602081101561017357600080fd5b50356001600160a01b0316610397565b6101416004803603602081101561019957600080fd5b50356001600160a01b031661046a565b610137610525565b610137600480360360408110156101c757600080fd5b506001600160a01b0381358116916020013516610633565b610137600480360360408110156101f557600080fd5b506001600160a01b03813581169160200135166106f6565b61014161079d565b6101376004803603604081101561022b57600080fd5b506001600160a01b03813581169160200135166107ac565b6101376004803603602081101561025957600080fd5b50356001600160a01b0316610853565b6101416004803603602081101561027f57600080fd5b50356001600160a01b0316610951565b6000546001600160a01b031633146102e7576040805162461bcd60e51b815260206004820152601660248201527513db9b1e4811dbdd995c9b9bdc8818d85b8818d85b1b60521b604482015290519081900360640190fd5b836001600160a01b0316639ce7abe58484846040518463ffffffff1660e01b815260040180846001600160a01b03168152602001806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050945050505050600060405180830381600087803b15801561036a57600080fd5b505af115801561037e573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031681565b6000806000836001600160a01b03166040518080635c60da1b60e01b8152506004019050600060405180830381855afa9150503d80600081146103f6576040519150601f19603f3d011682016040523d82523d6000602084013e6103fb565b606091505b50915091508161044b576040805162461bcd60e51b8152602060048201526016602482015275141c9bde1e481a5b5c1b0818d85b1b0819985a5b195960521b604482015290519081900360640190fd5b80806020019051602081101561046057600080fd5b5051949350505050565b6000806000836001600160a01b0316604051808063396f7b2360e01b8152506004019050600060405180830381855afa9150503d80600081146104c9576040519150601f19603f3d011682016040523d82523d6000602084013e6104ce565b606091505b50915091508161044b576040805162461bcd60e51b815260206004820152601d60248201527f50726f78792070656e64696e67496d706c2063616c6c206661696c6564000000604482015290519081900360640190fd5b6001546001600160a01b031680158015906105485750336001600160a01b038216145b610599576040805162461bcd60e51b815260206004820152601f60248201527f43616c6c6572206d7573742062652070656e64696e6720676f7665726e6f7200604482015290519081900360640190fd5b600080546001600160a01b038381166001600160a01b031980841691909117808555600180549092169091556040519282169391169183917f0ac6deed30eef60090c749850e10f2fa469e3e25fec1d1bef2853003f6e6f18f91a36001546040516001600160a01b03918216918416907f76563ad561b7036ae716b9b25cb521b21463240f104c97e12f25877f2235f33d90600090a35050565b6000546001600160a01b0316331461068b576040805162461bcd60e51b815260206004820152601660248201527513db9b1e4811dbdd995c9b9bdc8818d85b8818d85b1b60521b604482015290519081900360640190fd5b816001600160a01b031663704b6c02826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156106da57600080fd5b505af11580156106ee573d6000803e3d6000fd5b505050505050565b6000546001600160a01b0316331461074e576040805162461bcd60e51b815260206004820152601660248201527513db9b1e4811dbdd995c9b9bdc8818d85b8818d85b1b60521b604482015290519081900360640190fd5b816001600160a01b0316633659cfe6826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156106da57600080fd5b6001546001600160a01b031681565b6000546001600160a01b03163314610804576040805162461bcd60e51b815260206004820152601660248201527513db9b1e4811dbdd995c9b9bdc8818d85b8818d85b1b60521b604482015290519081900360640190fd5b816001600160a01b031663a2594d82826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156106da57600080fd5b6000546001600160a01b031633146108ab576040805162461bcd60e51b815260206004820152601660248201527513db9b1e4811dbdd995c9b9bdc8818d85b8818d85b1b60521b604482015290519081900360640190fd5b6001600160a01b0381166108fd576040805162461bcd60e51b815260206004820152601460248201527311dbdd995c9b9bdc881b5d5cdd081899481cd95d60621b604482015290519081900360640190fd5b600180546001600160a01b038381166001600160a01b03198316179283905560405191811692169082907f76563ad561b7036ae716b9b25cb521b21463240f104c97e12f25877f2235f33d90600090a35050565b6000806000836001600160a01b031660405180806303e1469160e61b8152506004019050600060405180830381855afa9150503d80600081146109b0576040519150601f19603f3d011682016040523d82523d6000602084013e6109b5565b606091505b50915091508161044b576040805162461bcd60e51b815260206004820152601760248201527f50726f78792061646d696e2063616c6c206661696c6564000000000000000000604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b039290921691909117905556fea264697066735822122065318ae85dd07a661b6d6ce6aa887b38e440ad77b84f3ab134b4ae27122295d464736f6c63430007060033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80637eff275e116100715780637eff275e146101b157806399a88ec4146101df578063e3056a341461020d578063eb451a0214610215578063f2fde38b14610243578063f3b7dead14610269576100a9565b806307ebde0e146100ae5780630c340a2414610139578063204e1c7a1461015d5780635bf410eb1461018357806379ba5097146101a9575b600080fd5b610137600480360360608110156100c457600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156100f857600080fd5b82018360208201111561010a57600080fd5b8035906020019184600183028401116401000000008311171561012c57600080fd5b50909250905061028f565b005b610141610388565b604080516001600160a01b039092168252519081900360200190f35b6101416004803603602081101561017357600080fd5b50356001600160a01b0316610397565b6101416004803603602081101561019957600080fd5b50356001600160a01b031661046a565b610137610525565b610137600480360360408110156101c757600080fd5b506001600160a01b0381358116916020013516610633565b610137600480360360408110156101f557600080fd5b506001600160a01b03813581169160200135166106f6565b61014161079d565b6101376004803603604081101561022b57600080fd5b506001600160a01b03813581169160200135166107ac565b6101376004803603602081101561025957600080fd5b50356001600160a01b0316610853565b6101416004803603602081101561027f57600080fd5b50356001600160a01b0316610951565b6000546001600160a01b031633146102e7576040805162461bcd60e51b815260206004820152601660248201527513db9b1e4811dbdd995c9b9bdc8818d85b8818d85b1b60521b604482015290519081900360640190fd5b836001600160a01b0316639ce7abe58484846040518463ffffffff1660e01b815260040180846001600160a01b03168152602001806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050945050505050600060405180830381600087803b15801561036a57600080fd5b505af115801561037e573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031681565b6000806000836001600160a01b03166040518080635c60da1b60e01b8152506004019050600060405180830381855afa9150503d80600081146103f6576040519150601f19603f3d011682016040523d82523d6000602084013e6103fb565b606091505b50915091508161044b576040805162461bcd60e51b8152602060048201526016602482015275141c9bde1e481a5b5c1b0818d85b1b0819985a5b195960521b604482015290519081900360640190fd5b80806020019051602081101561046057600080fd5b5051949350505050565b6000806000836001600160a01b0316604051808063396f7b2360e01b8152506004019050600060405180830381855afa9150503d80600081146104c9576040519150601f19603f3d011682016040523d82523d6000602084013e6104ce565b606091505b50915091508161044b576040805162461bcd60e51b815260206004820152601d60248201527f50726f78792070656e64696e67496d706c2063616c6c206661696c6564000000604482015290519081900360640190fd5b6001546001600160a01b031680158015906105485750336001600160a01b038216145b610599576040805162461bcd60e51b815260206004820152601f60248201527f43616c6c6572206d7573742062652070656e64696e6720676f7665726e6f7200604482015290519081900360640190fd5b600080546001600160a01b038381166001600160a01b031980841691909117808555600180549092169091556040519282169391169183917f0ac6deed30eef60090c749850e10f2fa469e3e25fec1d1bef2853003f6e6f18f91a36001546040516001600160a01b03918216918416907f76563ad561b7036ae716b9b25cb521b21463240f104c97e12f25877f2235f33d90600090a35050565b6000546001600160a01b0316331461068b576040805162461bcd60e51b815260206004820152601660248201527513db9b1e4811dbdd995c9b9bdc8818d85b8818d85b1b60521b604482015290519081900360640190fd5b816001600160a01b031663704b6c02826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156106da57600080fd5b505af11580156106ee573d6000803e3d6000fd5b505050505050565b6000546001600160a01b0316331461074e576040805162461bcd60e51b815260206004820152601660248201527513db9b1e4811dbdd995c9b9bdc8818d85b8818d85b1b60521b604482015290519081900360640190fd5b816001600160a01b0316633659cfe6826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156106da57600080fd5b6001546001600160a01b031681565b6000546001600160a01b03163314610804576040805162461bcd60e51b815260206004820152601660248201527513db9b1e4811dbdd995c9b9bdc8818d85b8818d85b1b60521b604482015290519081900360640190fd5b816001600160a01b031663a2594d82826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156106da57600080fd5b6000546001600160a01b031633146108ab576040805162461bcd60e51b815260206004820152601660248201527513db9b1e4811dbdd995c9b9bdc8818d85b8818d85b1b60521b604482015290519081900360640190fd5b6001600160a01b0381166108fd576040805162461bcd60e51b815260206004820152601460248201527311dbdd995c9b9bdc881b5d5cdd081899481cd95d60621b604482015290519081900360640190fd5b600180546001600160a01b038381166001600160a01b03198316179283905560405191811692169082907f76563ad561b7036ae716b9b25cb521b21463240f104c97e12f25877f2235f33d90600090a35050565b6000806000836001600160a01b031660405180806303e1469160e61b8152506004019050600060405180830381855afa9150503d80600081146109b0576040519150601f19603f3d011682016040523d82523d6000602084013e6109b5565b606091505b50915091508161044b576040805162461bcd60e51b815260206004820152601760248201527f50726f78792061646d696e2063616c6c206661696c6564000000000000000000604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b039290921691909117905556fea264697066735822122065318ae85dd07a661b6d6ce6aa887b38e440ad77b84f3ab134b4ae27122295d464736f6c63430007060033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/packages/horizon/ignition/deployments/horizon-localhost-upgrade/artifacts/UpgradeRewardsManagerGovernor#RewardsManagerImplV2.json b/packages/horizon/ignition/deployments/horizon-localhost-upgrade/artifacts/UpgradeRewardsManagerGovernor#RewardsManagerImplV2.json new file mode 100644 index 000000000..00711cc86 --- /dev/null +++ b/packages/horizon/ignition/deployments/horizon-localhost-upgrade/artifacts/UpgradeRewardsManagerGovernor#RewardsManagerImplV2.json @@ -0,0 +1,910 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "RewardsManager", + "sourceName": "contracts/rewards/RewardsManager.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "nameHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "contractAddress", + "type": "address" + } + ], + "name": "ContractSynced", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "indexer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "allocationID", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "HorizonRewardsAssigned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldIssuanceAllocator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newIssuanceAllocator", + "type": "address" + } + ], + "name": "IssuanceAllocatorSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "param", + "type": "string" + } + ], + "name": "ParameterUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "reason", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldAddress", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "ReclaimAddressSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "indexer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "allocationID", + "type": "address" + } + ], + "name": "RewardsDenied", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "indexer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "allocationID", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "RewardsDeniedDueToEligibility", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "subgraphDeploymentID", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "sinceBlock", + "type": "uint256" + } + ], + "name": "RewardsDenylistUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRewardsEligibilityOracle", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRewardsEligibilityOracle", + "type": "address" + } + ], + "name": "RewardsEligibilityOracleSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "reason", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "indexer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "allocationID", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "subgraphDeploymentID", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "RewardsReclaimed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "controller", + "type": "address" + } + ], + "name": "SetController", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldSubgraphService", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newSubgraphService", + "type": "address" + } + ], + "name": "SubgraphServiceSet", + "type": "event" + }, + { + "inputs": [], + "name": "accRewardsPerSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "accRewardsPerSignalLastBlockUpdated", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IGraphProxy", + "name": "_proxy", + "type": "address" + } + ], + "name": "acceptProxy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IGraphProxy", + "name": "_proxy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "acceptProxyAndCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "beforeIssuanceAllocationChange", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokens", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_accRewardsPerAllocatedToken", + "type": "uint256" + } + ], + "name": "calcRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "controller", + "outputs": [ + { + "internalType": "contract IController", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "denylist", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "getAccRewardsForSubgraph", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "getAccRewardsPerAllocatedToken", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAccRewardsPerSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getNewRewardsPerSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_rewardsIssuer", + "type": "address" + }, + { + "internalType": "address", + "name": "_allocationID", + "type": "address" + } + ], + "name": "getRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getRewardsIssuancePerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_controller", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "isDenied", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "issuanceAllocator", + "outputs": [ + { + "internalType": "contract IIssuanceAllocationDistribution", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "issuancePerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minimumSubgraphSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "onSubgraphAllocationUpdate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "onSubgraphSignalUpdate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "reclaimAddresses", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "reason", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "allocationID", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "reclaimRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rewardsEligibilityOracle", + "outputs": [ + { + "internalType": "contract IRewardsEligibility", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_controller", + "type": "address" + } + ], + "name": "setController", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + }, + { + "internalType": "bool", + "name": "_deny", + "type": "bool" + } + ], + "name": "setDenied", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newIssuanceAllocator", + "type": "address" + } + ], + "name": "setIssuanceAllocator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_issuancePerBlock", + "type": "uint256" + } + ], + "name": "setIssuancePerBlock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_minimumSubgraphSignal", + "type": "uint256" + } + ], + "name": "setMinimumSubgraphSignal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "reason", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "setReclaimAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newRewardsEligibilityOracle", + "type": "address" + } + ], + "name": "setRewardsEligibilityOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_subgraphAvailabilityOracle", + "type": "address" + } + ], + "name": "setSubgraphAvailabilityOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_subgraphService", + "type": "address" + } + ], + "name": "setSubgraphService", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "subgraphAvailabilityOracle", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "subgraphService", + "outputs": [ + { + "internalType": "contract IRewardsIssuer", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "subgraphs", + "outputs": [ + { + "internalType": "uint256", + "name": "accRewardsForSubgraph", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accRewardsForSubgraphSnapshot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accRewardsPerSignalSnapshot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accRewardsPerAllocatedToken", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "syncAllContracts", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_allocationID", + "type": "address" + } + ], + "name": "takeRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "updateAccRewardsPerSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6101606040527fe6876326c1291dfcbbd3864a6816d698cd591defc7aa2153d7f9c4c04016c89f6080527fc713c3df6d14cdf946460395d09af88993ee2b948b1a808161494e32c5f6706360a0527f966f1e8d8d8014e05f6ec4a57138da9be1f7c5a7f802928a18072f7c5318076160c0527f1df41cd916959d1163dc8f0671a666ea8a3e434c13e40faef527133b5d16703460e0527f45fc200c7e4544e457d3c5709bfe0d520442c30bbcbdaede89e8d4a4bbc19247610100527fd362cac9cb75c10d67bcc0b7eeb0b1ef48bb5420b556c092d4fd7f758816fcf0610120527f39605a6c26a173774ca666c67ef70cf491880e5d3d6d0ca66ec0a31034f15ea36101405234801561011057600080fd5b5060805160a05160c05160e0516101005161012051610140516128646101736000398061136952508061134052508061131752806120d35250806112ee5280611c7c5250806112c552508061129c5250806112735280611ac052506128646000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c8063931c0ac11161013b578063c8a5f81e116100b8578063e820e2841161007c578063e820e2841461049c578063eeac3e0e146104af578063f77c4791146104c2578063fc763657146104ca578063fcb5fa86146104dd57610248565b8063c8a5f81e1461045e578063d6866ea514610471578063db75092614610479578063e242cf1e1461048c578063e284f8481461049457610248565b8063a8cc0ee2116100ff578063a8cc0ee21461042b578063b951acd714610433578063c3e15de11461043b578063c4d66de814610443578063c7d1117d1461045657610248565b8063931c0ac1146103d757806393a90a1e146103ea5780639825545a146103fd5780639ce7abe514610405578063a2594d821461041857610248565b8063365b7f91116101c95780636c080f181161018d5780636c080f1814610380578063702a280e14610388578063779bcb9b146103a95780639006ce8b146103bc57806392eefe9b146103c457610248565b8063365b7f911461031c5780633df8d6821461032f5780634986594f146103375780634bbfc1c51461035a5780635c6cbd591461036d57610248565b80631324a506116102105780631324a506146102bb57806316a84ab2146102ce5780631ab6bff1146102ee5780631d1c2fec14610301578063260582491461031457610248565b806301ffc9a71461024d57806305bb8c6b146102765780630903c0941461028b5780630beff424146102a05780631156bdc1146102a8575b600080fd5b61026061025b366004612379565b6104f0565b60405161026d91906124b9565b60405180910390f35b61027e610544565b60405161026d919061248c565b61029e6102993660046121d6565b610553565b005b61027e6105af565b61029e6102b63660046122bf565b6105be565b61029e6102c9366004612355565b6105d2565b6102e16102dc3660046122bf565b610613565b60405161026d91906124c4565b6102e16102fc3660046122fb565b610625565b6102e161030f3660046122bf565b6106bc565b61027e6106f3565b61029e61032a3660046121d6565b610702565b61029e61081f565b61034a6103453660046122bf565b610827565b60405161026d94939291906127cf565b61029e6103683660046122bf565b61084e565b6102e161037b3660046122bf565b61094a565b6102e1610a52565b61039b6103963660046122bf565b610a58565b60405161026d9291906127c1565b6102e16103b736600461220e565b610bcc565b6102e1610cf2565b61029e6103d23660046121d6565b610cf8565b61029e6103e53660046121d6565b610d09565b61029e6103f83660046121d6565b610e2f565b6102e1610e89565b61029e6104133660046123a1565b610f2f565b61029e6104263660046121d6565b611085565b6102e16111a0565b6102e16111b6565b61027e6111bc565b61029e6104513660046121d6565b6111cb565b6102e1611237565b6102e161046c36600461246b565b61124f565b61029e61126e565b6102e16104873660046121d6565b61138f565b6102e16114e7565b6102e16114ed565b6102606104aa3660046122bf565b611605565b6102e16104bd3660046122bf565b611619565b61027e61164b565b61029e6104d83660046122d7565b61165a565b61027e6104eb3660046122bf565b611701565b60006001600160e01b031982166301ffc9a760e01b148061052157506001600160e01b0319821663aee4dc4360e01b145b8061053c57506001600160e01b0319821663022ee85560e51b145b90505b919050565b600f546001600160a01b031681565b61055b61171c565b600f80546001600160a01b0319166001600160a01b0383161790556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a4906124e2565b60405180910390a150565b6016546001600160a01b031681565b6105c661171c565b6105cf816117f0565b50565b600f546001600160a01b031633146106055760405162461bcd60e51b81526004016105fc90612519565b60405180910390fd5b61060f828261182c565b5050565b60116020526000908152604090205481565b60155460009033906001600160a01b031681146106545760405162461bcd60e51b81526004016105fc906126d2565b600080600061066384896118ef565b9250925092506106ad8984848b858c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119bf92505050565b9450505050505b949350505050565b60006106c6611237565b5060008281526010602052604090206106de8361094a565b808255600d5460029092019190915592915050565b6015546001600160a01b031681565b61070a61171c565b6016546001600160a01b038281169116146105cf576001600160a01b038116156107cd576040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790610761906366e305fd60e01b906004016124cd565b60206040518083038186803b15801561077957600080fd5b505afa15801561078d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b19190612246565b6107cd5760405162461bcd60e51b81526004016105fc90612597565b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f6a6254f061a8ff05f7d86ad3625787bb913090d9758a7495a002a44813d6e44890600090a35050565b6105cf611237565b60106020526000908152604090208054600182015460028301546003909301549192909184565b600f546001600160a01b03163314806108fb575060008054906101000a90046001600160a01b03166001600160a01b0316634fc07d756040518163ffffffff1660e01b815260040160206040518083038186803b1580156108ae57600080fd5b505afa1580156108c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e691906121f2565b6001600160a01b0316336001600160a01b0316145b6109175760405162461bcd60e51b81526004016105fc90612737565b60128190556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a490612568565b600081815260106020526040812061096183611605565b1561096e5754905061053f565b6000610978611ab9565b6001600160a01b03166346e855da856040518263ffffffff1660e01b81526004016109a391906124c4565b60206040518083038186803b1580156109bb57600080fd5b505afa1580156109cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f39190612453565b90506000601254821015610a08576000610a3a565b610a3a670de0b6b3a7640000610a3484610a2e8760020154610a286111a0565b90611ae4565b90611b41565b90611b9a565b8354909150610a499082611c01565b95945050505050565b60145481565b6000818152601060205260408120819081610a728561094a565b90506000610a84828460010154611c5b565b90506000806040518060400160405280610a9c611c75565b6001600160a01b03908116825260155416602090910152905060005b6002811015610b7b576000828260028110610acf57fe5b60200201516001600160a01b031614610b7357818160028110610aee57fe5b60200201516001600160a01b031663e2e1e8e98a6040518263ffffffff1660e01b8152600401610b1e91906124c4565b60206040518083038186803b158015610b3657600080fd5b505afa158015610b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e9190612453565b830192505b600101610ab8565b5081610b9257600084965096505050505050610bc7565b6000610baa83610a3486670de0b6b3a7640000611b41565b6003870154909150610bbc9082611c01565b975093955050505050505b915091565b6000610bd6611c75565b6001600160a01b0316836001600160a01b03161480610c0257506015546001600160a01b038481169116145b610c1e5760405162461bcd60e51b81526004016105fc906126d2565b6000806000806000876001600160a01b03166355c85269886040518263ffffffff1660e01b8152600401610c52919061248c565b60c06040518083038186803b158015610c6a57600080fd5b505afa158015610c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca29190612262565b955095509550955050945084610cc057600095505050505050610cec565b6000610ccb85610a58565b509050610ce3610cdc858584611ca0565b8390611c01565b96505050505050505b92915050565b600e5481565b610d00611cc5565b6105cf81611d24565b610d1161171c565b6017546001600160a01b038281169116146105cf57610d2e611237565b506001600160a01b03811615610ddd576040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790610d7190631e768dff60e21b906004016124cd565b60206040518083038186803b158015610d8957600080fd5b505afa158015610d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc19190612246565b610ddd5760405162461bcd60e51b81526004016105fc90612669565b601780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f01674b69434be290e7c6acef73422bc6cf74884b5228c9e6cab93117eae2cdcb90600090a35050565b610e3761171c565b601580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f97befc0afcf2bace352f077aea9873c9552fc2e5ab26874f356006fdf9da4ede90600090a35050565b6017546000906001600160a01b0316610ea457601454610f29565b601754604051630c19f2d360e21b81526001600160a01b0390911690633067cb4c90610ed490309060040161248c565b60806040518083038186803b158015610eec57600080fd5b505afa158015610f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2491906123f4565b604001515b90505b90565b82806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f6b57600080fd5b505af1158015610f7f573d6000803e3d6000fd5b505050506040513d6020811015610f9557600080fd5b50516001600160a01b03163314610ff3576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206d757374206265207468652070726f78792061646d696e0000604482015290519081900360640190fd5b60405163623faf6160e01b8152602060048201908152602482018490526001600160a01b0386169163623faf619186918691908190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561106757600080fd5b505af115801561107b573d6000803e3d6000fd5b5050505050505050565b80806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156110c157600080fd5b505af11580156110d5573d6000803e3d6000fd5b505050506040513d60208110156110eb57600080fd5b50516001600160a01b03163314611149576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206d757374206265207468652070726f78792061646d696e0000604482015290519081900360640190fd5b816001600160a01b03166359fc20bb6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561118457600080fd5b505af1158015611198573d6000803e3d6000fd5b505050505050565b6000610f296111ad6114ed565b600d5490611c01565b60125481565b6017546001600160a01b031681565b6111d3611dcc565b6001600160a01b0316336001600160a01b03161461122e576040805162461bcd60e51b815260206004820152601360248201527227b7363c9034b6b83632b6b2b73a30ba34b7b760691b604482015290519081900360640190fd5b6105cf81610d00565b60006112416111a0565b600d81905543600e55905090565b6000611267670de0b6b3a7640000610a348486611b41565b9392505050565b6112977f0000000000000000000000000000000000000000000000000000000000000000611df1565b6112c07f0000000000000000000000000000000000000000000000000000000000000000611df1565b6112e97f0000000000000000000000000000000000000000000000000000000000000000611df1565b6113127f0000000000000000000000000000000000000000000000000000000000000000611df1565b61133b7f0000000000000000000000000000000000000000000000000000000000000000611df1565b6113647f0000000000000000000000000000000000000000000000000000000000000000611df1565b61138d7f0000000000000000000000000000000000000000000000000000000000000000611df1565b565b60003361139a611c75565b6001600160a01b0316816001600160a01b031614806113c657506015546001600160a01b038281169116145b6113e25760405162461bcd60e51b81526004016105fc90612700565b60008060006113f184876118ef565b925092509250826000141561140d57600094505050505061053f565b61141983838884611ef2565b1561142b57600094505050505061053f565b6114336120cc565b6001600160a01b03166340c10f1985856040518363ffffffff1660e01b81526004016114609291906124a0565b600060405180830381600087803b15801561147a57600080fd5b505af115801561148e573d6000803e3d6000fd5b50505050856001600160a01b0316826001600160a01b03167fa111914d7f2ea8beca61d12f1a1f38c5533de5f1823c3936422df4404ac2ec68856040516114d591906124c4565b60405180910390a35090949350505050565b600d5481565b600080611505600e5443611ae490919063ffffffff16565b905080611516576000915050610f2c565b6000611520610e89565b90508061153257600092505050610f2c565b600061153c6120cc565b90506000816001600160a01b03166370a08231611557611ab9565b6040518263ffffffff1660e01b8152600401611573919061248c565b60206040518083038186803b15801561158b57600080fd5b505afa15801561159f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c39190612453565b9050806115d7576000945050505050610f2c565b60006115e38486611b41565b90506115fb82610a3483670de0b6b3a7640000611b41565b9550505050505090565b600090815260116020526040902054151590565b6000818152601060205260408120818061163285610a58565b6003850182905560019094019390935550909392505050565b6000546001600160a01b031681565b61166261171c565b8161167f5760405162461bcd60e51b81526004016105fc906125f4565b6000828152601860205260409020546001600160a01b0390811690821681146116fc5760008381526018602052604080822080546001600160a01b0319166001600160a01b03868116918217909255915191929084169186917f125079be6e3f6efadf63498088ca509edc3835fb416ba13d25649bd1d47d2fa991a45b505050565b6018602052600090815260409020546001600160a01b031681565b60008054906101000a90046001600160a01b03166001600160a01b0316634fc07d756040518163ffffffff1660e01b815260040160206040518083038186803b15801561176857600080fd5b505afa15801561177c573d6000803e3d6000fd5b505050506040513d602081101561179257600080fd5b50516001600160a01b0316331461138d576040805162461bcd60e51b815260206004820152601860248201527f4f6e6c7920436f6e74726f6c6c657220676f7665726e6f720000000000000000604482015290519081900360640190fd5b6117f8611237565b5060148190556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a49061263f565b611835826106bc565b5080156118a25760008281526011602052604090205461189d57600082815260116020526040908190204390819055905183917fe016102b339c3889f4967b491f3381f2c352c8fe3d4f880007807d45b124065a9161189491906124c4565b60405180910390a25b61060f565b6000828152601160205260408082208290555183917fe016102b339c3889f4967b491f3381f2c352c8fe3d4f880007807d45b124065a916118e391906124c4565b60405180910390a25050565b60008060008060008060008060008a6001600160a01b03166355c852698b6040518263ffffffff1660e01b8152600401611929919061248c565b60c06040518083038186803b15801561194157600080fd5b505afa158015611955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119799190612262565b955095509550955095509550600061199085611619565b90508661199e5760006119ac565b6119ac610cdc858584611ca0565b9c959b5093995093975050505050505050565b6000868152601860205260408120546001600160a01b031686158015906119ee57506001600160a01b03811615155b15611aae576119fb6120cc565b6001600160a01b03166340c10f1982896040518363ffffffff1660e01b8152600401611a289291906124a0565b600060405180830381600087803b158015611a4257600080fd5b505af1158015611a56573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b0316897fc65eb6cf0937b3705ec8a3ab7f01707d806f4e42f65a2f06b1143fc30862df5e8a8888604051611aa29392919061275f565b60405180910390a48691505b509695505050505050565b6000610f297f00000000000000000000000000000000000000000000000000000000000000006120f3565b600082821115611b3b576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082611b5057506000610cec565b82820282848281611b5d57fe5b04146112675760405162461bcd60e51b815260040180806020018281038252602181526020018061280e6021913960400191505060405180910390fd5b6000808211611bf0576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381611bf957fe5b049392505050565b600082820183811015611267576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818311611c6b576000611267565b6112678383611ae4565b6000610f297f00000000000000000000000000000000000000000000000000000000000000006120f3565b600080611cad8385611ae4565b9050610a49670de0b6b3a7640000610a348388611b41565b6000546001600160a01b0316331461138d576040805162461bcd60e51b815260206004820152601960248201527f43616c6c6572206d75737420626520436f6e74726f6c6c657200000000000000604482015290519081900360640190fd5b6001600160a01b038116611d78576040805162461bcd60e51b815260206004820152601660248201527510dbdb9d1c9bdb1b195c881b5d5cdd081899481cd95d60521b604482015290519081900360640190fd5b600080546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f4ff638452bbf33c012645d18ae6f05515ff5f2d1dfb0cece8cbf018c60903f709181900360200190a150565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6000805460408051637bb20d2f60e11b81526004810185905290516001600160a01b039092169163f7641a5e91602480820192602092909190829003018186803b158015611e3e57600080fd5b505afa158015611e52573d6000803e3d6000fd5b505050506040513d6020811015611e6857600080fd5b50516000838152600160205260409020549091506001600160a01b0380831691161461060f5760008281526001602090815260409182902080546001600160a01b0319166001600160a01b0385169081179091558251908152915184927fd0e7a942b1fc38c411c4f53d153ba14fd24542a6a35ebacd9b6afca1a154e20692908290030190a25050565b6000611efd82611605565b15611f9057826001600160a01b0316846001600160a01b03167f9b1323a10f3955b1c9c054ffbda78edfdf49998aaf37f61d9f84776b59ac804360405160405180910390a3611f7f7fc0f4a5620db2f97e7c3a4ba7058497eaa0d497538b2666d66bd6932f25345c8886868686604051806020016040528060008152506119bf565b15611f8c575060016106b4565b5060015b6016546001600160a01b03161580159061202757506016546040516366e305fd60e01b81526001600160a01b03909116906366e305fd90611fd590879060040161248c565b60206040518083038186803b158015611fed57600080fd5b505afa158015612001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120259190612246565b155b156106b457826001600160a01b0316846001600160a01b03167fb012e09970916d172f2899bd374aae8d902671bf721e50331e2d57775f90e7478760405161206f91906124c4565b60405180910390a36120b47ffcadc72cad493def76767524554db9da829b6aca9457c0187f63000dba3c943986868686604051806020016040528060008152506119bf565b156120c1575060016106b4565b506001949350505050565b6000610f297f00000000000000000000000000000000000000000000000000000000000000005b6000818152600160205260408120546001600160a01b03168061053c5760005460408051637bb20d2f60e11b81526004810186905290516001600160a01b039092169163f7641a5e91602480820192602092909190829003018186803b15801561215c57600080fd5b505afa158015612170573d6000803e3d6000fd5b505050506040513d602081101561218657600080fd5b50519392505050565b60008083601f8401126121a0578182fd5b50813567ffffffffffffffff8111156121b7578182fd5b6020830191508360208285010111156121cf57600080fd5b9250929050565b6000602082840312156121e7578081fd5b8135611267816127ea565b600060208284031215612203578081fd5b8151611267816127ea565b60008060408385031215612220578081fd5b823561222b816127ea565b9150602083013561223b816127ea565b809150509250929050565b600060208284031215612257578081fd5b8151611267816127ff565b60008060008060008060c0878903121561227a578182fd5b8651612285816127ff565b6020880151909650612296816127ea565b6040880151606089015160808a015160a0909a0151989b929a5090989097909650945092505050565b6000602082840312156122d0578081fd5b5035919050565b600080604083850312156122e9578182fd5b82359150602083013561223b816127ea565b60008060008060608587031215612310578384fd5b843593506020850135612322816127ea565b9250604085013567ffffffffffffffff81111561233d578283fd5b6123498782880161218f565b95989497509550505050565b60008060408385031215612367578182fd5b82359150602083013561223b816127ff565b60006020828403121561238a578081fd5b81356001600160e01b031981168114611267578182fd5b6000806000604084860312156123b5578283fd5b83356123c0816127ea565b9250602084013567ffffffffffffffff8111156123db578283fd5b6123e78682870161218f565b9497909650939450505050565b600060808284031215612405578081fd5b6040516080810181811067ffffffffffffffff8211171561242257fe5b8060405250825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612464578081fd5b5051919050565b6000806040838503121561247d578182fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b6001600160e01b031991909116815260200190565b6020808252601a908201527f7375626772617068417661696c6162696c6974794f7261636c65000000000000604082015260600190565b6020808252602f908201527f43616c6c6572206d75737420626520746865207375626772617068206176616960408201526e6c6162696c697479206f7261636c6560881b606082015260800190565b6020808252601590820152741b5a5b9a5b5d5b54dd5899dc985c1a14da59db985b605a1b604082015260600190565b60208082526037908201527f436f6e747261637420646f6573206e6f7420737570706f72742049526577617260408201527f6473456c69676962696c69747920696e74657266616365000000000000000000606082015260800190565b6020808252602b908201527f43616e6e6f7420736574207265636c61696d206164647265737320666f72202860408201526a627974657333322830292960a81b606082015260800190565b60208082526010908201526f69737375616e6365506572426c6f636b60801b604082015260600190565b60208082526043908201527f436f6e747261637420646f6573206e6f7420737570706f72742049497373756160408201527f6e6365416c6c6f636174696f6e446973747269627574696f6e20696e7465726660608201526261636560e81b608082015260a00190565b6020808252601490820152732737ba1030903932bbb0b932399034b9b9bab2b960611b604082015260600190565b6020808252601f908201527f43616c6c6572206d757374206265206120726577617264732069737375657200604082015260600190565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b600084825260208481840152606060408401528351806060850152825b818110156127985785810183015185820160800152820161277c565b818111156127a95783608083870101525b50601f01601f19169290920160800195945050505050565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b6001600160a01b03811681146105cf57600080fd5b80151581146105cf57600080fdfe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212207419d71079463c2ab6f09756cef155b2ab7c65e9f3f2a7debd98b5b547540fba64736f6c63430007060033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102485760003560e01c8063931c0ac11161013b578063c8a5f81e116100b8578063e820e2841161007c578063e820e2841461049c578063eeac3e0e146104af578063f77c4791146104c2578063fc763657146104ca578063fcb5fa86146104dd57610248565b8063c8a5f81e1461045e578063d6866ea514610471578063db75092614610479578063e242cf1e1461048c578063e284f8481461049457610248565b8063a8cc0ee2116100ff578063a8cc0ee21461042b578063b951acd714610433578063c3e15de11461043b578063c4d66de814610443578063c7d1117d1461045657610248565b8063931c0ac1146103d757806393a90a1e146103ea5780639825545a146103fd5780639ce7abe514610405578063a2594d821461041857610248565b8063365b7f91116101c95780636c080f181161018d5780636c080f1814610380578063702a280e14610388578063779bcb9b146103a95780639006ce8b146103bc57806392eefe9b146103c457610248565b8063365b7f911461031c5780633df8d6821461032f5780634986594f146103375780634bbfc1c51461035a5780635c6cbd591461036d57610248565b80631324a506116102105780631324a506146102bb57806316a84ab2146102ce5780631ab6bff1146102ee5780631d1c2fec14610301578063260582491461031457610248565b806301ffc9a71461024d57806305bb8c6b146102765780630903c0941461028b5780630beff424146102a05780631156bdc1146102a8575b600080fd5b61026061025b366004612379565b6104f0565b60405161026d91906124b9565b60405180910390f35b61027e610544565b60405161026d919061248c565b61029e6102993660046121d6565b610553565b005b61027e6105af565b61029e6102b63660046122bf565b6105be565b61029e6102c9366004612355565b6105d2565b6102e16102dc3660046122bf565b610613565b60405161026d91906124c4565b6102e16102fc3660046122fb565b610625565b6102e161030f3660046122bf565b6106bc565b61027e6106f3565b61029e61032a3660046121d6565b610702565b61029e61081f565b61034a6103453660046122bf565b610827565b60405161026d94939291906127cf565b61029e6103683660046122bf565b61084e565b6102e161037b3660046122bf565b61094a565b6102e1610a52565b61039b6103963660046122bf565b610a58565b60405161026d9291906127c1565b6102e16103b736600461220e565b610bcc565b6102e1610cf2565b61029e6103d23660046121d6565b610cf8565b61029e6103e53660046121d6565b610d09565b61029e6103f83660046121d6565b610e2f565b6102e1610e89565b61029e6104133660046123a1565b610f2f565b61029e6104263660046121d6565b611085565b6102e16111a0565b6102e16111b6565b61027e6111bc565b61029e6104513660046121d6565b6111cb565b6102e1611237565b6102e161046c36600461246b565b61124f565b61029e61126e565b6102e16104873660046121d6565b61138f565b6102e16114e7565b6102e16114ed565b6102606104aa3660046122bf565b611605565b6102e16104bd3660046122bf565b611619565b61027e61164b565b61029e6104d83660046122d7565b61165a565b61027e6104eb3660046122bf565b611701565b60006001600160e01b031982166301ffc9a760e01b148061052157506001600160e01b0319821663aee4dc4360e01b145b8061053c57506001600160e01b0319821663022ee85560e51b145b90505b919050565b600f546001600160a01b031681565b61055b61171c565b600f80546001600160a01b0319166001600160a01b0383161790556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a4906124e2565b60405180910390a150565b6016546001600160a01b031681565b6105c661171c565b6105cf816117f0565b50565b600f546001600160a01b031633146106055760405162461bcd60e51b81526004016105fc90612519565b60405180910390fd5b61060f828261182c565b5050565b60116020526000908152604090205481565b60155460009033906001600160a01b031681146106545760405162461bcd60e51b81526004016105fc906126d2565b600080600061066384896118ef565b9250925092506106ad8984848b858c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119bf92505050565b9450505050505b949350505050565b60006106c6611237565b5060008281526010602052604090206106de8361094a565b808255600d5460029092019190915592915050565b6015546001600160a01b031681565b61070a61171c565b6016546001600160a01b038281169116146105cf576001600160a01b038116156107cd576040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790610761906366e305fd60e01b906004016124cd565b60206040518083038186803b15801561077957600080fd5b505afa15801561078d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b19190612246565b6107cd5760405162461bcd60e51b81526004016105fc90612597565b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f6a6254f061a8ff05f7d86ad3625787bb913090d9758a7495a002a44813d6e44890600090a35050565b6105cf611237565b60106020526000908152604090208054600182015460028301546003909301549192909184565b600f546001600160a01b03163314806108fb575060008054906101000a90046001600160a01b03166001600160a01b0316634fc07d756040518163ffffffff1660e01b815260040160206040518083038186803b1580156108ae57600080fd5b505afa1580156108c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e691906121f2565b6001600160a01b0316336001600160a01b0316145b6109175760405162461bcd60e51b81526004016105fc90612737565b60128190556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a490612568565b600081815260106020526040812061096183611605565b1561096e5754905061053f565b6000610978611ab9565b6001600160a01b03166346e855da856040518263ffffffff1660e01b81526004016109a391906124c4565b60206040518083038186803b1580156109bb57600080fd5b505afa1580156109cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f39190612453565b90506000601254821015610a08576000610a3a565b610a3a670de0b6b3a7640000610a3484610a2e8760020154610a286111a0565b90611ae4565b90611b41565b90611b9a565b8354909150610a499082611c01565b95945050505050565b60145481565b6000818152601060205260408120819081610a728561094a565b90506000610a84828460010154611c5b565b90506000806040518060400160405280610a9c611c75565b6001600160a01b03908116825260155416602090910152905060005b6002811015610b7b576000828260028110610acf57fe5b60200201516001600160a01b031614610b7357818160028110610aee57fe5b60200201516001600160a01b031663e2e1e8e98a6040518263ffffffff1660e01b8152600401610b1e91906124c4565b60206040518083038186803b158015610b3657600080fd5b505afa158015610b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e9190612453565b830192505b600101610ab8565b5081610b9257600084965096505050505050610bc7565b6000610baa83610a3486670de0b6b3a7640000611b41565b6003870154909150610bbc9082611c01565b975093955050505050505b915091565b6000610bd6611c75565b6001600160a01b0316836001600160a01b03161480610c0257506015546001600160a01b038481169116145b610c1e5760405162461bcd60e51b81526004016105fc906126d2565b6000806000806000876001600160a01b03166355c85269886040518263ffffffff1660e01b8152600401610c52919061248c565b60c06040518083038186803b158015610c6a57600080fd5b505afa158015610c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca29190612262565b955095509550955050945084610cc057600095505050505050610cec565b6000610ccb85610a58565b509050610ce3610cdc858584611ca0565b8390611c01565b96505050505050505b92915050565b600e5481565b610d00611cc5565b6105cf81611d24565b610d1161171c565b6017546001600160a01b038281169116146105cf57610d2e611237565b506001600160a01b03811615610ddd576040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790610d7190631e768dff60e21b906004016124cd565b60206040518083038186803b158015610d8957600080fd5b505afa158015610d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc19190612246565b610ddd5760405162461bcd60e51b81526004016105fc90612669565b601780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f01674b69434be290e7c6acef73422bc6cf74884b5228c9e6cab93117eae2cdcb90600090a35050565b610e3761171c565b601580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f97befc0afcf2bace352f077aea9873c9552fc2e5ab26874f356006fdf9da4ede90600090a35050565b6017546000906001600160a01b0316610ea457601454610f29565b601754604051630c19f2d360e21b81526001600160a01b0390911690633067cb4c90610ed490309060040161248c565b60806040518083038186803b158015610eec57600080fd5b505afa158015610f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2491906123f4565b604001515b90505b90565b82806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f6b57600080fd5b505af1158015610f7f573d6000803e3d6000fd5b505050506040513d6020811015610f9557600080fd5b50516001600160a01b03163314610ff3576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206d757374206265207468652070726f78792061646d696e0000604482015290519081900360640190fd5b60405163623faf6160e01b8152602060048201908152602482018490526001600160a01b0386169163623faf619186918691908190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561106757600080fd5b505af115801561107b573d6000803e3d6000fd5b5050505050505050565b80806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156110c157600080fd5b505af11580156110d5573d6000803e3d6000fd5b505050506040513d60208110156110eb57600080fd5b50516001600160a01b03163314611149576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206d757374206265207468652070726f78792061646d696e0000604482015290519081900360640190fd5b816001600160a01b03166359fc20bb6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561118457600080fd5b505af1158015611198573d6000803e3d6000fd5b505050505050565b6000610f296111ad6114ed565b600d5490611c01565b60125481565b6017546001600160a01b031681565b6111d3611dcc565b6001600160a01b0316336001600160a01b03161461122e576040805162461bcd60e51b815260206004820152601360248201527227b7363c9034b6b83632b6b2b73a30ba34b7b760691b604482015290519081900360640190fd5b6105cf81610d00565b60006112416111a0565b600d81905543600e55905090565b6000611267670de0b6b3a7640000610a348486611b41565b9392505050565b6112977f0000000000000000000000000000000000000000000000000000000000000000611df1565b6112c07f0000000000000000000000000000000000000000000000000000000000000000611df1565b6112e97f0000000000000000000000000000000000000000000000000000000000000000611df1565b6113127f0000000000000000000000000000000000000000000000000000000000000000611df1565b61133b7f0000000000000000000000000000000000000000000000000000000000000000611df1565b6113647f0000000000000000000000000000000000000000000000000000000000000000611df1565b61138d7f0000000000000000000000000000000000000000000000000000000000000000611df1565b565b60003361139a611c75565b6001600160a01b0316816001600160a01b031614806113c657506015546001600160a01b038281169116145b6113e25760405162461bcd60e51b81526004016105fc90612700565b60008060006113f184876118ef565b925092509250826000141561140d57600094505050505061053f565b61141983838884611ef2565b1561142b57600094505050505061053f565b6114336120cc565b6001600160a01b03166340c10f1985856040518363ffffffff1660e01b81526004016114609291906124a0565b600060405180830381600087803b15801561147a57600080fd5b505af115801561148e573d6000803e3d6000fd5b50505050856001600160a01b0316826001600160a01b03167fa111914d7f2ea8beca61d12f1a1f38c5533de5f1823c3936422df4404ac2ec68856040516114d591906124c4565b60405180910390a35090949350505050565b600d5481565b600080611505600e5443611ae490919063ffffffff16565b905080611516576000915050610f2c565b6000611520610e89565b90508061153257600092505050610f2c565b600061153c6120cc565b90506000816001600160a01b03166370a08231611557611ab9565b6040518263ffffffff1660e01b8152600401611573919061248c565b60206040518083038186803b15801561158b57600080fd5b505afa15801561159f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c39190612453565b9050806115d7576000945050505050610f2c565b60006115e38486611b41565b90506115fb82610a3483670de0b6b3a7640000611b41565b9550505050505090565b600090815260116020526040902054151590565b6000818152601060205260408120818061163285610a58565b6003850182905560019094019390935550909392505050565b6000546001600160a01b031681565b61166261171c565b8161167f5760405162461bcd60e51b81526004016105fc906125f4565b6000828152601860205260409020546001600160a01b0390811690821681146116fc5760008381526018602052604080822080546001600160a01b0319166001600160a01b03868116918217909255915191929084169186917f125079be6e3f6efadf63498088ca509edc3835fb416ba13d25649bd1d47d2fa991a45b505050565b6018602052600090815260409020546001600160a01b031681565b60008054906101000a90046001600160a01b03166001600160a01b0316634fc07d756040518163ffffffff1660e01b815260040160206040518083038186803b15801561176857600080fd5b505afa15801561177c573d6000803e3d6000fd5b505050506040513d602081101561179257600080fd5b50516001600160a01b0316331461138d576040805162461bcd60e51b815260206004820152601860248201527f4f6e6c7920436f6e74726f6c6c657220676f7665726e6f720000000000000000604482015290519081900360640190fd5b6117f8611237565b5060148190556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a49061263f565b611835826106bc565b5080156118a25760008281526011602052604090205461189d57600082815260116020526040908190204390819055905183917fe016102b339c3889f4967b491f3381f2c352c8fe3d4f880007807d45b124065a9161189491906124c4565b60405180910390a25b61060f565b6000828152601160205260408082208290555183917fe016102b339c3889f4967b491f3381f2c352c8fe3d4f880007807d45b124065a916118e391906124c4565b60405180910390a25050565b60008060008060008060008060008a6001600160a01b03166355c852698b6040518263ffffffff1660e01b8152600401611929919061248c565b60c06040518083038186803b15801561194157600080fd5b505afa158015611955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119799190612262565b955095509550955095509550600061199085611619565b90508661199e5760006119ac565b6119ac610cdc858584611ca0565b9c959b5093995093975050505050505050565b6000868152601860205260408120546001600160a01b031686158015906119ee57506001600160a01b03811615155b15611aae576119fb6120cc565b6001600160a01b03166340c10f1982896040518363ffffffff1660e01b8152600401611a289291906124a0565b600060405180830381600087803b158015611a4257600080fd5b505af1158015611a56573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b0316897fc65eb6cf0937b3705ec8a3ab7f01707d806f4e42f65a2f06b1143fc30862df5e8a8888604051611aa29392919061275f565b60405180910390a48691505b509695505050505050565b6000610f297f00000000000000000000000000000000000000000000000000000000000000006120f3565b600082821115611b3b576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082611b5057506000610cec565b82820282848281611b5d57fe5b04146112675760405162461bcd60e51b815260040180806020018281038252602181526020018061280e6021913960400191505060405180910390fd5b6000808211611bf0576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381611bf957fe5b049392505050565b600082820183811015611267576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818311611c6b576000611267565b6112678383611ae4565b6000610f297f00000000000000000000000000000000000000000000000000000000000000006120f3565b600080611cad8385611ae4565b9050610a49670de0b6b3a7640000610a348388611b41565b6000546001600160a01b0316331461138d576040805162461bcd60e51b815260206004820152601960248201527f43616c6c6572206d75737420626520436f6e74726f6c6c657200000000000000604482015290519081900360640190fd5b6001600160a01b038116611d78576040805162461bcd60e51b815260206004820152601660248201527510dbdb9d1c9bdb1b195c881b5d5cdd081899481cd95d60521b604482015290519081900360640190fd5b600080546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f4ff638452bbf33c012645d18ae6f05515ff5f2d1dfb0cece8cbf018c60903f709181900360200190a150565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6000805460408051637bb20d2f60e11b81526004810185905290516001600160a01b039092169163f7641a5e91602480820192602092909190829003018186803b158015611e3e57600080fd5b505afa158015611e52573d6000803e3d6000fd5b505050506040513d6020811015611e6857600080fd5b50516000838152600160205260409020549091506001600160a01b0380831691161461060f5760008281526001602090815260409182902080546001600160a01b0319166001600160a01b0385169081179091558251908152915184927fd0e7a942b1fc38c411c4f53d153ba14fd24542a6a35ebacd9b6afca1a154e20692908290030190a25050565b6000611efd82611605565b15611f9057826001600160a01b0316846001600160a01b03167f9b1323a10f3955b1c9c054ffbda78edfdf49998aaf37f61d9f84776b59ac804360405160405180910390a3611f7f7fc0f4a5620db2f97e7c3a4ba7058497eaa0d497538b2666d66bd6932f25345c8886868686604051806020016040528060008152506119bf565b15611f8c575060016106b4565b5060015b6016546001600160a01b03161580159061202757506016546040516366e305fd60e01b81526001600160a01b03909116906366e305fd90611fd590879060040161248c565b60206040518083038186803b158015611fed57600080fd5b505afa158015612001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120259190612246565b155b156106b457826001600160a01b0316846001600160a01b03167fb012e09970916d172f2899bd374aae8d902671bf721e50331e2d57775f90e7478760405161206f91906124c4565b60405180910390a36120b47ffcadc72cad493def76767524554db9da829b6aca9457c0187f63000dba3c943986868686604051806020016040528060008152506119bf565b156120c1575060016106b4565b506001949350505050565b6000610f297f00000000000000000000000000000000000000000000000000000000000000005b6000818152600160205260408120546001600160a01b03168061053c5760005460408051637bb20d2f60e11b81526004810186905290516001600160a01b039092169163f7641a5e91602480820192602092909190829003018186803b15801561215c57600080fd5b505afa158015612170573d6000803e3d6000fd5b505050506040513d602081101561218657600080fd5b50519392505050565b60008083601f8401126121a0578182fd5b50813567ffffffffffffffff8111156121b7578182fd5b6020830191508360208285010111156121cf57600080fd5b9250929050565b6000602082840312156121e7578081fd5b8135611267816127ea565b600060208284031215612203578081fd5b8151611267816127ea565b60008060408385031215612220578081fd5b823561222b816127ea565b9150602083013561223b816127ea565b809150509250929050565b600060208284031215612257578081fd5b8151611267816127ff565b60008060008060008060c0878903121561227a578182fd5b8651612285816127ff565b6020880151909650612296816127ea565b6040880151606089015160808a015160a0909a0151989b929a5090989097909650945092505050565b6000602082840312156122d0578081fd5b5035919050565b600080604083850312156122e9578182fd5b82359150602083013561223b816127ea565b60008060008060608587031215612310578384fd5b843593506020850135612322816127ea565b9250604085013567ffffffffffffffff81111561233d578283fd5b6123498782880161218f565b95989497509550505050565b60008060408385031215612367578182fd5b82359150602083013561223b816127ff565b60006020828403121561238a578081fd5b81356001600160e01b031981168114611267578182fd5b6000806000604084860312156123b5578283fd5b83356123c0816127ea565b9250602084013567ffffffffffffffff8111156123db578283fd5b6123e78682870161218f565b9497909650939450505050565b600060808284031215612405578081fd5b6040516080810181811067ffffffffffffffff8211171561242257fe5b8060405250825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612464578081fd5b5051919050565b6000806040838503121561247d578182fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b6001600160e01b031991909116815260200190565b6020808252601a908201527f7375626772617068417661696c6162696c6974794f7261636c65000000000000604082015260600190565b6020808252602f908201527f43616c6c6572206d75737420626520746865207375626772617068206176616960408201526e6c6162696c697479206f7261636c6560881b606082015260800190565b6020808252601590820152741b5a5b9a5b5d5b54dd5899dc985c1a14da59db985b605a1b604082015260600190565b60208082526037908201527f436f6e747261637420646f6573206e6f7420737570706f72742049526577617260408201527f6473456c69676962696c69747920696e74657266616365000000000000000000606082015260800190565b6020808252602b908201527f43616e6e6f7420736574207265636c61696d206164647265737320666f72202860408201526a627974657333322830292960a81b606082015260800190565b60208082526010908201526f69737375616e6365506572426c6f636b60801b604082015260600190565b60208082526043908201527f436f6e747261637420646f6573206e6f7420737570706f72742049497373756160408201527f6e6365416c6c6f636174696f6e446973747269627574696f6e20696e7465726660608201526261636560e81b608082015260a00190565b6020808252601490820152732737ba1030903932bbb0b932399034b9b9bab2b960611b604082015260600190565b6020808252601f908201527f43616c6c6572206d757374206265206120726577617264732069737375657200604082015260600190565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b600084825260208481840152606060408401528351806060850152825b818110156127985785810183015185820160800152820161277c565b818111156127a95783608083870101525b50601f01601f19169290920160800195945050505050565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b6001600160a01b03811681146105cf57600080fd5b80151581146105cf57600080fdfe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212207419d71079463c2ab6f09756cef155b2ab7c65e9f3f2a7debd98b5b547540fba64736f6c63430007060033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/packages/horizon/ignition/deployments/horizon-localhost-upgrade/artifacts/UpgradeRewardsManagerGovernor#RewardsManagerImplV3.json b/packages/horizon/ignition/deployments/horizon-localhost-upgrade/artifacts/UpgradeRewardsManagerGovernor#RewardsManagerImplV3.json new file mode 100644 index 000000000..00711cc86 --- /dev/null +++ b/packages/horizon/ignition/deployments/horizon-localhost-upgrade/artifacts/UpgradeRewardsManagerGovernor#RewardsManagerImplV3.json @@ -0,0 +1,910 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "RewardsManager", + "sourceName": "contracts/rewards/RewardsManager.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "nameHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "contractAddress", + "type": "address" + } + ], + "name": "ContractSynced", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "indexer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "allocationID", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "HorizonRewardsAssigned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldIssuanceAllocator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newIssuanceAllocator", + "type": "address" + } + ], + "name": "IssuanceAllocatorSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "param", + "type": "string" + } + ], + "name": "ParameterUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "reason", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldAddress", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "ReclaimAddressSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "indexer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "allocationID", + "type": "address" + } + ], + "name": "RewardsDenied", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "indexer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "allocationID", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "RewardsDeniedDueToEligibility", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "subgraphDeploymentID", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "sinceBlock", + "type": "uint256" + } + ], + "name": "RewardsDenylistUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRewardsEligibilityOracle", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRewardsEligibilityOracle", + "type": "address" + } + ], + "name": "RewardsEligibilityOracleSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "reason", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "indexer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "allocationID", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "subgraphDeploymentID", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "RewardsReclaimed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "controller", + "type": "address" + } + ], + "name": "SetController", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldSubgraphService", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newSubgraphService", + "type": "address" + } + ], + "name": "SubgraphServiceSet", + "type": "event" + }, + { + "inputs": [], + "name": "accRewardsPerSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "accRewardsPerSignalLastBlockUpdated", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IGraphProxy", + "name": "_proxy", + "type": "address" + } + ], + "name": "acceptProxy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IGraphProxy", + "name": "_proxy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "acceptProxyAndCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "beforeIssuanceAllocationChange", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokens", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_accRewardsPerAllocatedToken", + "type": "uint256" + } + ], + "name": "calcRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "controller", + "outputs": [ + { + "internalType": "contract IController", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "denylist", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "getAccRewardsForSubgraph", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "getAccRewardsPerAllocatedToken", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAccRewardsPerSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getNewRewardsPerSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_rewardsIssuer", + "type": "address" + }, + { + "internalType": "address", + "name": "_allocationID", + "type": "address" + } + ], + "name": "getRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getRewardsIssuancePerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_controller", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "isDenied", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "issuanceAllocator", + "outputs": [ + { + "internalType": "contract IIssuanceAllocationDistribution", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "issuancePerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minimumSubgraphSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "onSubgraphAllocationUpdate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "onSubgraphSignalUpdate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "reclaimAddresses", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "reason", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "allocationID", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "reclaimRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rewardsEligibilityOracle", + "outputs": [ + { + "internalType": "contract IRewardsEligibility", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_controller", + "type": "address" + } + ], + "name": "setController", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + }, + { + "internalType": "bool", + "name": "_deny", + "type": "bool" + } + ], + "name": "setDenied", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newIssuanceAllocator", + "type": "address" + } + ], + "name": "setIssuanceAllocator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_issuancePerBlock", + "type": "uint256" + } + ], + "name": "setIssuancePerBlock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_minimumSubgraphSignal", + "type": "uint256" + } + ], + "name": "setMinimumSubgraphSignal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "reason", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "setReclaimAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newRewardsEligibilityOracle", + "type": "address" + } + ], + "name": "setRewardsEligibilityOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_subgraphAvailabilityOracle", + "type": "address" + } + ], + "name": "setSubgraphAvailabilityOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_subgraphService", + "type": "address" + } + ], + "name": "setSubgraphService", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "subgraphAvailabilityOracle", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "subgraphService", + "outputs": [ + { + "internalType": "contract IRewardsIssuer", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "subgraphs", + "outputs": [ + { + "internalType": "uint256", + "name": "accRewardsForSubgraph", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accRewardsForSubgraphSnapshot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accRewardsPerSignalSnapshot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accRewardsPerAllocatedToken", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "syncAllContracts", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_allocationID", + "type": "address" + } + ], + "name": "takeRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "updateAccRewardsPerSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6101606040527fe6876326c1291dfcbbd3864a6816d698cd591defc7aa2153d7f9c4c04016c89f6080527fc713c3df6d14cdf946460395d09af88993ee2b948b1a808161494e32c5f6706360a0527f966f1e8d8d8014e05f6ec4a57138da9be1f7c5a7f802928a18072f7c5318076160c0527f1df41cd916959d1163dc8f0671a666ea8a3e434c13e40faef527133b5d16703460e0527f45fc200c7e4544e457d3c5709bfe0d520442c30bbcbdaede89e8d4a4bbc19247610100527fd362cac9cb75c10d67bcc0b7eeb0b1ef48bb5420b556c092d4fd7f758816fcf0610120527f39605a6c26a173774ca666c67ef70cf491880e5d3d6d0ca66ec0a31034f15ea36101405234801561011057600080fd5b5060805160a05160c05160e0516101005161012051610140516128646101736000398061136952508061134052508061131752806120d35250806112ee5280611c7c5250806112c552508061129c5250806112735280611ac052506128646000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c8063931c0ac11161013b578063c8a5f81e116100b8578063e820e2841161007c578063e820e2841461049c578063eeac3e0e146104af578063f77c4791146104c2578063fc763657146104ca578063fcb5fa86146104dd57610248565b8063c8a5f81e1461045e578063d6866ea514610471578063db75092614610479578063e242cf1e1461048c578063e284f8481461049457610248565b8063a8cc0ee2116100ff578063a8cc0ee21461042b578063b951acd714610433578063c3e15de11461043b578063c4d66de814610443578063c7d1117d1461045657610248565b8063931c0ac1146103d757806393a90a1e146103ea5780639825545a146103fd5780639ce7abe514610405578063a2594d821461041857610248565b8063365b7f91116101c95780636c080f181161018d5780636c080f1814610380578063702a280e14610388578063779bcb9b146103a95780639006ce8b146103bc57806392eefe9b146103c457610248565b8063365b7f911461031c5780633df8d6821461032f5780634986594f146103375780634bbfc1c51461035a5780635c6cbd591461036d57610248565b80631324a506116102105780631324a506146102bb57806316a84ab2146102ce5780631ab6bff1146102ee5780631d1c2fec14610301578063260582491461031457610248565b806301ffc9a71461024d57806305bb8c6b146102765780630903c0941461028b5780630beff424146102a05780631156bdc1146102a8575b600080fd5b61026061025b366004612379565b6104f0565b60405161026d91906124b9565b60405180910390f35b61027e610544565b60405161026d919061248c565b61029e6102993660046121d6565b610553565b005b61027e6105af565b61029e6102b63660046122bf565b6105be565b61029e6102c9366004612355565b6105d2565b6102e16102dc3660046122bf565b610613565b60405161026d91906124c4565b6102e16102fc3660046122fb565b610625565b6102e161030f3660046122bf565b6106bc565b61027e6106f3565b61029e61032a3660046121d6565b610702565b61029e61081f565b61034a6103453660046122bf565b610827565b60405161026d94939291906127cf565b61029e6103683660046122bf565b61084e565b6102e161037b3660046122bf565b61094a565b6102e1610a52565b61039b6103963660046122bf565b610a58565b60405161026d9291906127c1565b6102e16103b736600461220e565b610bcc565b6102e1610cf2565b61029e6103d23660046121d6565b610cf8565b61029e6103e53660046121d6565b610d09565b61029e6103f83660046121d6565b610e2f565b6102e1610e89565b61029e6104133660046123a1565b610f2f565b61029e6104263660046121d6565b611085565b6102e16111a0565b6102e16111b6565b61027e6111bc565b61029e6104513660046121d6565b6111cb565b6102e1611237565b6102e161046c36600461246b565b61124f565b61029e61126e565b6102e16104873660046121d6565b61138f565b6102e16114e7565b6102e16114ed565b6102606104aa3660046122bf565b611605565b6102e16104bd3660046122bf565b611619565b61027e61164b565b61029e6104d83660046122d7565b61165a565b61027e6104eb3660046122bf565b611701565b60006001600160e01b031982166301ffc9a760e01b148061052157506001600160e01b0319821663aee4dc4360e01b145b8061053c57506001600160e01b0319821663022ee85560e51b145b90505b919050565b600f546001600160a01b031681565b61055b61171c565b600f80546001600160a01b0319166001600160a01b0383161790556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a4906124e2565b60405180910390a150565b6016546001600160a01b031681565b6105c661171c565b6105cf816117f0565b50565b600f546001600160a01b031633146106055760405162461bcd60e51b81526004016105fc90612519565b60405180910390fd5b61060f828261182c565b5050565b60116020526000908152604090205481565b60155460009033906001600160a01b031681146106545760405162461bcd60e51b81526004016105fc906126d2565b600080600061066384896118ef565b9250925092506106ad8984848b858c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119bf92505050565b9450505050505b949350505050565b60006106c6611237565b5060008281526010602052604090206106de8361094a565b808255600d5460029092019190915592915050565b6015546001600160a01b031681565b61070a61171c565b6016546001600160a01b038281169116146105cf576001600160a01b038116156107cd576040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790610761906366e305fd60e01b906004016124cd565b60206040518083038186803b15801561077957600080fd5b505afa15801561078d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b19190612246565b6107cd5760405162461bcd60e51b81526004016105fc90612597565b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f6a6254f061a8ff05f7d86ad3625787bb913090d9758a7495a002a44813d6e44890600090a35050565b6105cf611237565b60106020526000908152604090208054600182015460028301546003909301549192909184565b600f546001600160a01b03163314806108fb575060008054906101000a90046001600160a01b03166001600160a01b0316634fc07d756040518163ffffffff1660e01b815260040160206040518083038186803b1580156108ae57600080fd5b505afa1580156108c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e691906121f2565b6001600160a01b0316336001600160a01b0316145b6109175760405162461bcd60e51b81526004016105fc90612737565b60128190556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a490612568565b600081815260106020526040812061096183611605565b1561096e5754905061053f565b6000610978611ab9565b6001600160a01b03166346e855da856040518263ffffffff1660e01b81526004016109a391906124c4565b60206040518083038186803b1580156109bb57600080fd5b505afa1580156109cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f39190612453565b90506000601254821015610a08576000610a3a565b610a3a670de0b6b3a7640000610a3484610a2e8760020154610a286111a0565b90611ae4565b90611b41565b90611b9a565b8354909150610a499082611c01565b95945050505050565b60145481565b6000818152601060205260408120819081610a728561094a565b90506000610a84828460010154611c5b565b90506000806040518060400160405280610a9c611c75565b6001600160a01b03908116825260155416602090910152905060005b6002811015610b7b576000828260028110610acf57fe5b60200201516001600160a01b031614610b7357818160028110610aee57fe5b60200201516001600160a01b031663e2e1e8e98a6040518263ffffffff1660e01b8152600401610b1e91906124c4565b60206040518083038186803b158015610b3657600080fd5b505afa158015610b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e9190612453565b830192505b600101610ab8565b5081610b9257600084965096505050505050610bc7565b6000610baa83610a3486670de0b6b3a7640000611b41565b6003870154909150610bbc9082611c01565b975093955050505050505b915091565b6000610bd6611c75565b6001600160a01b0316836001600160a01b03161480610c0257506015546001600160a01b038481169116145b610c1e5760405162461bcd60e51b81526004016105fc906126d2565b6000806000806000876001600160a01b03166355c85269886040518263ffffffff1660e01b8152600401610c52919061248c565b60c06040518083038186803b158015610c6a57600080fd5b505afa158015610c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca29190612262565b955095509550955050945084610cc057600095505050505050610cec565b6000610ccb85610a58565b509050610ce3610cdc858584611ca0565b8390611c01565b96505050505050505b92915050565b600e5481565b610d00611cc5565b6105cf81611d24565b610d1161171c565b6017546001600160a01b038281169116146105cf57610d2e611237565b506001600160a01b03811615610ddd576040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790610d7190631e768dff60e21b906004016124cd565b60206040518083038186803b158015610d8957600080fd5b505afa158015610d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc19190612246565b610ddd5760405162461bcd60e51b81526004016105fc90612669565b601780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f01674b69434be290e7c6acef73422bc6cf74884b5228c9e6cab93117eae2cdcb90600090a35050565b610e3761171c565b601580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f97befc0afcf2bace352f077aea9873c9552fc2e5ab26874f356006fdf9da4ede90600090a35050565b6017546000906001600160a01b0316610ea457601454610f29565b601754604051630c19f2d360e21b81526001600160a01b0390911690633067cb4c90610ed490309060040161248c565b60806040518083038186803b158015610eec57600080fd5b505afa158015610f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2491906123f4565b604001515b90505b90565b82806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f6b57600080fd5b505af1158015610f7f573d6000803e3d6000fd5b505050506040513d6020811015610f9557600080fd5b50516001600160a01b03163314610ff3576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206d757374206265207468652070726f78792061646d696e0000604482015290519081900360640190fd5b60405163623faf6160e01b8152602060048201908152602482018490526001600160a01b0386169163623faf619186918691908190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561106757600080fd5b505af115801561107b573d6000803e3d6000fd5b5050505050505050565b80806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156110c157600080fd5b505af11580156110d5573d6000803e3d6000fd5b505050506040513d60208110156110eb57600080fd5b50516001600160a01b03163314611149576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206d757374206265207468652070726f78792061646d696e0000604482015290519081900360640190fd5b816001600160a01b03166359fc20bb6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561118457600080fd5b505af1158015611198573d6000803e3d6000fd5b505050505050565b6000610f296111ad6114ed565b600d5490611c01565b60125481565b6017546001600160a01b031681565b6111d3611dcc565b6001600160a01b0316336001600160a01b03161461122e576040805162461bcd60e51b815260206004820152601360248201527227b7363c9034b6b83632b6b2b73a30ba34b7b760691b604482015290519081900360640190fd5b6105cf81610d00565b60006112416111a0565b600d81905543600e55905090565b6000611267670de0b6b3a7640000610a348486611b41565b9392505050565b6112977f0000000000000000000000000000000000000000000000000000000000000000611df1565b6112c07f0000000000000000000000000000000000000000000000000000000000000000611df1565b6112e97f0000000000000000000000000000000000000000000000000000000000000000611df1565b6113127f0000000000000000000000000000000000000000000000000000000000000000611df1565b61133b7f0000000000000000000000000000000000000000000000000000000000000000611df1565b6113647f0000000000000000000000000000000000000000000000000000000000000000611df1565b61138d7f0000000000000000000000000000000000000000000000000000000000000000611df1565b565b60003361139a611c75565b6001600160a01b0316816001600160a01b031614806113c657506015546001600160a01b038281169116145b6113e25760405162461bcd60e51b81526004016105fc90612700565b60008060006113f184876118ef565b925092509250826000141561140d57600094505050505061053f565b61141983838884611ef2565b1561142b57600094505050505061053f565b6114336120cc565b6001600160a01b03166340c10f1985856040518363ffffffff1660e01b81526004016114609291906124a0565b600060405180830381600087803b15801561147a57600080fd5b505af115801561148e573d6000803e3d6000fd5b50505050856001600160a01b0316826001600160a01b03167fa111914d7f2ea8beca61d12f1a1f38c5533de5f1823c3936422df4404ac2ec68856040516114d591906124c4565b60405180910390a35090949350505050565b600d5481565b600080611505600e5443611ae490919063ffffffff16565b905080611516576000915050610f2c565b6000611520610e89565b90508061153257600092505050610f2c565b600061153c6120cc565b90506000816001600160a01b03166370a08231611557611ab9565b6040518263ffffffff1660e01b8152600401611573919061248c565b60206040518083038186803b15801561158b57600080fd5b505afa15801561159f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c39190612453565b9050806115d7576000945050505050610f2c565b60006115e38486611b41565b90506115fb82610a3483670de0b6b3a7640000611b41565b9550505050505090565b600090815260116020526040902054151590565b6000818152601060205260408120818061163285610a58565b6003850182905560019094019390935550909392505050565b6000546001600160a01b031681565b61166261171c565b8161167f5760405162461bcd60e51b81526004016105fc906125f4565b6000828152601860205260409020546001600160a01b0390811690821681146116fc5760008381526018602052604080822080546001600160a01b0319166001600160a01b03868116918217909255915191929084169186917f125079be6e3f6efadf63498088ca509edc3835fb416ba13d25649bd1d47d2fa991a45b505050565b6018602052600090815260409020546001600160a01b031681565b60008054906101000a90046001600160a01b03166001600160a01b0316634fc07d756040518163ffffffff1660e01b815260040160206040518083038186803b15801561176857600080fd5b505afa15801561177c573d6000803e3d6000fd5b505050506040513d602081101561179257600080fd5b50516001600160a01b0316331461138d576040805162461bcd60e51b815260206004820152601860248201527f4f6e6c7920436f6e74726f6c6c657220676f7665726e6f720000000000000000604482015290519081900360640190fd5b6117f8611237565b5060148190556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a49061263f565b611835826106bc565b5080156118a25760008281526011602052604090205461189d57600082815260116020526040908190204390819055905183917fe016102b339c3889f4967b491f3381f2c352c8fe3d4f880007807d45b124065a9161189491906124c4565b60405180910390a25b61060f565b6000828152601160205260408082208290555183917fe016102b339c3889f4967b491f3381f2c352c8fe3d4f880007807d45b124065a916118e391906124c4565b60405180910390a25050565b60008060008060008060008060008a6001600160a01b03166355c852698b6040518263ffffffff1660e01b8152600401611929919061248c565b60c06040518083038186803b15801561194157600080fd5b505afa158015611955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119799190612262565b955095509550955095509550600061199085611619565b90508661199e5760006119ac565b6119ac610cdc858584611ca0565b9c959b5093995093975050505050505050565b6000868152601860205260408120546001600160a01b031686158015906119ee57506001600160a01b03811615155b15611aae576119fb6120cc565b6001600160a01b03166340c10f1982896040518363ffffffff1660e01b8152600401611a289291906124a0565b600060405180830381600087803b158015611a4257600080fd5b505af1158015611a56573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b0316897fc65eb6cf0937b3705ec8a3ab7f01707d806f4e42f65a2f06b1143fc30862df5e8a8888604051611aa29392919061275f565b60405180910390a48691505b509695505050505050565b6000610f297f00000000000000000000000000000000000000000000000000000000000000006120f3565b600082821115611b3b576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082611b5057506000610cec565b82820282848281611b5d57fe5b04146112675760405162461bcd60e51b815260040180806020018281038252602181526020018061280e6021913960400191505060405180910390fd5b6000808211611bf0576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381611bf957fe5b049392505050565b600082820183811015611267576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818311611c6b576000611267565b6112678383611ae4565b6000610f297f00000000000000000000000000000000000000000000000000000000000000006120f3565b600080611cad8385611ae4565b9050610a49670de0b6b3a7640000610a348388611b41565b6000546001600160a01b0316331461138d576040805162461bcd60e51b815260206004820152601960248201527f43616c6c6572206d75737420626520436f6e74726f6c6c657200000000000000604482015290519081900360640190fd5b6001600160a01b038116611d78576040805162461bcd60e51b815260206004820152601660248201527510dbdb9d1c9bdb1b195c881b5d5cdd081899481cd95d60521b604482015290519081900360640190fd5b600080546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f4ff638452bbf33c012645d18ae6f05515ff5f2d1dfb0cece8cbf018c60903f709181900360200190a150565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6000805460408051637bb20d2f60e11b81526004810185905290516001600160a01b039092169163f7641a5e91602480820192602092909190829003018186803b158015611e3e57600080fd5b505afa158015611e52573d6000803e3d6000fd5b505050506040513d6020811015611e6857600080fd5b50516000838152600160205260409020549091506001600160a01b0380831691161461060f5760008281526001602090815260409182902080546001600160a01b0319166001600160a01b0385169081179091558251908152915184927fd0e7a942b1fc38c411c4f53d153ba14fd24542a6a35ebacd9b6afca1a154e20692908290030190a25050565b6000611efd82611605565b15611f9057826001600160a01b0316846001600160a01b03167f9b1323a10f3955b1c9c054ffbda78edfdf49998aaf37f61d9f84776b59ac804360405160405180910390a3611f7f7fc0f4a5620db2f97e7c3a4ba7058497eaa0d497538b2666d66bd6932f25345c8886868686604051806020016040528060008152506119bf565b15611f8c575060016106b4565b5060015b6016546001600160a01b03161580159061202757506016546040516366e305fd60e01b81526001600160a01b03909116906366e305fd90611fd590879060040161248c565b60206040518083038186803b158015611fed57600080fd5b505afa158015612001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120259190612246565b155b156106b457826001600160a01b0316846001600160a01b03167fb012e09970916d172f2899bd374aae8d902671bf721e50331e2d57775f90e7478760405161206f91906124c4565b60405180910390a36120b47ffcadc72cad493def76767524554db9da829b6aca9457c0187f63000dba3c943986868686604051806020016040528060008152506119bf565b156120c1575060016106b4565b506001949350505050565b6000610f297f00000000000000000000000000000000000000000000000000000000000000005b6000818152600160205260408120546001600160a01b03168061053c5760005460408051637bb20d2f60e11b81526004810186905290516001600160a01b039092169163f7641a5e91602480820192602092909190829003018186803b15801561215c57600080fd5b505afa158015612170573d6000803e3d6000fd5b505050506040513d602081101561218657600080fd5b50519392505050565b60008083601f8401126121a0578182fd5b50813567ffffffffffffffff8111156121b7578182fd5b6020830191508360208285010111156121cf57600080fd5b9250929050565b6000602082840312156121e7578081fd5b8135611267816127ea565b600060208284031215612203578081fd5b8151611267816127ea565b60008060408385031215612220578081fd5b823561222b816127ea565b9150602083013561223b816127ea565b809150509250929050565b600060208284031215612257578081fd5b8151611267816127ff565b60008060008060008060c0878903121561227a578182fd5b8651612285816127ff565b6020880151909650612296816127ea565b6040880151606089015160808a015160a0909a0151989b929a5090989097909650945092505050565b6000602082840312156122d0578081fd5b5035919050565b600080604083850312156122e9578182fd5b82359150602083013561223b816127ea565b60008060008060608587031215612310578384fd5b843593506020850135612322816127ea565b9250604085013567ffffffffffffffff81111561233d578283fd5b6123498782880161218f565b95989497509550505050565b60008060408385031215612367578182fd5b82359150602083013561223b816127ff565b60006020828403121561238a578081fd5b81356001600160e01b031981168114611267578182fd5b6000806000604084860312156123b5578283fd5b83356123c0816127ea565b9250602084013567ffffffffffffffff8111156123db578283fd5b6123e78682870161218f565b9497909650939450505050565b600060808284031215612405578081fd5b6040516080810181811067ffffffffffffffff8211171561242257fe5b8060405250825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612464578081fd5b5051919050565b6000806040838503121561247d578182fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b6001600160e01b031991909116815260200190565b6020808252601a908201527f7375626772617068417661696c6162696c6974794f7261636c65000000000000604082015260600190565b6020808252602f908201527f43616c6c6572206d75737420626520746865207375626772617068206176616960408201526e6c6162696c697479206f7261636c6560881b606082015260800190565b6020808252601590820152741b5a5b9a5b5d5b54dd5899dc985c1a14da59db985b605a1b604082015260600190565b60208082526037908201527f436f6e747261637420646f6573206e6f7420737570706f72742049526577617260408201527f6473456c69676962696c69747920696e74657266616365000000000000000000606082015260800190565b6020808252602b908201527f43616e6e6f7420736574207265636c61696d206164647265737320666f72202860408201526a627974657333322830292960a81b606082015260800190565b60208082526010908201526f69737375616e6365506572426c6f636b60801b604082015260600190565b60208082526043908201527f436f6e747261637420646f6573206e6f7420737570706f72742049497373756160408201527f6e6365416c6c6f636174696f6e446973747269627574696f6e20696e7465726660608201526261636560e81b608082015260a00190565b6020808252601490820152732737ba1030903932bbb0b932399034b9b9bab2b960611b604082015260600190565b6020808252601f908201527f43616c6c6572206d757374206265206120726577617264732069737375657200604082015260600190565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b600084825260208481840152606060408401528351806060850152825b818110156127985785810183015185820160800152820161277c565b818111156127a95783608083870101525b50601f01601f19169290920160800195945050505050565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b6001600160a01b03811681146105cf57600080fd5b80151581146105cf57600080fdfe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212207419d71079463c2ab6f09756cef155b2ab7c65e9f3f2a7debd98b5b547540fba64736f6c63430007060033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102485760003560e01c8063931c0ac11161013b578063c8a5f81e116100b8578063e820e2841161007c578063e820e2841461049c578063eeac3e0e146104af578063f77c4791146104c2578063fc763657146104ca578063fcb5fa86146104dd57610248565b8063c8a5f81e1461045e578063d6866ea514610471578063db75092614610479578063e242cf1e1461048c578063e284f8481461049457610248565b8063a8cc0ee2116100ff578063a8cc0ee21461042b578063b951acd714610433578063c3e15de11461043b578063c4d66de814610443578063c7d1117d1461045657610248565b8063931c0ac1146103d757806393a90a1e146103ea5780639825545a146103fd5780639ce7abe514610405578063a2594d821461041857610248565b8063365b7f91116101c95780636c080f181161018d5780636c080f1814610380578063702a280e14610388578063779bcb9b146103a95780639006ce8b146103bc57806392eefe9b146103c457610248565b8063365b7f911461031c5780633df8d6821461032f5780634986594f146103375780634bbfc1c51461035a5780635c6cbd591461036d57610248565b80631324a506116102105780631324a506146102bb57806316a84ab2146102ce5780631ab6bff1146102ee5780631d1c2fec14610301578063260582491461031457610248565b806301ffc9a71461024d57806305bb8c6b146102765780630903c0941461028b5780630beff424146102a05780631156bdc1146102a8575b600080fd5b61026061025b366004612379565b6104f0565b60405161026d91906124b9565b60405180910390f35b61027e610544565b60405161026d919061248c565b61029e6102993660046121d6565b610553565b005b61027e6105af565b61029e6102b63660046122bf565b6105be565b61029e6102c9366004612355565b6105d2565b6102e16102dc3660046122bf565b610613565b60405161026d91906124c4565b6102e16102fc3660046122fb565b610625565b6102e161030f3660046122bf565b6106bc565b61027e6106f3565b61029e61032a3660046121d6565b610702565b61029e61081f565b61034a6103453660046122bf565b610827565b60405161026d94939291906127cf565b61029e6103683660046122bf565b61084e565b6102e161037b3660046122bf565b61094a565b6102e1610a52565b61039b6103963660046122bf565b610a58565b60405161026d9291906127c1565b6102e16103b736600461220e565b610bcc565b6102e1610cf2565b61029e6103d23660046121d6565b610cf8565b61029e6103e53660046121d6565b610d09565b61029e6103f83660046121d6565b610e2f565b6102e1610e89565b61029e6104133660046123a1565b610f2f565b61029e6104263660046121d6565b611085565b6102e16111a0565b6102e16111b6565b61027e6111bc565b61029e6104513660046121d6565b6111cb565b6102e1611237565b6102e161046c36600461246b565b61124f565b61029e61126e565b6102e16104873660046121d6565b61138f565b6102e16114e7565b6102e16114ed565b6102606104aa3660046122bf565b611605565b6102e16104bd3660046122bf565b611619565b61027e61164b565b61029e6104d83660046122d7565b61165a565b61027e6104eb3660046122bf565b611701565b60006001600160e01b031982166301ffc9a760e01b148061052157506001600160e01b0319821663aee4dc4360e01b145b8061053c57506001600160e01b0319821663022ee85560e51b145b90505b919050565b600f546001600160a01b031681565b61055b61171c565b600f80546001600160a01b0319166001600160a01b0383161790556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a4906124e2565b60405180910390a150565b6016546001600160a01b031681565b6105c661171c565b6105cf816117f0565b50565b600f546001600160a01b031633146106055760405162461bcd60e51b81526004016105fc90612519565b60405180910390fd5b61060f828261182c565b5050565b60116020526000908152604090205481565b60155460009033906001600160a01b031681146106545760405162461bcd60e51b81526004016105fc906126d2565b600080600061066384896118ef565b9250925092506106ad8984848b858c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119bf92505050565b9450505050505b949350505050565b60006106c6611237565b5060008281526010602052604090206106de8361094a565b808255600d5460029092019190915592915050565b6015546001600160a01b031681565b61070a61171c565b6016546001600160a01b038281169116146105cf576001600160a01b038116156107cd576040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790610761906366e305fd60e01b906004016124cd565b60206040518083038186803b15801561077957600080fd5b505afa15801561078d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b19190612246565b6107cd5760405162461bcd60e51b81526004016105fc90612597565b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f6a6254f061a8ff05f7d86ad3625787bb913090d9758a7495a002a44813d6e44890600090a35050565b6105cf611237565b60106020526000908152604090208054600182015460028301546003909301549192909184565b600f546001600160a01b03163314806108fb575060008054906101000a90046001600160a01b03166001600160a01b0316634fc07d756040518163ffffffff1660e01b815260040160206040518083038186803b1580156108ae57600080fd5b505afa1580156108c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e691906121f2565b6001600160a01b0316336001600160a01b0316145b6109175760405162461bcd60e51b81526004016105fc90612737565b60128190556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a490612568565b600081815260106020526040812061096183611605565b1561096e5754905061053f565b6000610978611ab9565b6001600160a01b03166346e855da856040518263ffffffff1660e01b81526004016109a391906124c4565b60206040518083038186803b1580156109bb57600080fd5b505afa1580156109cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f39190612453565b90506000601254821015610a08576000610a3a565b610a3a670de0b6b3a7640000610a3484610a2e8760020154610a286111a0565b90611ae4565b90611b41565b90611b9a565b8354909150610a499082611c01565b95945050505050565b60145481565b6000818152601060205260408120819081610a728561094a565b90506000610a84828460010154611c5b565b90506000806040518060400160405280610a9c611c75565b6001600160a01b03908116825260155416602090910152905060005b6002811015610b7b576000828260028110610acf57fe5b60200201516001600160a01b031614610b7357818160028110610aee57fe5b60200201516001600160a01b031663e2e1e8e98a6040518263ffffffff1660e01b8152600401610b1e91906124c4565b60206040518083038186803b158015610b3657600080fd5b505afa158015610b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e9190612453565b830192505b600101610ab8565b5081610b9257600084965096505050505050610bc7565b6000610baa83610a3486670de0b6b3a7640000611b41565b6003870154909150610bbc9082611c01565b975093955050505050505b915091565b6000610bd6611c75565b6001600160a01b0316836001600160a01b03161480610c0257506015546001600160a01b038481169116145b610c1e5760405162461bcd60e51b81526004016105fc906126d2565b6000806000806000876001600160a01b03166355c85269886040518263ffffffff1660e01b8152600401610c52919061248c565b60c06040518083038186803b158015610c6a57600080fd5b505afa158015610c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca29190612262565b955095509550955050945084610cc057600095505050505050610cec565b6000610ccb85610a58565b509050610ce3610cdc858584611ca0565b8390611c01565b96505050505050505b92915050565b600e5481565b610d00611cc5565b6105cf81611d24565b610d1161171c565b6017546001600160a01b038281169116146105cf57610d2e611237565b506001600160a01b03811615610ddd576040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790610d7190631e768dff60e21b906004016124cd565b60206040518083038186803b158015610d8957600080fd5b505afa158015610d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc19190612246565b610ddd5760405162461bcd60e51b81526004016105fc90612669565b601780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f01674b69434be290e7c6acef73422bc6cf74884b5228c9e6cab93117eae2cdcb90600090a35050565b610e3761171c565b601580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f97befc0afcf2bace352f077aea9873c9552fc2e5ab26874f356006fdf9da4ede90600090a35050565b6017546000906001600160a01b0316610ea457601454610f29565b601754604051630c19f2d360e21b81526001600160a01b0390911690633067cb4c90610ed490309060040161248c565b60806040518083038186803b158015610eec57600080fd5b505afa158015610f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2491906123f4565b604001515b90505b90565b82806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f6b57600080fd5b505af1158015610f7f573d6000803e3d6000fd5b505050506040513d6020811015610f9557600080fd5b50516001600160a01b03163314610ff3576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206d757374206265207468652070726f78792061646d696e0000604482015290519081900360640190fd5b60405163623faf6160e01b8152602060048201908152602482018490526001600160a01b0386169163623faf619186918691908190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561106757600080fd5b505af115801561107b573d6000803e3d6000fd5b5050505050505050565b80806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156110c157600080fd5b505af11580156110d5573d6000803e3d6000fd5b505050506040513d60208110156110eb57600080fd5b50516001600160a01b03163314611149576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206d757374206265207468652070726f78792061646d696e0000604482015290519081900360640190fd5b816001600160a01b03166359fc20bb6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561118457600080fd5b505af1158015611198573d6000803e3d6000fd5b505050505050565b6000610f296111ad6114ed565b600d5490611c01565b60125481565b6017546001600160a01b031681565b6111d3611dcc565b6001600160a01b0316336001600160a01b03161461122e576040805162461bcd60e51b815260206004820152601360248201527227b7363c9034b6b83632b6b2b73a30ba34b7b760691b604482015290519081900360640190fd5b6105cf81610d00565b60006112416111a0565b600d81905543600e55905090565b6000611267670de0b6b3a7640000610a348486611b41565b9392505050565b6112977f0000000000000000000000000000000000000000000000000000000000000000611df1565b6112c07f0000000000000000000000000000000000000000000000000000000000000000611df1565b6112e97f0000000000000000000000000000000000000000000000000000000000000000611df1565b6113127f0000000000000000000000000000000000000000000000000000000000000000611df1565b61133b7f0000000000000000000000000000000000000000000000000000000000000000611df1565b6113647f0000000000000000000000000000000000000000000000000000000000000000611df1565b61138d7f0000000000000000000000000000000000000000000000000000000000000000611df1565b565b60003361139a611c75565b6001600160a01b0316816001600160a01b031614806113c657506015546001600160a01b038281169116145b6113e25760405162461bcd60e51b81526004016105fc90612700565b60008060006113f184876118ef565b925092509250826000141561140d57600094505050505061053f565b61141983838884611ef2565b1561142b57600094505050505061053f565b6114336120cc565b6001600160a01b03166340c10f1985856040518363ffffffff1660e01b81526004016114609291906124a0565b600060405180830381600087803b15801561147a57600080fd5b505af115801561148e573d6000803e3d6000fd5b50505050856001600160a01b0316826001600160a01b03167fa111914d7f2ea8beca61d12f1a1f38c5533de5f1823c3936422df4404ac2ec68856040516114d591906124c4565b60405180910390a35090949350505050565b600d5481565b600080611505600e5443611ae490919063ffffffff16565b905080611516576000915050610f2c565b6000611520610e89565b90508061153257600092505050610f2c565b600061153c6120cc565b90506000816001600160a01b03166370a08231611557611ab9565b6040518263ffffffff1660e01b8152600401611573919061248c565b60206040518083038186803b15801561158b57600080fd5b505afa15801561159f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c39190612453565b9050806115d7576000945050505050610f2c565b60006115e38486611b41565b90506115fb82610a3483670de0b6b3a7640000611b41565b9550505050505090565b600090815260116020526040902054151590565b6000818152601060205260408120818061163285610a58565b6003850182905560019094019390935550909392505050565b6000546001600160a01b031681565b61166261171c565b8161167f5760405162461bcd60e51b81526004016105fc906125f4565b6000828152601860205260409020546001600160a01b0390811690821681146116fc5760008381526018602052604080822080546001600160a01b0319166001600160a01b03868116918217909255915191929084169186917f125079be6e3f6efadf63498088ca509edc3835fb416ba13d25649bd1d47d2fa991a45b505050565b6018602052600090815260409020546001600160a01b031681565b60008054906101000a90046001600160a01b03166001600160a01b0316634fc07d756040518163ffffffff1660e01b815260040160206040518083038186803b15801561176857600080fd5b505afa15801561177c573d6000803e3d6000fd5b505050506040513d602081101561179257600080fd5b50516001600160a01b0316331461138d576040805162461bcd60e51b815260206004820152601860248201527f4f6e6c7920436f6e74726f6c6c657220676f7665726e6f720000000000000000604482015290519081900360640190fd5b6117f8611237565b5060148190556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a49061263f565b611835826106bc565b5080156118a25760008281526011602052604090205461189d57600082815260116020526040908190204390819055905183917fe016102b339c3889f4967b491f3381f2c352c8fe3d4f880007807d45b124065a9161189491906124c4565b60405180910390a25b61060f565b6000828152601160205260408082208290555183917fe016102b339c3889f4967b491f3381f2c352c8fe3d4f880007807d45b124065a916118e391906124c4565b60405180910390a25050565b60008060008060008060008060008a6001600160a01b03166355c852698b6040518263ffffffff1660e01b8152600401611929919061248c565b60c06040518083038186803b15801561194157600080fd5b505afa158015611955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119799190612262565b955095509550955095509550600061199085611619565b90508661199e5760006119ac565b6119ac610cdc858584611ca0565b9c959b5093995093975050505050505050565b6000868152601860205260408120546001600160a01b031686158015906119ee57506001600160a01b03811615155b15611aae576119fb6120cc565b6001600160a01b03166340c10f1982896040518363ffffffff1660e01b8152600401611a289291906124a0565b600060405180830381600087803b158015611a4257600080fd5b505af1158015611a56573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b0316897fc65eb6cf0937b3705ec8a3ab7f01707d806f4e42f65a2f06b1143fc30862df5e8a8888604051611aa29392919061275f565b60405180910390a48691505b509695505050505050565b6000610f297f00000000000000000000000000000000000000000000000000000000000000006120f3565b600082821115611b3b576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082611b5057506000610cec565b82820282848281611b5d57fe5b04146112675760405162461bcd60e51b815260040180806020018281038252602181526020018061280e6021913960400191505060405180910390fd5b6000808211611bf0576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381611bf957fe5b049392505050565b600082820183811015611267576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818311611c6b576000611267565b6112678383611ae4565b6000610f297f00000000000000000000000000000000000000000000000000000000000000006120f3565b600080611cad8385611ae4565b9050610a49670de0b6b3a7640000610a348388611b41565b6000546001600160a01b0316331461138d576040805162461bcd60e51b815260206004820152601960248201527f43616c6c6572206d75737420626520436f6e74726f6c6c657200000000000000604482015290519081900360640190fd5b6001600160a01b038116611d78576040805162461bcd60e51b815260206004820152601660248201527510dbdb9d1c9bdb1b195c881b5d5cdd081899481cd95d60521b604482015290519081900360640190fd5b600080546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f4ff638452bbf33c012645d18ae6f05515ff5f2d1dfb0cece8cbf018c60903f709181900360200190a150565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6000805460408051637bb20d2f60e11b81526004810185905290516001600160a01b039092169163f7641a5e91602480820192602092909190829003018186803b158015611e3e57600080fd5b505afa158015611e52573d6000803e3d6000fd5b505050506040513d6020811015611e6857600080fd5b50516000838152600160205260409020549091506001600160a01b0380831691161461060f5760008281526001602090815260409182902080546001600160a01b0319166001600160a01b0385169081179091558251908152915184927fd0e7a942b1fc38c411c4f53d153ba14fd24542a6a35ebacd9b6afca1a154e20692908290030190a25050565b6000611efd82611605565b15611f9057826001600160a01b0316846001600160a01b03167f9b1323a10f3955b1c9c054ffbda78edfdf49998aaf37f61d9f84776b59ac804360405160405180910390a3611f7f7fc0f4a5620db2f97e7c3a4ba7058497eaa0d497538b2666d66bd6932f25345c8886868686604051806020016040528060008152506119bf565b15611f8c575060016106b4565b5060015b6016546001600160a01b03161580159061202757506016546040516366e305fd60e01b81526001600160a01b03909116906366e305fd90611fd590879060040161248c565b60206040518083038186803b158015611fed57600080fd5b505afa158015612001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120259190612246565b155b156106b457826001600160a01b0316846001600160a01b03167fb012e09970916d172f2899bd374aae8d902671bf721e50331e2d57775f90e7478760405161206f91906124c4565b60405180910390a36120b47ffcadc72cad493def76767524554db9da829b6aca9457c0187f63000dba3c943986868686604051806020016040528060008152506119bf565b156120c1575060016106b4565b506001949350505050565b6000610f297f00000000000000000000000000000000000000000000000000000000000000005b6000818152600160205260408120546001600160a01b03168061053c5760005460408051637bb20d2f60e11b81526004810186905290516001600160a01b039092169163f7641a5e91602480820192602092909190829003018186803b15801561215c57600080fd5b505afa158015612170573d6000803e3d6000fd5b505050506040513d602081101561218657600080fd5b50519392505050565b60008083601f8401126121a0578182fd5b50813567ffffffffffffffff8111156121b7578182fd5b6020830191508360208285010111156121cf57600080fd5b9250929050565b6000602082840312156121e7578081fd5b8135611267816127ea565b600060208284031215612203578081fd5b8151611267816127ea565b60008060408385031215612220578081fd5b823561222b816127ea565b9150602083013561223b816127ea565b809150509250929050565b600060208284031215612257578081fd5b8151611267816127ff565b60008060008060008060c0878903121561227a578182fd5b8651612285816127ff565b6020880151909650612296816127ea565b6040880151606089015160808a015160a0909a0151989b929a5090989097909650945092505050565b6000602082840312156122d0578081fd5b5035919050565b600080604083850312156122e9578182fd5b82359150602083013561223b816127ea565b60008060008060608587031215612310578384fd5b843593506020850135612322816127ea565b9250604085013567ffffffffffffffff81111561233d578283fd5b6123498782880161218f565b95989497509550505050565b60008060408385031215612367578182fd5b82359150602083013561223b816127ff565b60006020828403121561238a578081fd5b81356001600160e01b031981168114611267578182fd5b6000806000604084860312156123b5578283fd5b83356123c0816127ea565b9250602084013567ffffffffffffffff8111156123db578283fd5b6123e78682870161218f565b9497909650939450505050565b600060808284031215612405578081fd5b6040516080810181811067ffffffffffffffff8211171561242257fe5b8060405250825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612464578081fd5b5051919050565b6000806040838503121561247d578182fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b6001600160e01b031991909116815260200190565b6020808252601a908201527f7375626772617068417661696c6162696c6974794f7261636c65000000000000604082015260600190565b6020808252602f908201527f43616c6c6572206d75737420626520746865207375626772617068206176616960408201526e6c6162696c697479206f7261636c6560881b606082015260800190565b6020808252601590820152741b5a5b9a5b5d5b54dd5899dc985c1a14da59db985b605a1b604082015260600190565b60208082526037908201527f436f6e747261637420646f6573206e6f7420737570706f72742049526577617260408201527f6473456c69676962696c69747920696e74657266616365000000000000000000606082015260800190565b6020808252602b908201527f43616e6e6f7420736574207265636c61696d206164647265737320666f72202860408201526a627974657333322830292960a81b606082015260800190565b60208082526010908201526f69737375616e6365506572426c6f636b60801b604082015260600190565b60208082526043908201527f436f6e747261637420646f6573206e6f7420737570706f72742049497373756160408201527f6e6365416c6c6f636174696f6e446973747269627574696f6e20696e7465726660608201526261636560e81b608082015260a00190565b6020808252601490820152732737ba1030903932bbb0b932399034b9b9bab2b960611b604082015260600190565b6020808252601f908201527f43616c6c6572206d757374206265206120726577617264732069737375657200604082015260600190565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b600084825260208481840152606060408401528351806060850152825b818110156127985785810183015185820160800152820161277c565b818111156127a95783608083870101525b50601f01601f19169290920160800195945050505050565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b6001600160a01b03811681146105cf57600080fd5b80151581146105cf57600080fdfe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212207419d71079463c2ab6f09756cef155b2ab7c65e9f3f2a7debd98b5b547540fba64736f6c63430007060033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/packages/horizon/ignition/deployments/horizon-localhost-upgrade/artifacts/UpgradeRewardsManagerGovernor#RewardsManagerProxy.json b/packages/horizon/ignition/deployments/horizon-localhost-upgrade/artifacts/UpgradeRewardsManagerGovernor#RewardsManagerProxy.json new file mode 100644 index 000000000..bdfba399f --- /dev/null +++ b/packages/horizon/ignition/deployments/horizon-localhost-upgrade/artifacts/UpgradeRewardsManagerGovernor#RewardsManagerProxy.json @@ -0,0 +1,177 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "GraphProxy", + "sourceName": "contracts/upgrades/GraphProxy.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_impl", + "type": "address" + }, + { + "internalType": "address", + "name": "_admin", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldAdmin", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldImplementation", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "ImplementationUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldPendingImplementation", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newPendingImplementation", + "type": "address" + } + ], + "name": "PendingImplementationUpdated", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [], + "name": "acceptUpgrade", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "acceptUpgradeAndCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "admin", + "outputs": [ + { + "internalType": "address", + "name": "adminAddress", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "implementationAddress", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "pendingImplementation", + "outputs": [ + { + "internalType": "address", + "name": "pendingImplementationAddress", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newAdmin", + "type": "address" + } + ], + "name": "setAdmin", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50604051610a12380380610a128339818101604052604081101561003357600080fd5b50805160209091015161004581610055565b61004e826100b3565b5050610137565b600061005f610111565b6000805160206109d2833981519152838155604051919250906001600160a01b0380851691908416907f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b90600090a3505050565b60006100bd610124565b6000805160206109f2833981519152838155604051919250906001600160a01b0380851691908416907f980c0d30fe97457c47903527d88b7009a1643be6de24d2af664214919f0540a190600090a3505050565b6000805160206109d28339815191525490565b6000805160206109f28339815191525490565b61088c806101466000396000f3fe6080604052600436106100745760003560e01c80635c60da1b1161004e5780635c60da1b14610104578063623faf6114610119578063704b6c0214610196578063f851a440146101c957610083565b80633659cfe61461008b578063396f7b23146100be57806359fc20bb146100ef57610083565b36610083576100816101de565b005b6100816101de565b34801561009757600080fd5b50610081600480360360208110156100ae57600080fd5b50356001600160a01b031661029e565b3480156100ca57600080fd5b506100d36102d8565b604080516001600160a01b039092168252519081900360200190f35b3480156100fb57600080fd5b50610081610338565b34801561011057600080fd5b506100d3610393565b34801561012557600080fd5b506100816004803603602081101561013c57600080fd5b81019060208101813564010000000081111561015757600080fd5b82018360208201111561016957600080fd5b8035906020019184600183028401116401000000008311171561018b57600080fd5b5090925090506103e1565b3480156101a257600080fd5b50610081600480360360208110156101b957600080fd5b50356001600160a01b03166104f1565b3480156101d557600080fd5b506100d3610576565b6101e66105c0565b6001600160a01b0316336001600160a01b0316141561024c576040805162461bcd60e51b815260206004820152601f60248201527f43616e6e6f742066616c6c6261636b20746f2070726f78792074617267657400604482015290519081900360640190fd5b6040516001600160a01b037f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541636600083376000803684845af490503d806000843e81801561029a578184f35b8184fd5b6102a66105c0565b6001600160a01b0316336001600160a01b031614156102cd576102c8816105e5565b6102d5565b6102d56101de565b50565b60006102e26105c0565b6001600160a01b0316336001600160a01b031614806103195750610304610655565b6001600160a01b0316336001600160a01b0316145b1561032d57610326610655565b9050610335565b6103356101de565b90565b6103406105c0565b6001600160a01b0316336001600160a01b031614806103775750610362610655565b6001600160a01b0316336001600160a01b0316145b156103895761038461067a565b610391565b6103916101de565b565b600061039d6105c0565b6001600160a01b0316336001600160a01b031614806103d457506103bf610655565b6001600160a01b0316336001600160a01b0316145b1561032d57610326610751565b6103e96105c0565b6001600160a01b0316336001600160a01b03161480610420575061040b610655565b6001600160a01b0316336001600160a01b0316145b156104e55761042d61067a565b6000610437610751565b6001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d8060008114610491576040519150601f19603f3d011682016040523d82523d6000602084013e610496565b606091505b50509050806104df576040805162461bcd60e51b815260206004820152601060248201526f125b5c1b0818d85b1b0819985a5b195960821b604482015290519081900360640190fd5b506104ed565b6104ed6101de565b5050565b6104f96105c0565b6001600160a01b0316336001600160a01b031614156102cd576001600160a01b03811661056d576040805162461bcd60e51b815260206004820152601e60248201527f41646d696e2063616e7420626520746865207a65726f20616464726573730000604482015290519081900360640190fd5b6102c881610776565b60006105806105c0565b6001600160a01b0316336001600160a01b031614806105b757506105a2610655565b6001600160a01b0316336001600160a01b0316145b1561032d576103265b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b60006105ef610655565b7f9e5eddc59e0b171f57125ab86bee043d9128098c3a6b9adb4f2e86333c2f6f8c838155604051919250906001600160a01b0380851691908416907f980c0d30fe97457c47903527d88b7009a1643be6de24d2af664214919f0540a190600090a3505050565b7f9e5eddc59e0b171f57125ab86bee043d9128098c3a6b9adb4f2e86333c2f6f8c5490565b6000610684610655565b90506001600160a01b0381166106e1576040805162461bcd60e51b815260206004820152601b60248201527f496d706c2063616e6e6f74206265207a65726f20616464726573730000000000604482015290519081900360640190fd5b336001600160a01b0382161461073e576040805162461bcd60e51b815260206004820152601b60248201527f4f6e6c792070656e64696e6720696d706c656d656e746174696f6e0000000000604482015290519081900360640190fd5b610747816107e6565b6102d560006105e5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b60006107806105c0565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103838155604051919250906001600160a01b0380851691908416907f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b90600090a3505050565b60006107f0610751565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc838155604051919250906001600160a01b0380851691908416907faa3f731066a578e5f39b4215468d826cdd15373cbc0dfc9cb9bdc649718ef7da90600090a350505056fea264697066735822122073800c706a88258a9c7cd1e2da8c1703452633510bc80596badfa39a83c6ae9564736f6c63430007060033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61039e5eddc59e0b171f57125ab86bee043d9128098c3a6b9adb4f2e86333c2f6f8c", + "deployedBytecode": "0x6080604052600436106100745760003560e01c80635c60da1b1161004e5780635c60da1b14610104578063623faf6114610119578063704b6c0214610196578063f851a440146101c957610083565b80633659cfe61461008b578063396f7b23146100be57806359fc20bb146100ef57610083565b36610083576100816101de565b005b6100816101de565b34801561009757600080fd5b50610081600480360360208110156100ae57600080fd5b50356001600160a01b031661029e565b3480156100ca57600080fd5b506100d36102d8565b604080516001600160a01b039092168252519081900360200190f35b3480156100fb57600080fd5b50610081610338565b34801561011057600080fd5b506100d3610393565b34801561012557600080fd5b506100816004803603602081101561013c57600080fd5b81019060208101813564010000000081111561015757600080fd5b82018360208201111561016957600080fd5b8035906020019184600183028401116401000000008311171561018b57600080fd5b5090925090506103e1565b3480156101a257600080fd5b50610081600480360360208110156101b957600080fd5b50356001600160a01b03166104f1565b3480156101d557600080fd5b506100d3610576565b6101e66105c0565b6001600160a01b0316336001600160a01b0316141561024c576040805162461bcd60e51b815260206004820152601f60248201527f43616e6e6f742066616c6c6261636b20746f2070726f78792074617267657400604482015290519081900360640190fd5b6040516001600160a01b037f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541636600083376000803684845af490503d806000843e81801561029a578184f35b8184fd5b6102a66105c0565b6001600160a01b0316336001600160a01b031614156102cd576102c8816105e5565b6102d5565b6102d56101de565b50565b60006102e26105c0565b6001600160a01b0316336001600160a01b031614806103195750610304610655565b6001600160a01b0316336001600160a01b0316145b1561032d57610326610655565b9050610335565b6103356101de565b90565b6103406105c0565b6001600160a01b0316336001600160a01b031614806103775750610362610655565b6001600160a01b0316336001600160a01b0316145b156103895761038461067a565b610391565b6103916101de565b565b600061039d6105c0565b6001600160a01b0316336001600160a01b031614806103d457506103bf610655565b6001600160a01b0316336001600160a01b0316145b1561032d57610326610751565b6103e96105c0565b6001600160a01b0316336001600160a01b03161480610420575061040b610655565b6001600160a01b0316336001600160a01b0316145b156104e55761042d61067a565b6000610437610751565b6001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d8060008114610491576040519150601f19603f3d011682016040523d82523d6000602084013e610496565b606091505b50509050806104df576040805162461bcd60e51b815260206004820152601060248201526f125b5c1b0818d85b1b0819985a5b195960821b604482015290519081900360640190fd5b506104ed565b6104ed6101de565b5050565b6104f96105c0565b6001600160a01b0316336001600160a01b031614156102cd576001600160a01b03811661056d576040805162461bcd60e51b815260206004820152601e60248201527f41646d696e2063616e7420626520746865207a65726f20616464726573730000604482015290519081900360640190fd5b6102c881610776565b60006105806105c0565b6001600160a01b0316336001600160a01b031614806105b757506105a2610655565b6001600160a01b0316336001600160a01b0316145b1561032d576103265b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b60006105ef610655565b7f9e5eddc59e0b171f57125ab86bee043d9128098c3a6b9adb4f2e86333c2f6f8c838155604051919250906001600160a01b0380851691908416907f980c0d30fe97457c47903527d88b7009a1643be6de24d2af664214919f0540a190600090a3505050565b7f9e5eddc59e0b171f57125ab86bee043d9128098c3a6b9adb4f2e86333c2f6f8c5490565b6000610684610655565b90506001600160a01b0381166106e1576040805162461bcd60e51b815260206004820152601b60248201527f496d706c2063616e6e6f74206265207a65726f20616464726573730000000000604482015290519081900360640190fd5b336001600160a01b0382161461073e576040805162461bcd60e51b815260206004820152601b60248201527f4f6e6c792070656e64696e6720696d706c656d656e746174696f6e0000000000604482015290519081900360640190fd5b610747816107e6565b6102d560006105e5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b60006107806105c0565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103838155604051919250906001600160a01b0380851691908416907f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b90600090a3505050565b60006107f0610751565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc838155604051919250906001600160a01b0380851691908416907faa3f731066a578e5f39b4215468d826cdd15373cbc0dfc9cb9bdc649718ef7da90600090a350505056fea264697066735822122073800c706a88258a9c7cd1e2da8c1703452633510bc80596badfa39a83c6ae9564736f6c63430007060033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/packages/horizon/ignition/deployments/horizon-localhost-upgrade/artifacts/UpgradeRewardsManagerGovernor#upgradeRewardsManagerV2_proxy.json b/packages/horizon/ignition/deployments/horizon-localhost-upgrade/artifacts/UpgradeRewardsManagerGovernor#upgradeRewardsManagerV2_proxy.json new file mode 100644 index 000000000..00711cc86 --- /dev/null +++ b/packages/horizon/ignition/deployments/horizon-localhost-upgrade/artifacts/UpgradeRewardsManagerGovernor#upgradeRewardsManagerV2_proxy.json @@ -0,0 +1,910 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "RewardsManager", + "sourceName": "contracts/rewards/RewardsManager.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "nameHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "contractAddress", + "type": "address" + } + ], + "name": "ContractSynced", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "indexer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "allocationID", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "HorizonRewardsAssigned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldIssuanceAllocator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newIssuanceAllocator", + "type": "address" + } + ], + "name": "IssuanceAllocatorSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "param", + "type": "string" + } + ], + "name": "ParameterUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "reason", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldAddress", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "ReclaimAddressSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "indexer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "allocationID", + "type": "address" + } + ], + "name": "RewardsDenied", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "indexer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "allocationID", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "RewardsDeniedDueToEligibility", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "subgraphDeploymentID", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "sinceBlock", + "type": "uint256" + } + ], + "name": "RewardsDenylistUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRewardsEligibilityOracle", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRewardsEligibilityOracle", + "type": "address" + } + ], + "name": "RewardsEligibilityOracleSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "reason", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "indexer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "allocationID", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "subgraphDeploymentID", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "RewardsReclaimed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "controller", + "type": "address" + } + ], + "name": "SetController", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldSubgraphService", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newSubgraphService", + "type": "address" + } + ], + "name": "SubgraphServiceSet", + "type": "event" + }, + { + "inputs": [], + "name": "accRewardsPerSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "accRewardsPerSignalLastBlockUpdated", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IGraphProxy", + "name": "_proxy", + "type": "address" + } + ], + "name": "acceptProxy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IGraphProxy", + "name": "_proxy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "acceptProxyAndCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "beforeIssuanceAllocationChange", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokens", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_accRewardsPerAllocatedToken", + "type": "uint256" + } + ], + "name": "calcRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "controller", + "outputs": [ + { + "internalType": "contract IController", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "denylist", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "getAccRewardsForSubgraph", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "getAccRewardsPerAllocatedToken", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAccRewardsPerSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getNewRewardsPerSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_rewardsIssuer", + "type": "address" + }, + { + "internalType": "address", + "name": "_allocationID", + "type": "address" + } + ], + "name": "getRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getRewardsIssuancePerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_controller", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "isDenied", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "issuanceAllocator", + "outputs": [ + { + "internalType": "contract IIssuanceAllocationDistribution", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "issuancePerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minimumSubgraphSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "onSubgraphAllocationUpdate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "onSubgraphSignalUpdate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "reclaimAddresses", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "reason", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "allocationID", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "reclaimRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rewardsEligibilityOracle", + "outputs": [ + { + "internalType": "contract IRewardsEligibility", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_controller", + "type": "address" + } + ], + "name": "setController", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + }, + { + "internalType": "bool", + "name": "_deny", + "type": "bool" + } + ], + "name": "setDenied", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newIssuanceAllocator", + "type": "address" + } + ], + "name": "setIssuanceAllocator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_issuancePerBlock", + "type": "uint256" + } + ], + "name": "setIssuancePerBlock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_minimumSubgraphSignal", + "type": "uint256" + } + ], + "name": "setMinimumSubgraphSignal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "reason", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "setReclaimAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newRewardsEligibilityOracle", + "type": "address" + } + ], + "name": "setRewardsEligibilityOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_subgraphAvailabilityOracle", + "type": "address" + } + ], + "name": "setSubgraphAvailabilityOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_subgraphService", + "type": "address" + } + ], + "name": "setSubgraphService", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "subgraphAvailabilityOracle", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "subgraphService", + "outputs": [ + { + "internalType": "contract IRewardsIssuer", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "subgraphs", + "outputs": [ + { + "internalType": "uint256", + "name": "accRewardsForSubgraph", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accRewardsForSubgraphSnapshot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accRewardsPerSignalSnapshot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accRewardsPerAllocatedToken", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "syncAllContracts", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_allocationID", + "type": "address" + } + ], + "name": "takeRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "updateAccRewardsPerSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6101606040527fe6876326c1291dfcbbd3864a6816d698cd591defc7aa2153d7f9c4c04016c89f6080527fc713c3df6d14cdf946460395d09af88993ee2b948b1a808161494e32c5f6706360a0527f966f1e8d8d8014e05f6ec4a57138da9be1f7c5a7f802928a18072f7c5318076160c0527f1df41cd916959d1163dc8f0671a666ea8a3e434c13e40faef527133b5d16703460e0527f45fc200c7e4544e457d3c5709bfe0d520442c30bbcbdaede89e8d4a4bbc19247610100527fd362cac9cb75c10d67bcc0b7eeb0b1ef48bb5420b556c092d4fd7f758816fcf0610120527f39605a6c26a173774ca666c67ef70cf491880e5d3d6d0ca66ec0a31034f15ea36101405234801561011057600080fd5b5060805160a05160c05160e0516101005161012051610140516128646101736000398061136952508061134052508061131752806120d35250806112ee5280611c7c5250806112c552508061129c5250806112735280611ac052506128646000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c8063931c0ac11161013b578063c8a5f81e116100b8578063e820e2841161007c578063e820e2841461049c578063eeac3e0e146104af578063f77c4791146104c2578063fc763657146104ca578063fcb5fa86146104dd57610248565b8063c8a5f81e1461045e578063d6866ea514610471578063db75092614610479578063e242cf1e1461048c578063e284f8481461049457610248565b8063a8cc0ee2116100ff578063a8cc0ee21461042b578063b951acd714610433578063c3e15de11461043b578063c4d66de814610443578063c7d1117d1461045657610248565b8063931c0ac1146103d757806393a90a1e146103ea5780639825545a146103fd5780639ce7abe514610405578063a2594d821461041857610248565b8063365b7f91116101c95780636c080f181161018d5780636c080f1814610380578063702a280e14610388578063779bcb9b146103a95780639006ce8b146103bc57806392eefe9b146103c457610248565b8063365b7f911461031c5780633df8d6821461032f5780634986594f146103375780634bbfc1c51461035a5780635c6cbd591461036d57610248565b80631324a506116102105780631324a506146102bb57806316a84ab2146102ce5780631ab6bff1146102ee5780631d1c2fec14610301578063260582491461031457610248565b806301ffc9a71461024d57806305bb8c6b146102765780630903c0941461028b5780630beff424146102a05780631156bdc1146102a8575b600080fd5b61026061025b366004612379565b6104f0565b60405161026d91906124b9565b60405180910390f35b61027e610544565b60405161026d919061248c565b61029e6102993660046121d6565b610553565b005b61027e6105af565b61029e6102b63660046122bf565b6105be565b61029e6102c9366004612355565b6105d2565b6102e16102dc3660046122bf565b610613565b60405161026d91906124c4565b6102e16102fc3660046122fb565b610625565b6102e161030f3660046122bf565b6106bc565b61027e6106f3565b61029e61032a3660046121d6565b610702565b61029e61081f565b61034a6103453660046122bf565b610827565b60405161026d94939291906127cf565b61029e6103683660046122bf565b61084e565b6102e161037b3660046122bf565b61094a565b6102e1610a52565b61039b6103963660046122bf565b610a58565b60405161026d9291906127c1565b6102e16103b736600461220e565b610bcc565b6102e1610cf2565b61029e6103d23660046121d6565b610cf8565b61029e6103e53660046121d6565b610d09565b61029e6103f83660046121d6565b610e2f565b6102e1610e89565b61029e6104133660046123a1565b610f2f565b61029e6104263660046121d6565b611085565b6102e16111a0565b6102e16111b6565b61027e6111bc565b61029e6104513660046121d6565b6111cb565b6102e1611237565b6102e161046c36600461246b565b61124f565b61029e61126e565b6102e16104873660046121d6565b61138f565b6102e16114e7565b6102e16114ed565b6102606104aa3660046122bf565b611605565b6102e16104bd3660046122bf565b611619565b61027e61164b565b61029e6104d83660046122d7565b61165a565b61027e6104eb3660046122bf565b611701565b60006001600160e01b031982166301ffc9a760e01b148061052157506001600160e01b0319821663aee4dc4360e01b145b8061053c57506001600160e01b0319821663022ee85560e51b145b90505b919050565b600f546001600160a01b031681565b61055b61171c565b600f80546001600160a01b0319166001600160a01b0383161790556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a4906124e2565b60405180910390a150565b6016546001600160a01b031681565b6105c661171c565b6105cf816117f0565b50565b600f546001600160a01b031633146106055760405162461bcd60e51b81526004016105fc90612519565b60405180910390fd5b61060f828261182c565b5050565b60116020526000908152604090205481565b60155460009033906001600160a01b031681146106545760405162461bcd60e51b81526004016105fc906126d2565b600080600061066384896118ef565b9250925092506106ad8984848b858c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119bf92505050565b9450505050505b949350505050565b60006106c6611237565b5060008281526010602052604090206106de8361094a565b808255600d5460029092019190915592915050565b6015546001600160a01b031681565b61070a61171c565b6016546001600160a01b038281169116146105cf576001600160a01b038116156107cd576040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790610761906366e305fd60e01b906004016124cd565b60206040518083038186803b15801561077957600080fd5b505afa15801561078d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b19190612246565b6107cd5760405162461bcd60e51b81526004016105fc90612597565b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f6a6254f061a8ff05f7d86ad3625787bb913090d9758a7495a002a44813d6e44890600090a35050565b6105cf611237565b60106020526000908152604090208054600182015460028301546003909301549192909184565b600f546001600160a01b03163314806108fb575060008054906101000a90046001600160a01b03166001600160a01b0316634fc07d756040518163ffffffff1660e01b815260040160206040518083038186803b1580156108ae57600080fd5b505afa1580156108c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e691906121f2565b6001600160a01b0316336001600160a01b0316145b6109175760405162461bcd60e51b81526004016105fc90612737565b60128190556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a490612568565b600081815260106020526040812061096183611605565b1561096e5754905061053f565b6000610978611ab9565b6001600160a01b03166346e855da856040518263ffffffff1660e01b81526004016109a391906124c4565b60206040518083038186803b1580156109bb57600080fd5b505afa1580156109cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f39190612453565b90506000601254821015610a08576000610a3a565b610a3a670de0b6b3a7640000610a3484610a2e8760020154610a286111a0565b90611ae4565b90611b41565b90611b9a565b8354909150610a499082611c01565b95945050505050565b60145481565b6000818152601060205260408120819081610a728561094a565b90506000610a84828460010154611c5b565b90506000806040518060400160405280610a9c611c75565b6001600160a01b03908116825260155416602090910152905060005b6002811015610b7b576000828260028110610acf57fe5b60200201516001600160a01b031614610b7357818160028110610aee57fe5b60200201516001600160a01b031663e2e1e8e98a6040518263ffffffff1660e01b8152600401610b1e91906124c4565b60206040518083038186803b158015610b3657600080fd5b505afa158015610b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e9190612453565b830192505b600101610ab8565b5081610b9257600084965096505050505050610bc7565b6000610baa83610a3486670de0b6b3a7640000611b41565b6003870154909150610bbc9082611c01565b975093955050505050505b915091565b6000610bd6611c75565b6001600160a01b0316836001600160a01b03161480610c0257506015546001600160a01b038481169116145b610c1e5760405162461bcd60e51b81526004016105fc906126d2565b6000806000806000876001600160a01b03166355c85269886040518263ffffffff1660e01b8152600401610c52919061248c565b60c06040518083038186803b158015610c6a57600080fd5b505afa158015610c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca29190612262565b955095509550955050945084610cc057600095505050505050610cec565b6000610ccb85610a58565b509050610ce3610cdc858584611ca0565b8390611c01565b96505050505050505b92915050565b600e5481565b610d00611cc5565b6105cf81611d24565b610d1161171c565b6017546001600160a01b038281169116146105cf57610d2e611237565b506001600160a01b03811615610ddd576040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790610d7190631e768dff60e21b906004016124cd565b60206040518083038186803b158015610d8957600080fd5b505afa158015610d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc19190612246565b610ddd5760405162461bcd60e51b81526004016105fc90612669565b601780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f01674b69434be290e7c6acef73422bc6cf74884b5228c9e6cab93117eae2cdcb90600090a35050565b610e3761171c565b601580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f97befc0afcf2bace352f077aea9873c9552fc2e5ab26874f356006fdf9da4ede90600090a35050565b6017546000906001600160a01b0316610ea457601454610f29565b601754604051630c19f2d360e21b81526001600160a01b0390911690633067cb4c90610ed490309060040161248c565b60806040518083038186803b158015610eec57600080fd5b505afa158015610f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2491906123f4565b604001515b90505b90565b82806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f6b57600080fd5b505af1158015610f7f573d6000803e3d6000fd5b505050506040513d6020811015610f9557600080fd5b50516001600160a01b03163314610ff3576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206d757374206265207468652070726f78792061646d696e0000604482015290519081900360640190fd5b60405163623faf6160e01b8152602060048201908152602482018490526001600160a01b0386169163623faf619186918691908190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561106757600080fd5b505af115801561107b573d6000803e3d6000fd5b5050505050505050565b80806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156110c157600080fd5b505af11580156110d5573d6000803e3d6000fd5b505050506040513d60208110156110eb57600080fd5b50516001600160a01b03163314611149576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206d757374206265207468652070726f78792061646d696e0000604482015290519081900360640190fd5b816001600160a01b03166359fc20bb6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561118457600080fd5b505af1158015611198573d6000803e3d6000fd5b505050505050565b6000610f296111ad6114ed565b600d5490611c01565b60125481565b6017546001600160a01b031681565b6111d3611dcc565b6001600160a01b0316336001600160a01b03161461122e576040805162461bcd60e51b815260206004820152601360248201527227b7363c9034b6b83632b6b2b73a30ba34b7b760691b604482015290519081900360640190fd5b6105cf81610d00565b60006112416111a0565b600d81905543600e55905090565b6000611267670de0b6b3a7640000610a348486611b41565b9392505050565b6112977f0000000000000000000000000000000000000000000000000000000000000000611df1565b6112c07f0000000000000000000000000000000000000000000000000000000000000000611df1565b6112e97f0000000000000000000000000000000000000000000000000000000000000000611df1565b6113127f0000000000000000000000000000000000000000000000000000000000000000611df1565b61133b7f0000000000000000000000000000000000000000000000000000000000000000611df1565b6113647f0000000000000000000000000000000000000000000000000000000000000000611df1565b61138d7f0000000000000000000000000000000000000000000000000000000000000000611df1565b565b60003361139a611c75565b6001600160a01b0316816001600160a01b031614806113c657506015546001600160a01b038281169116145b6113e25760405162461bcd60e51b81526004016105fc90612700565b60008060006113f184876118ef565b925092509250826000141561140d57600094505050505061053f565b61141983838884611ef2565b1561142b57600094505050505061053f565b6114336120cc565b6001600160a01b03166340c10f1985856040518363ffffffff1660e01b81526004016114609291906124a0565b600060405180830381600087803b15801561147a57600080fd5b505af115801561148e573d6000803e3d6000fd5b50505050856001600160a01b0316826001600160a01b03167fa111914d7f2ea8beca61d12f1a1f38c5533de5f1823c3936422df4404ac2ec68856040516114d591906124c4565b60405180910390a35090949350505050565b600d5481565b600080611505600e5443611ae490919063ffffffff16565b905080611516576000915050610f2c565b6000611520610e89565b90508061153257600092505050610f2c565b600061153c6120cc565b90506000816001600160a01b03166370a08231611557611ab9565b6040518263ffffffff1660e01b8152600401611573919061248c565b60206040518083038186803b15801561158b57600080fd5b505afa15801561159f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c39190612453565b9050806115d7576000945050505050610f2c565b60006115e38486611b41565b90506115fb82610a3483670de0b6b3a7640000611b41565b9550505050505090565b600090815260116020526040902054151590565b6000818152601060205260408120818061163285610a58565b6003850182905560019094019390935550909392505050565b6000546001600160a01b031681565b61166261171c565b8161167f5760405162461bcd60e51b81526004016105fc906125f4565b6000828152601860205260409020546001600160a01b0390811690821681146116fc5760008381526018602052604080822080546001600160a01b0319166001600160a01b03868116918217909255915191929084169186917f125079be6e3f6efadf63498088ca509edc3835fb416ba13d25649bd1d47d2fa991a45b505050565b6018602052600090815260409020546001600160a01b031681565b60008054906101000a90046001600160a01b03166001600160a01b0316634fc07d756040518163ffffffff1660e01b815260040160206040518083038186803b15801561176857600080fd5b505afa15801561177c573d6000803e3d6000fd5b505050506040513d602081101561179257600080fd5b50516001600160a01b0316331461138d576040805162461bcd60e51b815260206004820152601860248201527f4f6e6c7920436f6e74726f6c6c657220676f7665726e6f720000000000000000604482015290519081900360640190fd5b6117f8611237565b5060148190556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a49061263f565b611835826106bc565b5080156118a25760008281526011602052604090205461189d57600082815260116020526040908190204390819055905183917fe016102b339c3889f4967b491f3381f2c352c8fe3d4f880007807d45b124065a9161189491906124c4565b60405180910390a25b61060f565b6000828152601160205260408082208290555183917fe016102b339c3889f4967b491f3381f2c352c8fe3d4f880007807d45b124065a916118e391906124c4565b60405180910390a25050565b60008060008060008060008060008a6001600160a01b03166355c852698b6040518263ffffffff1660e01b8152600401611929919061248c565b60c06040518083038186803b15801561194157600080fd5b505afa158015611955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119799190612262565b955095509550955095509550600061199085611619565b90508661199e5760006119ac565b6119ac610cdc858584611ca0565b9c959b5093995093975050505050505050565b6000868152601860205260408120546001600160a01b031686158015906119ee57506001600160a01b03811615155b15611aae576119fb6120cc565b6001600160a01b03166340c10f1982896040518363ffffffff1660e01b8152600401611a289291906124a0565b600060405180830381600087803b158015611a4257600080fd5b505af1158015611a56573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b0316897fc65eb6cf0937b3705ec8a3ab7f01707d806f4e42f65a2f06b1143fc30862df5e8a8888604051611aa29392919061275f565b60405180910390a48691505b509695505050505050565b6000610f297f00000000000000000000000000000000000000000000000000000000000000006120f3565b600082821115611b3b576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082611b5057506000610cec565b82820282848281611b5d57fe5b04146112675760405162461bcd60e51b815260040180806020018281038252602181526020018061280e6021913960400191505060405180910390fd5b6000808211611bf0576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381611bf957fe5b049392505050565b600082820183811015611267576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818311611c6b576000611267565b6112678383611ae4565b6000610f297f00000000000000000000000000000000000000000000000000000000000000006120f3565b600080611cad8385611ae4565b9050610a49670de0b6b3a7640000610a348388611b41565b6000546001600160a01b0316331461138d576040805162461bcd60e51b815260206004820152601960248201527f43616c6c6572206d75737420626520436f6e74726f6c6c657200000000000000604482015290519081900360640190fd5b6001600160a01b038116611d78576040805162461bcd60e51b815260206004820152601660248201527510dbdb9d1c9bdb1b195c881b5d5cdd081899481cd95d60521b604482015290519081900360640190fd5b600080546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f4ff638452bbf33c012645d18ae6f05515ff5f2d1dfb0cece8cbf018c60903f709181900360200190a150565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6000805460408051637bb20d2f60e11b81526004810185905290516001600160a01b039092169163f7641a5e91602480820192602092909190829003018186803b158015611e3e57600080fd5b505afa158015611e52573d6000803e3d6000fd5b505050506040513d6020811015611e6857600080fd5b50516000838152600160205260409020549091506001600160a01b0380831691161461060f5760008281526001602090815260409182902080546001600160a01b0319166001600160a01b0385169081179091558251908152915184927fd0e7a942b1fc38c411c4f53d153ba14fd24542a6a35ebacd9b6afca1a154e20692908290030190a25050565b6000611efd82611605565b15611f9057826001600160a01b0316846001600160a01b03167f9b1323a10f3955b1c9c054ffbda78edfdf49998aaf37f61d9f84776b59ac804360405160405180910390a3611f7f7fc0f4a5620db2f97e7c3a4ba7058497eaa0d497538b2666d66bd6932f25345c8886868686604051806020016040528060008152506119bf565b15611f8c575060016106b4565b5060015b6016546001600160a01b03161580159061202757506016546040516366e305fd60e01b81526001600160a01b03909116906366e305fd90611fd590879060040161248c565b60206040518083038186803b158015611fed57600080fd5b505afa158015612001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120259190612246565b155b156106b457826001600160a01b0316846001600160a01b03167fb012e09970916d172f2899bd374aae8d902671bf721e50331e2d57775f90e7478760405161206f91906124c4565b60405180910390a36120b47ffcadc72cad493def76767524554db9da829b6aca9457c0187f63000dba3c943986868686604051806020016040528060008152506119bf565b156120c1575060016106b4565b506001949350505050565b6000610f297f00000000000000000000000000000000000000000000000000000000000000005b6000818152600160205260408120546001600160a01b03168061053c5760005460408051637bb20d2f60e11b81526004810186905290516001600160a01b039092169163f7641a5e91602480820192602092909190829003018186803b15801561215c57600080fd5b505afa158015612170573d6000803e3d6000fd5b505050506040513d602081101561218657600080fd5b50519392505050565b60008083601f8401126121a0578182fd5b50813567ffffffffffffffff8111156121b7578182fd5b6020830191508360208285010111156121cf57600080fd5b9250929050565b6000602082840312156121e7578081fd5b8135611267816127ea565b600060208284031215612203578081fd5b8151611267816127ea565b60008060408385031215612220578081fd5b823561222b816127ea565b9150602083013561223b816127ea565b809150509250929050565b600060208284031215612257578081fd5b8151611267816127ff565b60008060008060008060c0878903121561227a578182fd5b8651612285816127ff565b6020880151909650612296816127ea565b6040880151606089015160808a015160a0909a0151989b929a5090989097909650945092505050565b6000602082840312156122d0578081fd5b5035919050565b600080604083850312156122e9578182fd5b82359150602083013561223b816127ea565b60008060008060608587031215612310578384fd5b843593506020850135612322816127ea565b9250604085013567ffffffffffffffff81111561233d578283fd5b6123498782880161218f565b95989497509550505050565b60008060408385031215612367578182fd5b82359150602083013561223b816127ff565b60006020828403121561238a578081fd5b81356001600160e01b031981168114611267578182fd5b6000806000604084860312156123b5578283fd5b83356123c0816127ea565b9250602084013567ffffffffffffffff8111156123db578283fd5b6123e78682870161218f565b9497909650939450505050565b600060808284031215612405578081fd5b6040516080810181811067ffffffffffffffff8211171561242257fe5b8060405250825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612464578081fd5b5051919050565b6000806040838503121561247d578182fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b6001600160e01b031991909116815260200190565b6020808252601a908201527f7375626772617068417661696c6162696c6974794f7261636c65000000000000604082015260600190565b6020808252602f908201527f43616c6c6572206d75737420626520746865207375626772617068206176616960408201526e6c6162696c697479206f7261636c6560881b606082015260800190565b6020808252601590820152741b5a5b9a5b5d5b54dd5899dc985c1a14da59db985b605a1b604082015260600190565b60208082526037908201527f436f6e747261637420646f6573206e6f7420737570706f72742049526577617260408201527f6473456c69676962696c69747920696e74657266616365000000000000000000606082015260800190565b6020808252602b908201527f43616e6e6f7420736574207265636c61696d206164647265737320666f72202860408201526a627974657333322830292960a81b606082015260800190565b60208082526010908201526f69737375616e6365506572426c6f636b60801b604082015260600190565b60208082526043908201527f436f6e747261637420646f6573206e6f7420737570706f72742049497373756160408201527f6e6365416c6c6f636174696f6e446973747269627574696f6e20696e7465726660608201526261636560e81b608082015260a00190565b6020808252601490820152732737ba1030903932bbb0b932399034b9b9bab2b960611b604082015260600190565b6020808252601f908201527f43616c6c6572206d757374206265206120726577617264732069737375657200604082015260600190565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b600084825260208481840152606060408401528351806060850152825b818110156127985785810183015185820160800152820161277c565b818111156127a95783608083870101525b50601f01601f19169290920160800195945050505050565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b6001600160a01b03811681146105cf57600080fd5b80151581146105cf57600080fdfe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212207419d71079463c2ab6f09756cef155b2ab7c65e9f3f2a7debd98b5b547540fba64736f6c63430007060033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102485760003560e01c8063931c0ac11161013b578063c8a5f81e116100b8578063e820e2841161007c578063e820e2841461049c578063eeac3e0e146104af578063f77c4791146104c2578063fc763657146104ca578063fcb5fa86146104dd57610248565b8063c8a5f81e1461045e578063d6866ea514610471578063db75092614610479578063e242cf1e1461048c578063e284f8481461049457610248565b8063a8cc0ee2116100ff578063a8cc0ee21461042b578063b951acd714610433578063c3e15de11461043b578063c4d66de814610443578063c7d1117d1461045657610248565b8063931c0ac1146103d757806393a90a1e146103ea5780639825545a146103fd5780639ce7abe514610405578063a2594d821461041857610248565b8063365b7f91116101c95780636c080f181161018d5780636c080f1814610380578063702a280e14610388578063779bcb9b146103a95780639006ce8b146103bc57806392eefe9b146103c457610248565b8063365b7f911461031c5780633df8d6821461032f5780634986594f146103375780634bbfc1c51461035a5780635c6cbd591461036d57610248565b80631324a506116102105780631324a506146102bb57806316a84ab2146102ce5780631ab6bff1146102ee5780631d1c2fec14610301578063260582491461031457610248565b806301ffc9a71461024d57806305bb8c6b146102765780630903c0941461028b5780630beff424146102a05780631156bdc1146102a8575b600080fd5b61026061025b366004612379565b6104f0565b60405161026d91906124b9565b60405180910390f35b61027e610544565b60405161026d919061248c565b61029e6102993660046121d6565b610553565b005b61027e6105af565b61029e6102b63660046122bf565b6105be565b61029e6102c9366004612355565b6105d2565b6102e16102dc3660046122bf565b610613565b60405161026d91906124c4565b6102e16102fc3660046122fb565b610625565b6102e161030f3660046122bf565b6106bc565b61027e6106f3565b61029e61032a3660046121d6565b610702565b61029e61081f565b61034a6103453660046122bf565b610827565b60405161026d94939291906127cf565b61029e6103683660046122bf565b61084e565b6102e161037b3660046122bf565b61094a565b6102e1610a52565b61039b6103963660046122bf565b610a58565b60405161026d9291906127c1565b6102e16103b736600461220e565b610bcc565b6102e1610cf2565b61029e6103d23660046121d6565b610cf8565b61029e6103e53660046121d6565b610d09565b61029e6103f83660046121d6565b610e2f565b6102e1610e89565b61029e6104133660046123a1565b610f2f565b61029e6104263660046121d6565b611085565b6102e16111a0565b6102e16111b6565b61027e6111bc565b61029e6104513660046121d6565b6111cb565b6102e1611237565b6102e161046c36600461246b565b61124f565b61029e61126e565b6102e16104873660046121d6565b61138f565b6102e16114e7565b6102e16114ed565b6102606104aa3660046122bf565b611605565b6102e16104bd3660046122bf565b611619565b61027e61164b565b61029e6104d83660046122d7565b61165a565b61027e6104eb3660046122bf565b611701565b60006001600160e01b031982166301ffc9a760e01b148061052157506001600160e01b0319821663aee4dc4360e01b145b8061053c57506001600160e01b0319821663022ee85560e51b145b90505b919050565b600f546001600160a01b031681565b61055b61171c565b600f80546001600160a01b0319166001600160a01b0383161790556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a4906124e2565b60405180910390a150565b6016546001600160a01b031681565b6105c661171c565b6105cf816117f0565b50565b600f546001600160a01b031633146106055760405162461bcd60e51b81526004016105fc90612519565b60405180910390fd5b61060f828261182c565b5050565b60116020526000908152604090205481565b60155460009033906001600160a01b031681146106545760405162461bcd60e51b81526004016105fc906126d2565b600080600061066384896118ef565b9250925092506106ad8984848b858c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119bf92505050565b9450505050505b949350505050565b60006106c6611237565b5060008281526010602052604090206106de8361094a565b808255600d5460029092019190915592915050565b6015546001600160a01b031681565b61070a61171c565b6016546001600160a01b038281169116146105cf576001600160a01b038116156107cd576040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790610761906366e305fd60e01b906004016124cd565b60206040518083038186803b15801561077957600080fd5b505afa15801561078d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b19190612246565b6107cd5760405162461bcd60e51b81526004016105fc90612597565b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f6a6254f061a8ff05f7d86ad3625787bb913090d9758a7495a002a44813d6e44890600090a35050565b6105cf611237565b60106020526000908152604090208054600182015460028301546003909301549192909184565b600f546001600160a01b03163314806108fb575060008054906101000a90046001600160a01b03166001600160a01b0316634fc07d756040518163ffffffff1660e01b815260040160206040518083038186803b1580156108ae57600080fd5b505afa1580156108c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e691906121f2565b6001600160a01b0316336001600160a01b0316145b6109175760405162461bcd60e51b81526004016105fc90612737565b60128190556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a490612568565b600081815260106020526040812061096183611605565b1561096e5754905061053f565b6000610978611ab9565b6001600160a01b03166346e855da856040518263ffffffff1660e01b81526004016109a391906124c4565b60206040518083038186803b1580156109bb57600080fd5b505afa1580156109cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f39190612453565b90506000601254821015610a08576000610a3a565b610a3a670de0b6b3a7640000610a3484610a2e8760020154610a286111a0565b90611ae4565b90611b41565b90611b9a565b8354909150610a499082611c01565b95945050505050565b60145481565b6000818152601060205260408120819081610a728561094a565b90506000610a84828460010154611c5b565b90506000806040518060400160405280610a9c611c75565b6001600160a01b03908116825260155416602090910152905060005b6002811015610b7b576000828260028110610acf57fe5b60200201516001600160a01b031614610b7357818160028110610aee57fe5b60200201516001600160a01b031663e2e1e8e98a6040518263ffffffff1660e01b8152600401610b1e91906124c4565b60206040518083038186803b158015610b3657600080fd5b505afa158015610b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e9190612453565b830192505b600101610ab8565b5081610b9257600084965096505050505050610bc7565b6000610baa83610a3486670de0b6b3a7640000611b41565b6003870154909150610bbc9082611c01565b975093955050505050505b915091565b6000610bd6611c75565b6001600160a01b0316836001600160a01b03161480610c0257506015546001600160a01b038481169116145b610c1e5760405162461bcd60e51b81526004016105fc906126d2565b6000806000806000876001600160a01b03166355c85269886040518263ffffffff1660e01b8152600401610c52919061248c565b60c06040518083038186803b158015610c6a57600080fd5b505afa158015610c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca29190612262565b955095509550955050945084610cc057600095505050505050610cec565b6000610ccb85610a58565b509050610ce3610cdc858584611ca0565b8390611c01565b96505050505050505b92915050565b600e5481565b610d00611cc5565b6105cf81611d24565b610d1161171c565b6017546001600160a01b038281169116146105cf57610d2e611237565b506001600160a01b03811615610ddd576040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790610d7190631e768dff60e21b906004016124cd565b60206040518083038186803b158015610d8957600080fd5b505afa158015610d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc19190612246565b610ddd5760405162461bcd60e51b81526004016105fc90612669565b601780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f01674b69434be290e7c6acef73422bc6cf74884b5228c9e6cab93117eae2cdcb90600090a35050565b610e3761171c565b601580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f97befc0afcf2bace352f077aea9873c9552fc2e5ab26874f356006fdf9da4ede90600090a35050565b6017546000906001600160a01b0316610ea457601454610f29565b601754604051630c19f2d360e21b81526001600160a01b0390911690633067cb4c90610ed490309060040161248c565b60806040518083038186803b158015610eec57600080fd5b505afa158015610f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2491906123f4565b604001515b90505b90565b82806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f6b57600080fd5b505af1158015610f7f573d6000803e3d6000fd5b505050506040513d6020811015610f9557600080fd5b50516001600160a01b03163314610ff3576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206d757374206265207468652070726f78792061646d696e0000604482015290519081900360640190fd5b60405163623faf6160e01b8152602060048201908152602482018490526001600160a01b0386169163623faf619186918691908190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561106757600080fd5b505af115801561107b573d6000803e3d6000fd5b5050505050505050565b80806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156110c157600080fd5b505af11580156110d5573d6000803e3d6000fd5b505050506040513d60208110156110eb57600080fd5b50516001600160a01b03163314611149576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206d757374206265207468652070726f78792061646d696e0000604482015290519081900360640190fd5b816001600160a01b03166359fc20bb6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561118457600080fd5b505af1158015611198573d6000803e3d6000fd5b505050505050565b6000610f296111ad6114ed565b600d5490611c01565b60125481565b6017546001600160a01b031681565b6111d3611dcc565b6001600160a01b0316336001600160a01b03161461122e576040805162461bcd60e51b815260206004820152601360248201527227b7363c9034b6b83632b6b2b73a30ba34b7b760691b604482015290519081900360640190fd5b6105cf81610d00565b60006112416111a0565b600d81905543600e55905090565b6000611267670de0b6b3a7640000610a348486611b41565b9392505050565b6112977f0000000000000000000000000000000000000000000000000000000000000000611df1565b6112c07f0000000000000000000000000000000000000000000000000000000000000000611df1565b6112e97f0000000000000000000000000000000000000000000000000000000000000000611df1565b6113127f0000000000000000000000000000000000000000000000000000000000000000611df1565b61133b7f0000000000000000000000000000000000000000000000000000000000000000611df1565b6113647f0000000000000000000000000000000000000000000000000000000000000000611df1565b61138d7f0000000000000000000000000000000000000000000000000000000000000000611df1565b565b60003361139a611c75565b6001600160a01b0316816001600160a01b031614806113c657506015546001600160a01b038281169116145b6113e25760405162461bcd60e51b81526004016105fc90612700565b60008060006113f184876118ef565b925092509250826000141561140d57600094505050505061053f565b61141983838884611ef2565b1561142b57600094505050505061053f565b6114336120cc565b6001600160a01b03166340c10f1985856040518363ffffffff1660e01b81526004016114609291906124a0565b600060405180830381600087803b15801561147a57600080fd5b505af115801561148e573d6000803e3d6000fd5b50505050856001600160a01b0316826001600160a01b03167fa111914d7f2ea8beca61d12f1a1f38c5533de5f1823c3936422df4404ac2ec68856040516114d591906124c4565b60405180910390a35090949350505050565b600d5481565b600080611505600e5443611ae490919063ffffffff16565b905080611516576000915050610f2c565b6000611520610e89565b90508061153257600092505050610f2c565b600061153c6120cc565b90506000816001600160a01b03166370a08231611557611ab9565b6040518263ffffffff1660e01b8152600401611573919061248c565b60206040518083038186803b15801561158b57600080fd5b505afa15801561159f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c39190612453565b9050806115d7576000945050505050610f2c565b60006115e38486611b41565b90506115fb82610a3483670de0b6b3a7640000611b41565b9550505050505090565b600090815260116020526040902054151590565b6000818152601060205260408120818061163285610a58565b6003850182905560019094019390935550909392505050565b6000546001600160a01b031681565b61166261171c565b8161167f5760405162461bcd60e51b81526004016105fc906125f4565b6000828152601860205260409020546001600160a01b0390811690821681146116fc5760008381526018602052604080822080546001600160a01b0319166001600160a01b03868116918217909255915191929084169186917f125079be6e3f6efadf63498088ca509edc3835fb416ba13d25649bd1d47d2fa991a45b505050565b6018602052600090815260409020546001600160a01b031681565b60008054906101000a90046001600160a01b03166001600160a01b0316634fc07d756040518163ffffffff1660e01b815260040160206040518083038186803b15801561176857600080fd5b505afa15801561177c573d6000803e3d6000fd5b505050506040513d602081101561179257600080fd5b50516001600160a01b0316331461138d576040805162461bcd60e51b815260206004820152601860248201527f4f6e6c7920436f6e74726f6c6c657220676f7665726e6f720000000000000000604482015290519081900360640190fd5b6117f8611237565b5060148190556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a49061263f565b611835826106bc565b5080156118a25760008281526011602052604090205461189d57600082815260116020526040908190204390819055905183917fe016102b339c3889f4967b491f3381f2c352c8fe3d4f880007807d45b124065a9161189491906124c4565b60405180910390a25b61060f565b6000828152601160205260408082208290555183917fe016102b339c3889f4967b491f3381f2c352c8fe3d4f880007807d45b124065a916118e391906124c4565b60405180910390a25050565b60008060008060008060008060008a6001600160a01b03166355c852698b6040518263ffffffff1660e01b8152600401611929919061248c565b60c06040518083038186803b15801561194157600080fd5b505afa158015611955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119799190612262565b955095509550955095509550600061199085611619565b90508661199e5760006119ac565b6119ac610cdc858584611ca0565b9c959b5093995093975050505050505050565b6000868152601860205260408120546001600160a01b031686158015906119ee57506001600160a01b03811615155b15611aae576119fb6120cc565b6001600160a01b03166340c10f1982896040518363ffffffff1660e01b8152600401611a289291906124a0565b600060405180830381600087803b158015611a4257600080fd5b505af1158015611a56573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b0316897fc65eb6cf0937b3705ec8a3ab7f01707d806f4e42f65a2f06b1143fc30862df5e8a8888604051611aa29392919061275f565b60405180910390a48691505b509695505050505050565b6000610f297f00000000000000000000000000000000000000000000000000000000000000006120f3565b600082821115611b3b576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082611b5057506000610cec565b82820282848281611b5d57fe5b04146112675760405162461bcd60e51b815260040180806020018281038252602181526020018061280e6021913960400191505060405180910390fd5b6000808211611bf0576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381611bf957fe5b049392505050565b600082820183811015611267576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818311611c6b576000611267565b6112678383611ae4565b6000610f297f00000000000000000000000000000000000000000000000000000000000000006120f3565b600080611cad8385611ae4565b9050610a49670de0b6b3a7640000610a348388611b41565b6000546001600160a01b0316331461138d576040805162461bcd60e51b815260206004820152601960248201527f43616c6c6572206d75737420626520436f6e74726f6c6c657200000000000000604482015290519081900360640190fd5b6001600160a01b038116611d78576040805162461bcd60e51b815260206004820152601660248201527510dbdb9d1c9bdb1b195c881b5d5cdd081899481cd95d60521b604482015290519081900360640190fd5b600080546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f4ff638452bbf33c012645d18ae6f05515ff5f2d1dfb0cece8cbf018c60903f709181900360200190a150565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6000805460408051637bb20d2f60e11b81526004810185905290516001600160a01b039092169163f7641a5e91602480820192602092909190829003018186803b158015611e3e57600080fd5b505afa158015611e52573d6000803e3d6000fd5b505050506040513d6020811015611e6857600080fd5b50516000838152600160205260409020549091506001600160a01b0380831691161461060f5760008281526001602090815260409182902080546001600160a01b0319166001600160a01b0385169081179091558251908152915184927fd0e7a942b1fc38c411c4f53d153ba14fd24542a6a35ebacd9b6afca1a154e20692908290030190a25050565b6000611efd82611605565b15611f9057826001600160a01b0316846001600160a01b03167f9b1323a10f3955b1c9c054ffbda78edfdf49998aaf37f61d9f84776b59ac804360405160405180910390a3611f7f7fc0f4a5620db2f97e7c3a4ba7058497eaa0d497538b2666d66bd6932f25345c8886868686604051806020016040528060008152506119bf565b15611f8c575060016106b4565b5060015b6016546001600160a01b03161580159061202757506016546040516366e305fd60e01b81526001600160a01b03909116906366e305fd90611fd590879060040161248c565b60206040518083038186803b158015611fed57600080fd5b505afa158015612001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120259190612246565b155b156106b457826001600160a01b0316846001600160a01b03167fb012e09970916d172f2899bd374aae8d902671bf721e50331e2d57775f90e7478760405161206f91906124c4565b60405180910390a36120b47ffcadc72cad493def76767524554db9da829b6aca9457c0187f63000dba3c943986868686604051806020016040528060008152506119bf565b156120c1575060016106b4565b506001949350505050565b6000610f297f00000000000000000000000000000000000000000000000000000000000000005b6000818152600160205260408120546001600160a01b03168061053c5760005460408051637bb20d2f60e11b81526004810186905290516001600160a01b039092169163f7641a5e91602480820192602092909190829003018186803b15801561215c57600080fd5b505afa158015612170573d6000803e3d6000fd5b505050506040513d602081101561218657600080fd5b50519392505050565b60008083601f8401126121a0578182fd5b50813567ffffffffffffffff8111156121b7578182fd5b6020830191508360208285010111156121cf57600080fd5b9250929050565b6000602082840312156121e7578081fd5b8135611267816127ea565b600060208284031215612203578081fd5b8151611267816127ea565b60008060408385031215612220578081fd5b823561222b816127ea565b9150602083013561223b816127ea565b809150509250929050565b600060208284031215612257578081fd5b8151611267816127ff565b60008060008060008060c0878903121561227a578182fd5b8651612285816127ff565b6020880151909650612296816127ea565b6040880151606089015160808a015160a0909a0151989b929a5090989097909650945092505050565b6000602082840312156122d0578081fd5b5035919050565b600080604083850312156122e9578182fd5b82359150602083013561223b816127ea565b60008060008060608587031215612310578384fd5b843593506020850135612322816127ea565b9250604085013567ffffffffffffffff81111561233d578283fd5b6123498782880161218f565b95989497509550505050565b60008060408385031215612367578182fd5b82359150602083013561223b816127ff565b60006020828403121561238a578081fd5b81356001600160e01b031981168114611267578182fd5b6000806000604084860312156123b5578283fd5b83356123c0816127ea565b9250602084013567ffffffffffffffff8111156123db578283fd5b6123e78682870161218f565b9497909650939450505050565b600060808284031215612405578081fd5b6040516080810181811067ffffffffffffffff8211171561242257fe5b8060405250825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612464578081fd5b5051919050565b6000806040838503121561247d578182fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b6001600160e01b031991909116815260200190565b6020808252601a908201527f7375626772617068417661696c6162696c6974794f7261636c65000000000000604082015260600190565b6020808252602f908201527f43616c6c6572206d75737420626520746865207375626772617068206176616960408201526e6c6162696c697479206f7261636c6560881b606082015260800190565b6020808252601590820152741b5a5b9a5b5d5b54dd5899dc985c1a14da59db985b605a1b604082015260600190565b60208082526037908201527f436f6e747261637420646f6573206e6f7420737570706f72742049526577617260408201527f6473456c69676962696c69747920696e74657266616365000000000000000000606082015260800190565b6020808252602b908201527f43616e6e6f7420736574207265636c61696d206164647265737320666f72202860408201526a627974657333322830292960a81b606082015260800190565b60208082526010908201526f69737375616e6365506572426c6f636b60801b604082015260600190565b60208082526043908201527f436f6e747261637420646f6573206e6f7420737570706f72742049497373756160408201527f6e6365416c6c6f636174696f6e446973747269627574696f6e20696e7465726660608201526261636560e81b608082015260a00190565b6020808252601490820152732737ba1030903932bbb0b932399034b9b9bab2b960611b604082015260600190565b6020808252601f908201527f43616c6c6572206d757374206265206120726577617264732069737375657200604082015260600190565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b600084825260208481840152606060408401528351806060850152825b818110156127985785810183015185820160800152820161277c565b818111156127a95783608083870101525b50601f01601f19169290920160800195945050505050565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b6001600160a01b03811681146105cf57600080fd5b80151581146105cf57600080fdfe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212207419d71079463c2ab6f09756cef155b2ab7c65e9f3f2a7debd98b5b547540fba64736f6c63430007060033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/packages/horizon/ignition/deployments/horizon-localhost-upgrade/artifacts/UpgradeRewardsManagerGovernor#upgradeRewardsManagerV3_proxy.json b/packages/horizon/ignition/deployments/horizon-localhost-upgrade/artifacts/UpgradeRewardsManagerGovernor#upgradeRewardsManagerV3_proxy.json new file mode 100644 index 000000000..00711cc86 --- /dev/null +++ b/packages/horizon/ignition/deployments/horizon-localhost-upgrade/artifacts/UpgradeRewardsManagerGovernor#upgradeRewardsManagerV3_proxy.json @@ -0,0 +1,910 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "RewardsManager", + "sourceName": "contracts/rewards/RewardsManager.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "nameHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "contractAddress", + "type": "address" + } + ], + "name": "ContractSynced", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "indexer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "allocationID", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "HorizonRewardsAssigned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldIssuanceAllocator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newIssuanceAllocator", + "type": "address" + } + ], + "name": "IssuanceAllocatorSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "param", + "type": "string" + } + ], + "name": "ParameterUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "reason", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldAddress", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "ReclaimAddressSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "indexer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "allocationID", + "type": "address" + } + ], + "name": "RewardsDenied", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "indexer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "allocationID", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "RewardsDeniedDueToEligibility", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "subgraphDeploymentID", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "sinceBlock", + "type": "uint256" + } + ], + "name": "RewardsDenylistUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRewardsEligibilityOracle", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRewardsEligibilityOracle", + "type": "address" + } + ], + "name": "RewardsEligibilityOracleSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "reason", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "indexer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "allocationID", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "subgraphDeploymentID", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "RewardsReclaimed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "controller", + "type": "address" + } + ], + "name": "SetController", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldSubgraphService", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newSubgraphService", + "type": "address" + } + ], + "name": "SubgraphServiceSet", + "type": "event" + }, + { + "inputs": [], + "name": "accRewardsPerSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "accRewardsPerSignalLastBlockUpdated", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IGraphProxy", + "name": "_proxy", + "type": "address" + } + ], + "name": "acceptProxy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IGraphProxy", + "name": "_proxy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "acceptProxyAndCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "beforeIssuanceAllocationChange", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokens", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_accRewardsPerAllocatedToken", + "type": "uint256" + } + ], + "name": "calcRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "controller", + "outputs": [ + { + "internalType": "contract IController", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "denylist", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "getAccRewardsForSubgraph", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "getAccRewardsPerAllocatedToken", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAccRewardsPerSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getNewRewardsPerSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_rewardsIssuer", + "type": "address" + }, + { + "internalType": "address", + "name": "_allocationID", + "type": "address" + } + ], + "name": "getRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getRewardsIssuancePerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_controller", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "isDenied", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "issuanceAllocator", + "outputs": [ + { + "internalType": "contract IIssuanceAllocationDistribution", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "issuancePerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minimumSubgraphSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "onSubgraphAllocationUpdate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + } + ], + "name": "onSubgraphSignalUpdate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "reclaimAddresses", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "reason", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "allocationID", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "reclaimRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rewardsEligibilityOracle", + "outputs": [ + { + "internalType": "contract IRewardsEligibility", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_controller", + "type": "address" + } + ], + "name": "setController", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_subgraphDeploymentID", + "type": "bytes32" + }, + { + "internalType": "bool", + "name": "_deny", + "type": "bool" + } + ], + "name": "setDenied", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newIssuanceAllocator", + "type": "address" + } + ], + "name": "setIssuanceAllocator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_issuancePerBlock", + "type": "uint256" + } + ], + "name": "setIssuancePerBlock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_minimumSubgraphSignal", + "type": "uint256" + } + ], + "name": "setMinimumSubgraphSignal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "reason", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "setReclaimAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newRewardsEligibilityOracle", + "type": "address" + } + ], + "name": "setRewardsEligibilityOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_subgraphAvailabilityOracle", + "type": "address" + } + ], + "name": "setSubgraphAvailabilityOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_subgraphService", + "type": "address" + } + ], + "name": "setSubgraphService", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "subgraphAvailabilityOracle", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "subgraphService", + "outputs": [ + { + "internalType": "contract IRewardsIssuer", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "subgraphs", + "outputs": [ + { + "internalType": "uint256", + "name": "accRewardsForSubgraph", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accRewardsForSubgraphSnapshot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accRewardsPerSignalSnapshot", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accRewardsPerAllocatedToken", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "syncAllContracts", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_allocationID", + "type": "address" + } + ], + "name": "takeRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "updateAccRewardsPerSignal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6101606040527fe6876326c1291dfcbbd3864a6816d698cd591defc7aa2153d7f9c4c04016c89f6080527fc713c3df6d14cdf946460395d09af88993ee2b948b1a808161494e32c5f6706360a0527f966f1e8d8d8014e05f6ec4a57138da9be1f7c5a7f802928a18072f7c5318076160c0527f1df41cd916959d1163dc8f0671a666ea8a3e434c13e40faef527133b5d16703460e0527f45fc200c7e4544e457d3c5709bfe0d520442c30bbcbdaede89e8d4a4bbc19247610100527fd362cac9cb75c10d67bcc0b7eeb0b1ef48bb5420b556c092d4fd7f758816fcf0610120527f39605a6c26a173774ca666c67ef70cf491880e5d3d6d0ca66ec0a31034f15ea36101405234801561011057600080fd5b5060805160a05160c05160e0516101005161012051610140516128646101736000398061136952508061134052508061131752806120d35250806112ee5280611c7c5250806112c552508061129c5250806112735280611ac052506128646000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c8063931c0ac11161013b578063c8a5f81e116100b8578063e820e2841161007c578063e820e2841461049c578063eeac3e0e146104af578063f77c4791146104c2578063fc763657146104ca578063fcb5fa86146104dd57610248565b8063c8a5f81e1461045e578063d6866ea514610471578063db75092614610479578063e242cf1e1461048c578063e284f8481461049457610248565b8063a8cc0ee2116100ff578063a8cc0ee21461042b578063b951acd714610433578063c3e15de11461043b578063c4d66de814610443578063c7d1117d1461045657610248565b8063931c0ac1146103d757806393a90a1e146103ea5780639825545a146103fd5780639ce7abe514610405578063a2594d821461041857610248565b8063365b7f91116101c95780636c080f181161018d5780636c080f1814610380578063702a280e14610388578063779bcb9b146103a95780639006ce8b146103bc57806392eefe9b146103c457610248565b8063365b7f911461031c5780633df8d6821461032f5780634986594f146103375780634bbfc1c51461035a5780635c6cbd591461036d57610248565b80631324a506116102105780631324a506146102bb57806316a84ab2146102ce5780631ab6bff1146102ee5780631d1c2fec14610301578063260582491461031457610248565b806301ffc9a71461024d57806305bb8c6b146102765780630903c0941461028b5780630beff424146102a05780631156bdc1146102a8575b600080fd5b61026061025b366004612379565b6104f0565b60405161026d91906124b9565b60405180910390f35b61027e610544565b60405161026d919061248c565b61029e6102993660046121d6565b610553565b005b61027e6105af565b61029e6102b63660046122bf565b6105be565b61029e6102c9366004612355565b6105d2565b6102e16102dc3660046122bf565b610613565b60405161026d91906124c4565b6102e16102fc3660046122fb565b610625565b6102e161030f3660046122bf565b6106bc565b61027e6106f3565b61029e61032a3660046121d6565b610702565b61029e61081f565b61034a6103453660046122bf565b610827565b60405161026d94939291906127cf565b61029e6103683660046122bf565b61084e565b6102e161037b3660046122bf565b61094a565b6102e1610a52565b61039b6103963660046122bf565b610a58565b60405161026d9291906127c1565b6102e16103b736600461220e565b610bcc565b6102e1610cf2565b61029e6103d23660046121d6565b610cf8565b61029e6103e53660046121d6565b610d09565b61029e6103f83660046121d6565b610e2f565b6102e1610e89565b61029e6104133660046123a1565b610f2f565b61029e6104263660046121d6565b611085565b6102e16111a0565b6102e16111b6565b61027e6111bc565b61029e6104513660046121d6565b6111cb565b6102e1611237565b6102e161046c36600461246b565b61124f565b61029e61126e565b6102e16104873660046121d6565b61138f565b6102e16114e7565b6102e16114ed565b6102606104aa3660046122bf565b611605565b6102e16104bd3660046122bf565b611619565b61027e61164b565b61029e6104d83660046122d7565b61165a565b61027e6104eb3660046122bf565b611701565b60006001600160e01b031982166301ffc9a760e01b148061052157506001600160e01b0319821663aee4dc4360e01b145b8061053c57506001600160e01b0319821663022ee85560e51b145b90505b919050565b600f546001600160a01b031681565b61055b61171c565b600f80546001600160a01b0319166001600160a01b0383161790556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a4906124e2565b60405180910390a150565b6016546001600160a01b031681565b6105c661171c565b6105cf816117f0565b50565b600f546001600160a01b031633146106055760405162461bcd60e51b81526004016105fc90612519565b60405180910390fd5b61060f828261182c565b5050565b60116020526000908152604090205481565b60155460009033906001600160a01b031681146106545760405162461bcd60e51b81526004016105fc906126d2565b600080600061066384896118ef565b9250925092506106ad8984848b858c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119bf92505050565b9450505050505b949350505050565b60006106c6611237565b5060008281526010602052604090206106de8361094a565b808255600d5460029092019190915592915050565b6015546001600160a01b031681565b61070a61171c565b6016546001600160a01b038281169116146105cf576001600160a01b038116156107cd576040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790610761906366e305fd60e01b906004016124cd565b60206040518083038186803b15801561077957600080fd5b505afa15801561078d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b19190612246565b6107cd5760405162461bcd60e51b81526004016105fc90612597565b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f6a6254f061a8ff05f7d86ad3625787bb913090d9758a7495a002a44813d6e44890600090a35050565b6105cf611237565b60106020526000908152604090208054600182015460028301546003909301549192909184565b600f546001600160a01b03163314806108fb575060008054906101000a90046001600160a01b03166001600160a01b0316634fc07d756040518163ffffffff1660e01b815260040160206040518083038186803b1580156108ae57600080fd5b505afa1580156108c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e691906121f2565b6001600160a01b0316336001600160a01b0316145b6109175760405162461bcd60e51b81526004016105fc90612737565b60128190556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a490612568565b600081815260106020526040812061096183611605565b1561096e5754905061053f565b6000610978611ab9565b6001600160a01b03166346e855da856040518263ffffffff1660e01b81526004016109a391906124c4565b60206040518083038186803b1580156109bb57600080fd5b505afa1580156109cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f39190612453565b90506000601254821015610a08576000610a3a565b610a3a670de0b6b3a7640000610a3484610a2e8760020154610a286111a0565b90611ae4565b90611b41565b90611b9a565b8354909150610a499082611c01565b95945050505050565b60145481565b6000818152601060205260408120819081610a728561094a565b90506000610a84828460010154611c5b565b90506000806040518060400160405280610a9c611c75565b6001600160a01b03908116825260155416602090910152905060005b6002811015610b7b576000828260028110610acf57fe5b60200201516001600160a01b031614610b7357818160028110610aee57fe5b60200201516001600160a01b031663e2e1e8e98a6040518263ffffffff1660e01b8152600401610b1e91906124c4565b60206040518083038186803b158015610b3657600080fd5b505afa158015610b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e9190612453565b830192505b600101610ab8565b5081610b9257600084965096505050505050610bc7565b6000610baa83610a3486670de0b6b3a7640000611b41565b6003870154909150610bbc9082611c01565b975093955050505050505b915091565b6000610bd6611c75565b6001600160a01b0316836001600160a01b03161480610c0257506015546001600160a01b038481169116145b610c1e5760405162461bcd60e51b81526004016105fc906126d2565b6000806000806000876001600160a01b03166355c85269886040518263ffffffff1660e01b8152600401610c52919061248c565b60c06040518083038186803b158015610c6a57600080fd5b505afa158015610c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca29190612262565b955095509550955050945084610cc057600095505050505050610cec565b6000610ccb85610a58565b509050610ce3610cdc858584611ca0565b8390611c01565b96505050505050505b92915050565b600e5481565b610d00611cc5565b6105cf81611d24565b610d1161171c565b6017546001600160a01b038281169116146105cf57610d2e611237565b506001600160a01b03811615610ddd576040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790610d7190631e768dff60e21b906004016124cd565b60206040518083038186803b158015610d8957600080fd5b505afa158015610d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc19190612246565b610ddd5760405162461bcd60e51b81526004016105fc90612669565b601780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f01674b69434be290e7c6acef73422bc6cf74884b5228c9e6cab93117eae2cdcb90600090a35050565b610e3761171c565b601580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f97befc0afcf2bace352f077aea9873c9552fc2e5ab26874f356006fdf9da4ede90600090a35050565b6017546000906001600160a01b0316610ea457601454610f29565b601754604051630c19f2d360e21b81526001600160a01b0390911690633067cb4c90610ed490309060040161248c565b60806040518083038186803b158015610eec57600080fd5b505afa158015610f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2491906123f4565b604001515b90505b90565b82806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f6b57600080fd5b505af1158015610f7f573d6000803e3d6000fd5b505050506040513d6020811015610f9557600080fd5b50516001600160a01b03163314610ff3576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206d757374206265207468652070726f78792061646d696e0000604482015290519081900360640190fd5b60405163623faf6160e01b8152602060048201908152602482018490526001600160a01b0386169163623faf619186918691908190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561106757600080fd5b505af115801561107b573d6000803e3d6000fd5b5050505050505050565b80806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156110c157600080fd5b505af11580156110d5573d6000803e3d6000fd5b505050506040513d60208110156110eb57600080fd5b50516001600160a01b03163314611149576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206d757374206265207468652070726f78792061646d696e0000604482015290519081900360640190fd5b816001600160a01b03166359fc20bb6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561118457600080fd5b505af1158015611198573d6000803e3d6000fd5b505050505050565b6000610f296111ad6114ed565b600d5490611c01565b60125481565b6017546001600160a01b031681565b6111d3611dcc565b6001600160a01b0316336001600160a01b03161461122e576040805162461bcd60e51b815260206004820152601360248201527227b7363c9034b6b83632b6b2b73a30ba34b7b760691b604482015290519081900360640190fd5b6105cf81610d00565b60006112416111a0565b600d81905543600e55905090565b6000611267670de0b6b3a7640000610a348486611b41565b9392505050565b6112977f0000000000000000000000000000000000000000000000000000000000000000611df1565b6112c07f0000000000000000000000000000000000000000000000000000000000000000611df1565b6112e97f0000000000000000000000000000000000000000000000000000000000000000611df1565b6113127f0000000000000000000000000000000000000000000000000000000000000000611df1565b61133b7f0000000000000000000000000000000000000000000000000000000000000000611df1565b6113647f0000000000000000000000000000000000000000000000000000000000000000611df1565b61138d7f0000000000000000000000000000000000000000000000000000000000000000611df1565b565b60003361139a611c75565b6001600160a01b0316816001600160a01b031614806113c657506015546001600160a01b038281169116145b6113e25760405162461bcd60e51b81526004016105fc90612700565b60008060006113f184876118ef565b925092509250826000141561140d57600094505050505061053f565b61141983838884611ef2565b1561142b57600094505050505061053f565b6114336120cc565b6001600160a01b03166340c10f1985856040518363ffffffff1660e01b81526004016114609291906124a0565b600060405180830381600087803b15801561147a57600080fd5b505af115801561148e573d6000803e3d6000fd5b50505050856001600160a01b0316826001600160a01b03167fa111914d7f2ea8beca61d12f1a1f38c5533de5f1823c3936422df4404ac2ec68856040516114d591906124c4565b60405180910390a35090949350505050565b600d5481565b600080611505600e5443611ae490919063ffffffff16565b905080611516576000915050610f2c565b6000611520610e89565b90508061153257600092505050610f2c565b600061153c6120cc565b90506000816001600160a01b03166370a08231611557611ab9565b6040518263ffffffff1660e01b8152600401611573919061248c565b60206040518083038186803b15801561158b57600080fd5b505afa15801561159f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c39190612453565b9050806115d7576000945050505050610f2c565b60006115e38486611b41565b90506115fb82610a3483670de0b6b3a7640000611b41565b9550505050505090565b600090815260116020526040902054151590565b6000818152601060205260408120818061163285610a58565b6003850182905560019094019390935550909392505050565b6000546001600160a01b031681565b61166261171c565b8161167f5760405162461bcd60e51b81526004016105fc906125f4565b6000828152601860205260409020546001600160a01b0390811690821681146116fc5760008381526018602052604080822080546001600160a01b0319166001600160a01b03868116918217909255915191929084169186917f125079be6e3f6efadf63498088ca509edc3835fb416ba13d25649bd1d47d2fa991a45b505050565b6018602052600090815260409020546001600160a01b031681565b60008054906101000a90046001600160a01b03166001600160a01b0316634fc07d756040518163ffffffff1660e01b815260040160206040518083038186803b15801561176857600080fd5b505afa15801561177c573d6000803e3d6000fd5b505050506040513d602081101561179257600080fd5b50516001600160a01b0316331461138d576040805162461bcd60e51b815260206004820152601860248201527f4f6e6c7920436f6e74726f6c6c657220676f7665726e6f720000000000000000604482015290519081900360640190fd5b6117f8611237565b5060148190556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a49061263f565b611835826106bc565b5080156118a25760008281526011602052604090205461189d57600082815260116020526040908190204390819055905183917fe016102b339c3889f4967b491f3381f2c352c8fe3d4f880007807d45b124065a9161189491906124c4565b60405180910390a25b61060f565b6000828152601160205260408082208290555183917fe016102b339c3889f4967b491f3381f2c352c8fe3d4f880007807d45b124065a916118e391906124c4565b60405180910390a25050565b60008060008060008060008060008a6001600160a01b03166355c852698b6040518263ffffffff1660e01b8152600401611929919061248c565b60c06040518083038186803b15801561194157600080fd5b505afa158015611955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119799190612262565b955095509550955095509550600061199085611619565b90508661199e5760006119ac565b6119ac610cdc858584611ca0565b9c959b5093995093975050505050505050565b6000868152601860205260408120546001600160a01b031686158015906119ee57506001600160a01b03811615155b15611aae576119fb6120cc565b6001600160a01b03166340c10f1982896040518363ffffffff1660e01b8152600401611a289291906124a0565b600060405180830381600087803b158015611a4257600080fd5b505af1158015611a56573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b0316897fc65eb6cf0937b3705ec8a3ab7f01707d806f4e42f65a2f06b1143fc30862df5e8a8888604051611aa29392919061275f565b60405180910390a48691505b509695505050505050565b6000610f297f00000000000000000000000000000000000000000000000000000000000000006120f3565b600082821115611b3b576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082611b5057506000610cec565b82820282848281611b5d57fe5b04146112675760405162461bcd60e51b815260040180806020018281038252602181526020018061280e6021913960400191505060405180910390fd5b6000808211611bf0576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381611bf957fe5b049392505050565b600082820183811015611267576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818311611c6b576000611267565b6112678383611ae4565b6000610f297f00000000000000000000000000000000000000000000000000000000000000006120f3565b600080611cad8385611ae4565b9050610a49670de0b6b3a7640000610a348388611b41565b6000546001600160a01b0316331461138d576040805162461bcd60e51b815260206004820152601960248201527f43616c6c6572206d75737420626520436f6e74726f6c6c657200000000000000604482015290519081900360640190fd5b6001600160a01b038116611d78576040805162461bcd60e51b815260206004820152601660248201527510dbdb9d1c9bdb1b195c881b5d5cdd081899481cd95d60521b604482015290519081900360640190fd5b600080546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f4ff638452bbf33c012645d18ae6f05515ff5f2d1dfb0cece8cbf018c60903f709181900360200190a150565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6000805460408051637bb20d2f60e11b81526004810185905290516001600160a01b039092169163f7641a5e91602480820192602092909190829003018186803b158015611e3e57600080fd5b505afa158015611e52573d6000803e3d6000fd5b505050506040513d6020811015611e6857600080fd5b50516000838152600160205260409020549091506001600160a01b0380831691161461060f5760008281526001602090815260409182902080546001600160a01b0319166001600160a01b0385169081179091558251908152915184927fd0e7a942b1fc38c411c4f53d153ba14fd24542a6a35ebacd9b6afca1a154e20692908290030190a25050565b6000611efd82611605565b15611f9057826001600160a01b0316846001600160a01b03167f9b1323a10f3955b1c9c054ffbda78edfdf49998aaf37f61d9f84776b59ac804360405160405180910390a3611f7f7fc0f4a5620db2f97e7c3a4ba7058497eaa0d497538b2666d66bd6932f25345c8886868686604051806020016040528060008152506119bf565b15611f8c575060016106b4565b5060015b6016546001600160a01b03161580159061202757506016546040516366e305fd60e01b81526001600160a01b03909116906366e305fd90611fd590879060040161248c565b60206040518083038186803b158015611fed57600080fd5b505afa158015612001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120259190612246565b155b156106b457826001600160a01b0316846001600160a01b03167fb012e09970916d172f2899bd374aae8d902671bf721e50331e2d57775f90e7478760405161206f91906124c4565b60405180910390a36120b47ffcadc72cad493def76767524554db9da829b6aca9457c0187f63000dba3c943986868686604051806020016040528060008152506119bf565b156120c1575060016106b4565b506001949350505050565b6000610f297f00000000000000000000000000000000000000000000000000000000000000005b6000818152600160205260408120546001600160a01b03168061053c5760005460408051637bb20d2f60e11b81526004810186905290516001600160a01b039092169163f7641a5e91602480820192602092909190829003018186803b15801561215c57600080fd5b505afa158015612170573d6000803e3d6000fd5b505050506040513d602081101561218657600080fd5b50519392505050565b60008083601f8401126121a0578182fd5b50813567ffffffffffffffff8111156121b7578182fd5b6020830191508360208285010111156121cf57600080fd5b9250929050565b6000602082840312156121e7578081fd5b8135611267816127ea565b600060208284031215612203578081fd5b8151611267816127ea565b60008060408385031215612220578081fd5b823561222b816127ea565b9150602083013561223b816127ea565b809150509250929050565b600060208284031215612257578081fd5b8151611267816127ff565b60008060008060008060c0878903121561227a578182fd5b8651612285816127ff565b6020880151909650612296816127ea565b6040880151606089015160808a015160a0909a0151989b929a5090989097909650945092505050565b6000602082840312156122d0578081fd5b5035919050565b600080604083850312156122e9578182fd5b82359150602083013561223b816127ea565b60008060008060608587031215612310578384fd5b843593506020850135612322816127ea565b9250604085013567ffffffffffffffff81111561233d578283fd5b6123498782880161218f565b95989497509550505050565b60008060408385031215612367578182fd5b82359150602083013561223b816127ff565b60006020828403121561238a578081fd5b81356001600160e01b031981168114611267578182fd5b6000806000604084860312156123b5578283fd5b83356123c0816127ea565b9250602084013567ffffffffffffffff8111156123db578283fd5b6123e78682870161218f565b9497909650939450505050565b600060808284031215612405578081fd5b6040516080810181811067ffffffffffffffff8211171561242257fe5b8060405250825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612464578081fd5b5051919050565b6000806040838503121561247d578182fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b6001600160e01b031991909116815260200190565b6020808252601a908201527f7375626772617068417661696c6162696c6974794f7261636c65000000000000604082015260600190565b6020808252602f908201527f43616c6c6572206d75737420626520746865207375626772617068206176616960408201526e6c6162696c697479206f7261636c6560881b606082015260800190565b6020808252601590820152741b5a5b9a5b5d5b54dd5899dc985c1a14da59db985b605a1b604082015260600190565b60208082526037908201527f436f6e747261637420646f6573206e6f7420737570706f72742049526577617260408201527f6473456c69676962696c69747920696e74657266616365000000000000000000606082015260800190565b6020808252602b908201527f43616e6e6f7420736574207265636c61696d206164647265737320666f72202860408201526a627974657333322830292960a81b606082015260800190565b60208082526010908201526f69737375616e6365506572426c6f636b60801b604082015260600190565b60208082526043908201527f436f6e747261637420646f6573206e6f7420737570706f72742049497373756160408201527f6e6365416c6c6f636174696f6e446973747269627574696f6e20696e7465726660608201526261636560e81b608082015260a00190565b6020808252601490820152732737ba1030903932bbb0b932399034b9b9bab2b960611b604082015260600190565b6020808252601f908201527f43616c6c6572206d757374206265206120726577617264732069737375657200604082015260600190565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b600084825260208481840152606060408401528351806060850152825b818110156127985785810183015185820160800152820161277c565b818111156127a95783608083870101525b50601f01601f19169290920160800195945050505050565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b6001600160a01b03811681146105cf57600080fd5b80151581146105cf57600080fdfe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212207419d71079463c2ab6f09756cef155b2ab7c65e9f3f2a7debd98b5b547540fba64736f6c63430007060033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102485760003560e01c8063931c0ac11161013b578063c8a5f81e116100b8578063e820e2841161007c578063e820e2841461049c578063eeac3e0e146104af578063f77c4791146104c2578063fc763657146104ca578063fcb5fa86146104dd57610248565b8063c8a5f81e1461045e578063d6866ea514610471578063db75092614610479578063e242cf1e1461048c578063e284f8481461049457610248565b8063a8cc0ee2116100ff578063a8cc0ee21461042b578063b951acd714610433578063c3e15de11461043b578063c4d66de814610443578063c7d1117d1461045657610248565b8063931c0ac1146103d757806393a90a1e146103ea5780639825545a146103fd5780639ce7abe514610405578063a2594d821461041857610248565b8063365b7f91116101c95780636c080f181161018d5780636c080f1814610380578063702a280e14610388578063779bcb9b146103a95780639006ce8b146103bc57806392eefe9b146103c457610248565b8063365b7f911461031c5780633df8d6821461032f5780634986594f146103375780634bbfc1c51461035a5780635c6cbd591461036d57610248565b80631324a506116102105780631324a506146102bb57806316a84ab2146102ce5780631ab6bff1146102ee5780631d1c2fec14610301578063260582491461031457610248565b806301ffc9a71461024d57806305bb8c6b146102765780630903c0941461028b5780630beff424146102a05780631156bdc1146102a8575b600080fd5b61026061025b366004612379565b6104f0565b60405161026d91906124b9565b60405180910390f35b61027e610544565b60405161026d919061248c565b61029e6102993660046121d6565b610553565b005b61027e6105af565b61029e6102b63660046122bf565b6105be565b61029e6102c9366004612355565b6105d2565b6102e16102dc3660046122bf565b610613565b60405161026d91906124c4565b6102e16102fc3660046122fb565b610625565b6102e161030f3660046122bf565b6106bc565b61027e6106f3565b61029e61032a3660046121d6565b610702565b61029e61081f565b61034a6103453660046122bf565b610827565b60405161026d94939291906127cf565b61029e6103683660046122bf565b61084e565b6102e161037b3660046122bf565b61094a565b6102e1610a52565b61039b6103963660046122bf565b610a58565b60405161026d9291906127c1565b6102e16103b736600461220e565b610bcc565b6102e1610cf2565b61029e6103d23660046121d6565b610cf8565b61029e6103e53660046121d6565b610d09565b61029e6103f83660046121d6565b610e2f565b6102e1610e89565b61029e6104133660046123a1565b610f2f565b61029e6104263660046121d6565b611085565b6102e16111a0565b6102e16111b6565b61027e6111bc565b61029e6104513660046121d6565b6111cb565b6102e1611237565b6102e161046c36600461246b565b61124f565b61029e61126e565b6102e16104873660046121d6565b61138f565b6102e16114e7565b6102e16114ed565b6102606104aa3660046122bf565b611605565b6102e16104bd3660046122bf565b611619565b61027e61164b565b61029e6104d83660046122d7565b61165a565b61027e6104eb3660046122bf565b611701565b60006001600160e01b031982166301ffc9a760e01b148061052157506001600160e01b0319821663aee4dc4360e01b145b8061053c57506001600160e01b0319821663022ee85560e51b145b90505b919050565b600f546001600160a01b031681565b61055b61171c565b600f80546001600160a01b0319166001600160a01b0383161790556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a4906124e2565b60405180910390a150565b6016546001600160a01b031681565b6105c661171c565b6105cf816117f0565b50565b600f546001600160a01b031633146106055760405162461bcd60e51b81526004016105fc90612519565b60405180910390fd5b61060f828261182c565b5050565b60116020526000908152604090205481565b60155460009033906001600160a01b031681146106545760405162461bcd60e51b81526004016105fc906126d2565b600080600061066384896118ef565b9250925092506106ad8984848b858c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119bf92505050565b9450505050505b949350505050565b60006106c6611237565b5060008281526010602052604090206106de8361094a565b808255600d5460029092019190915592915050565b6015546001600160a01b031681565b61070a61171c565b6016546001600160a01b038281169116146105cf576001600160a01b038116156107cd576040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790610761906366e305fd60e01b906004016124cd565b60206040518083038186803b15801561077957600080fd5b505afa15801561078d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b19190612246565b6107cd5760405162461bcd60e51b81526004016105fc90612597565b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f6a6254f061a8ff05f7d86ad3625787bb913090d9758a7495a002a44813d6e44890600090a35050565b6105cf611237565b60106020526000908152604090208054600182015460028301546003909301549192909184565b600f546001600160a01b03163314806108fb575060008054906101000a90046001600160a01b03166001600160a01b0316634fc07d756040518163ffffffff1660e01b815260040160206040518083038186803b1580156108ae57600080fd5b505afa1580156108c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e691906121f2565b6001600160a01b0316336001600160a01b0316145b6109175760405162461bcd60e51b81526004016105fc90612737565b60128190556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a490612568565b600081815260106020526040812061096183611605565b1561096e5754905061053f565b6000610978611ab9565b6001600160a01b03166346e855da856040518263ffffffff1660e01b81526004016109a391906124c4565b60206040518083038186803b1580156109bb57600080fd5b505afa1580156109cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f39190612453565b90506000601254821015610a08576000610a3a565b610a3a670de0b6b3a7640000610a3484610a2e8760020154610a286111a0565b90611ae4565b90611b41565b90611b9a565b8354909150610a499082611c01565b95945050505050565b60145481565b6000818152601060205260408120819081610a728561094a565b90506000610a84828460010154611c5b565b90506000806040518060400160405280610a9c611c75565b6001600160a01b03908116825260155416602090910152905060005b6002811015610b7b576000828260028110610acf57fe5b60200201516001600160a01b031614610b7357818160028110610aee57fe5b60200201516001600160a01b031663e2e1e8e98a6040518263ffffffff1660e01b8152600401610b1e91906124c4565b60206040518083038186803b158015610b3657600080fd5b505afa158015610b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e9190612453565b830192505b600101610ab8565b5081610b9257600084965096505050505050610bc7565b6000610baa83610a3486670de0b6b3a7640000611b41565b6003870154909150610bbc9082611c01565b975093955050505050505b915091565b6000610bd6611c75565b6001600160a01b0316836001600160a01b03161480610c0257506015546001600160a01b038481169116145b610c1e5760405162461bcd60e51b81526004016105fc906126d2565b6000806000806000876001600160a01b03166355c85269886040518263ffffffff1660e01b8152600401610c52919061248c565b60c06040518083038186803b158015610c6a57600080fd5b505afa158015610c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca29190612262565b955095509550955050945084610cc057600095505050505050610cec565b6000610ccb85610a58565b509050610ce3610cdc858584611ca0565b8390611c01565b96505050505050505b92915050565b600e5481565b610d00611cc5565b6105cf81611d24565b610d1161171c565b6017546001600160a01b038281169116146105cf57610d2e611237565b506001600160a01b03811615610ddd576040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790610d7190631e768dff60e21b906004016124cd565b60206040518083038186803b158015610d8957600080fd5b505afa158015610d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc19190612246565b610ddd5760405162461bcd60e51b81526004016105fc90612669565b601780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f01674b69434be290e7c6acef73422bc6cf74884b5228c9e6cab93117eae2cdcb90600090a35050565b610e3761171c565b601580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f97befc0afcf2bace352f077aea9873c9552fc2e5ab26874f356006fdf9da4ede90600090a35050565b6017546000906001600160a01b0316610ea457601454610f29565b601754604051630c19f2d360e21b81526001600160a01b0390911690633067cb4c90610ed490309060040161248c565b60806040518083038186803b158015610eec57600080fd5b505afa158015610f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2491906123f4565b604001515b90505b90565b82806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f6b57600080fd5b505af1158015610f7f573d6000803e3d6000fd5b505050506040513d6020811015610f9557600080fd5b50516001600160a01b03163314610ff3576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206d757374206265207468652070726f78792061646d696e0000604482015290519081900360640190fd5b60405163623faf6160e01b8152602060048201908152602482018490526001600160a01b0386169163623faf619186918691908190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561106757600080fd5b505af115801561107b573d6000803e3d6000fd5b5050505050505050565b80806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156110c157600080fd5b505af11580156110d5573d6000803e3d6000fd5b505050506040513d60208110156110eb57600080fd5b50516001600160a01b03163314611149576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206d757374206265207468652070726f78792061646d696e0000604482015290519081900360640190fd5b816001600160a01b03166359fc20bb6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561118457600080fd5b505af1158015611198573d6000803e3d6000fd5b505050505050565b6000610f296111ad6114ed565b600d5490611c01565b60125481565b6017546001600160a01b031681565b6111d3611dcc565b6001600160a01b0316336001600160a01b03161461122e576040805162461bcd60e51b815260206004820152601360248201527227b7363c9034b6b83632b6b2b73a30ba34b7b760691b604482015290519081900360640190fd5b6105cf81610d00565b60006112416111a0565b600d81905543600e55905090565b6000611267670de0b6b3a7640000610a348486611b41565b9392505050565b6112977f0000000000000000000000000000000000000000000000000000000000000000611df1565b6112c07f0000000000000000000000000000000000000000000000000000000000000000611df1565b6112e97f0000000000000000000000000000000000000000000000000000000000000000611df1565b6113127f0000000000000000000000000000000000000000000000000000000000000000611df1565b61133b7f0000000000000000000000000000000000000000000000000000000000000000611df1565b6113647f0000000000000000000000000000000000000000000000000000000000000000611df1565b61138d7f0000000000000000000000000000000000000000000000000000000000000000611df1565b565b60003361139a611c75565b6001600160a01b0316816001600160a01b031614806113c657506015546001600160a01b038281169116145b6113e25760405162461bcd60e51b81526004016105fc90612700565b60008060006113f184876118ef565b925092509250826000141561140d57600094505050505061053f565b61141983838884611ef2565b1561142b57600094505050505061053f565b6114336120cc565b6001600160a01b03166340c10f1985856040518363ffffffff1660e01b81526004016114609291906124a0565b600060405180830381600087803b15801561147a57600080fd5b505af115801561148e573d6000803e3d6000fd5b50505050856001600160a01b0316826001600160a01b03167fa111914d7f2ea8beca61d12f1a1f38c5533de5f1823c3936422df4404ac2ec68856040516114d591906124c4565b60405180910390a35090949350505050565b600d5481565b600080611505600e5443611ae490919063ffffffff16565b905080611516576000915050610f2c565b6000611520610e89565b90508061153257600092505050610f2c565b600061153c6120cc565b90506000816001600160a01b03166370a08231611557611ab9565b6040518263ffffffff1660e01b8152600401611573919061248c565b60206040518083038186803b15801561158b57600080fd5b505afa15801561159f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c39190612453565b9050806115d7576000945050505050610f2c565b60006115e38486611b41565b90506115fb82610a3483670de0b6b3a7640000611b41565b9550505050505090565b600090815260116020526040902054151590565b6000818152601060205260408120818061163285610a58565b6003850182905560019094019390935550909392505050565b6000546001600160a01b031681565b61166261171c565b8161167f5760405162461bcd60e51b81526004016105fc906125f4565b6000828152601860205260409020546001600160a01b0390811690821681146116fc5760008381526018602052604080822080546001600160a01b0319166001600160a01b03868116918217909255915191929084169186917f125079be6e3f6efadf63498088ca509edc3835fb416ba13d25649bd1d47d2fa991a45b505050565b6018602052600090815260409020546001600160a01b031681565b60008054906101000a90046001600160a01b03166001600160a01b0316634fc07d756040518163ffffffff1660e01b815260040160206040518083038186803b15801561176857600080fd5b505afa15801561177c573d6000803e3d6000fd5b505050506040513d602081101561179257600080fd5b50516001600160a01b0316331461138d576040805162461bcd60e51b815260206004820152601860248201527f4f6e6c7920436f6e74726f6c6c657220676f7665726e6f720000000000000000604482015290519081900360640190fd5b6117f8611237565b5060148190556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a49061263f565b611835826106bc565b5080156118a25760008281526011602052604090205461189d57600082815260116020526040908190204390819055905183917fe016102b339c3889f4967b491f3381f2c352c8fe3d4f880007807d45b124065a9161189491906124c4565b60405180910390a25b61060f565b6000828152601160205260408082208290555183917fe016102b339c3889f4967b491f3381f2c352c8fe3d4f880007807d45b124065a916118e391906124c4565b60405180910390a25050565b60008060008060008060008060008a6001600160a01b03166355c852698b6040518263ffffffff1660e01b8152600401611929919061248c565b60c06040518083038186803b15801561194157600080fd5b505afa158015611955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119799190612262565b955095509550955095509550600061199085611619565b90508661199e5760006119ac565b6119ac610cdc858584611ca0565b9c959b5093995093975050505050505050565b6000868152601860205260408120546001600160a01b031686158015906119ee57506001600160a01b03811615155b15611aae576119fb6120cc565b6001600160a01b03166340c10f1982896040518363ffffffff1660e01b8152600401611a289291906124a0565b600060405180830381600087803b158015611a4257600080fd5b505af1158015611a56573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b0316897fc65eb6cf0937b3705ec8a3ab7f01707d806f4e42f65a2f06b1143fc30862df5e8a8888604051611aa29392919061275f565b60405180910390a48691505b509695505050505050565b6000610f297f00000000000000000000000000000000000000000000000000000000000000006120f3565b600082821115611b3b576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082611b5057506000610cec565b82820282848281611b5d57fe5b04146112675760405162461bcd60e51b815260040180806020018281038252602181526020018061280e6021913960400191505060405180910390fd5b6000808211611bf0576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381611bf957fe5b049392505050565b600082820183811015611267576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818311611c6b576000611267565b6112678383611ae4565b6000610f297f00000000000000000000000000000000000000000000000000000000000000006120f3565b600080611cad8385611ae4565b9050610a49670de0b6b3a7640000610a348388611b41565b6000546001600160a01b0316331461138d576040805162461bcd60e51b815260206004820152601960248201527f43616c6c6572206d75737420626520436f6e74726f6c6c657200000000000000604482015290519081900360640190fd5b6001600160a01b038116611d78576040805162461bcd60e51b815260206004820152601660248201527510dbdb9d1c9bdb1b195c881b5d5cdd081899481cd95d60521b604482015290519081900360640190fd5b600080546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f4ff638452bbf33c012645d18ae6f05515ff5f2d1dfb0cece8cbf018c60903f709181900360200190a150565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6000805460408051637bb20d2f60e11b81526004810185905290516001600160a01b039092169163f7641a5e91602480820192602092909190829003018186803b158015611e3e57600080fd5b505afa158015611e52573d6000803e3d6000fd5b505050506040513d6020811015611e6857600080fd5b50516000838152600160205260409020549091506001600160a01b0380831691161461060f5760008281526001602090815260409182902080546001600160a01b0319166001600160a01b0385169081179091558251908152915184927fd0e7a942b1fc38c411c4f53d153ba14fd24542a6a35ebacd9b6afca1a154e20692908290030190a25050565b6000611efd82611605565b15611f9057826001600160a01b0316846001600160a01b03167f9b1323a10f3955b1c9c054ffbda78edfdf49998aaf37f61d9f84776b59ac804360405160405180910390a3611f7f7fc0f4a5620db2f97e7c3a4ba7058497eaa0d497538b2666d66bd6932f25345c8886868686604051806020016040528060008152506119bf565b15611f8c575060016106b4565b5060015b6016546001600160a01b03161580159061202757506016546040516366e305fd60e01b81526001600160a01b03909116906366e305fd90611fd590879060040161248c565b60206040518083038186803b158015611fed57600080fd5b505afa158015612001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120259190612246565b155b156106b457826001600160a01b0316846001600160a01b03167fb012e09970916d172f2899bd374aae8d902671bf721e50331e2d57775f90e7478760405161206f91906124c4565b60405180910390a36120b47ffcadc72cad493def76767524554db9da829b6aca9457c0187f63000dba3c943986868686604051806020016040528060008152506119bf565b156120c1575060016106b4565b506001949350505050565b6000610f297f00000000000000000000000000000000000000000000000000000000000000005b6000818152600160205260408120546001600160a01b03168061053c5760005460408051637bb20d2f60e11b81526004810186905290516001600160a01b039092169163f7641a5e91602480820192602092909190829003018186803b15801561215c57600080fd5b505afa158015612170573d6000803e3d6000fd5b505050506040513d602081101561218657600080fd5b50519392505050565b60008083601f8401126121a0578182fd5b50813567ffffffffffffffff8111156121b7578182fd5b6020830191508360208285010111156121cf57600080fd5b9250929050565b6000602082840312156121e7578081fd5b8135611267816127ea565b600060208284031215612203578081fd5b8151611267816127ea565b60008060408385031215612220578081fd5b823561222b816127ea565b9150602083013561223b816127ea565b809150509250929050565b600060208284031215612257578081fd5b8151611267816127ff565b60008060008060008060c0878903121561227a578182fd5b8651612285816127ff565b6020880151909650612296816127ea565b6040880151606089015160808a015160a0909a0151989b929a5090989097909650945092505050565b6000602082840312156122d0578081fd5b5035919050565b600080604083850312156122e9578182fd5b82359150602083013561223b816127ea565b60008060008060608587031215612310578384fd5b843593506020850135612322816127ea565b9250604085013567ffffffffffffffff81111561233d578283fd5b6123498782880161218f565b95989497509550505050565b60008060408385031215612367578182fd5b82359150602083013561223b816127ff565b60006020828403121561238a578081fd5b81356001600160e01b031981168114611267578182fd5b6000806000604084860312156123b5578283fd5b83356123c0816127ea565b9250602084013567ffffffffffffffff8111156123db578283fd5b6123e78682870161218f565b9497909650939450505050565b600060808284031215612405578081fd5b6040516080810181811067ffffffffffffffff8211171561242257fe5b8060405250825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612464578081fd5b5051919050565b6000806040838503121561247d578182fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b6001600160e01b031991909116815260200190565b6020808252601a908201527f7375626772617068417661696c6162696c6974794f7261636c65000000000000604082015260600190565b6020808252602f908201527f43616c6c6572206d75737420626520746865207375626772617068206176616960408201526e6c6162696c697479206f7261636c6560881b606082015260800190565b6020808252601590820152741b5a5b9a5b5d5b54dd5899dc985c1a14da59db985b605a1b604082015260600190565b60208082526037908201527f436f6e747261637420646f6573206e6f7420737570706f72742049526577617260408201527f6473456c69676962696c69747920696e74657266616365000000000000000000606082015260800190565b6020808252602b908201527f43616e6e6f7420736574207265636c61696d206164647265737320666f72202860408201526a627974657333322830292960a81b606082015260800190565b60208082526010908201526f69737375616e6365506572426c6f636b60801b604082015260600190565b60208082526043908201527f436f6e747261637420646f6573206e6f7420737570706f72742049497373756160408201527f6e6365416c6c6f636174696f6e446973747269627574696f6e20696e7465726660608201526261636560e81b608082015260a00190565b6020808252601490820152732737ba1030903932bbb0b932399034b9b9bab2b960611b604082015260600190565b6020808252601f908201527f43616c6c6572206d757374206265206120726577617264732069737375657200604082015260600190565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b600084825260208481840152606060408401528351806060850152825b818110156127985785810183015185820160800152820161277c565b818111156127a95783608083870101525b50601f01601f19169290920160800195945050505050565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b6001600160a01b03811681146105cf57600080fd5b80151581146105cf57600080fdfe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212207419d71079463c2ab6f09756cef155b2ab7c65e9f3f2a7debd98b5b547540fba64736f6c63430007060033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/packages/horizon/ignition/deployments/horizon-localhost-upgrade/deployed_addresses.json b/packages/horizon/ignition/deployments/horizon-localhost-upgrade/deployed_addresses.json new file mode 100644 index 000000000..5b9f5cd7c --- /dev/null +++ b/packages/horizon/ignition/deployments/horizon-localhost-upgrade/deployed_addresses.json @@ -0,0 +1,11 @@ +{ + "UpgradeRewardsManagerDeployer#RewardsManagerProxy": "0x1F49caE7669086c8ba53CC35d1E9f80176d67E79", + "UpgradeRewardsManagerDeployer#RewardsManagerV2": "0xB90E09488d99D6b5e08D1E82080801a96c85976a", + "UpgradeRewardsManagerGovernor#GraphProxyAdmin": "0x7474a6cc5fAeDEc620Db0fa8E4da6eD58477042C", + "UpgradeRewardsManagerGovernor#RewardsManagerImplV2": "0xB90E09488d99D6b5e08D1E82080801a96c85976a", + "UpgradeRewardsManagerGovernor#RewardsManagerProxy": "0x1F49caE7669086c8ba53CC35d1E9f80176d67E79", + "UpgradeRewardsManagerGovernor#upgradeRewardsManagerV2_proxy": "0x1F49caE7669086c8ba53CC35d1E9f80176d67E79", + "UpgradeRewardsManagerDeployer#RewardsManagerV3": "0x5842F91bC81b4BfEcDd4C5c90A1001F0f9C70bBB", + "UpgradeRewardsManagerGovernor#RewardsManagerImplV3": "0x5842F91bC81b4BfEcDd4C5c90A1001F0f9C70bBB", + "UpgradeRewardsManagerGovernor#upgradeRewardsManagerV3_proxy": "0x1F49caE7669086c8ba53CC35d1E9f80176d67E79" +} diff --git a/packages/horizon/ignition/deployments/horizon-localhost-upgrade/journal.jsonl b/packages/horizon/ignition/deployments/horizon-localhost-upgrade/journal.jsonl new file mode 100644 index 000000000..1f4749721 --- /dev/null +++ b/packages/horizon/ignition/deployments/horizon-localhost-upgrade/journal.jsonl @@ -0,0 +1,49 @@ + +{"chainId":31337,"type":"DEPLOYMENT_INITIALIZE"} +{"artifactId":"UpgradeRewardsManagerDeployer#RewardsManagerProxy","contractAddress":"0x1F49caE7669086c8ba53CC35d1E9f80176d67E79","contractName":"RewardsManagerProxy","dependencies":[],"futureId":"UpgradeRewardsManagerDeployer#RewardsManagerProxy","futureType":"CONTRACT_AT","strategy":"basic","strategyConfig":{},"type":"CONTRACT_AT_EXECUTION_STATE_INITIALIZE"} +{"artifactId":"UpgradeRewardsManagerDeployer#RewardsManagerV2","constructorArgs":[],"contractName":"RewardsManager","dependencies":[],"from":"0xadE6B8EB69a49B56929C1d4F4b428d791861dB6f","futureId":"UpgradeRewardsManagerDeployer#RewardsManagerV2","futureType":"CONTRACT_DEPLOYMENT","libraries":{},"strategy":"basic","strategyConfig":{},"type":"DEPLOYMENT_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"UpgradeRewardsManagerDeployer#RewardsManagerV2","networkInteraction":{"data":"0x6101606040527fe6876326c1291dfcbbd3864a6816d698cd591defc7aa2153d7f9c4c04016c89f6080527fc713c3df6d14cdf946460395d09af88993ee2b948b1a808161494e32c5f6706360a0527f966f1e8d8d8014e05f6ec4a57138da9be1f7c5a7f802928a18072f7c5318076160c0527f1df41cd916959d1163dc8f0671a666ea8a3e434c13e40faef527133b5d16703460e0527f45fc200c7e4544e457d3c5709bfe0d520442c30bbcbdaede89e8d4a4bbc19247610100527fd362cac9cb75c10d67bcc0b7eeb0b1ef48bb5420b556c092d4fd7f758816fcf0610120527f39605a6c26a173774ca666c67ef70cf491880e5d3d6d0ca66ec0a31034f15ea36101405234801561011057600080fd5b5060805160a05160c05160e0516101005161012051610140516128646101736000398061136952508061134052508061131752806120d35250806112ee5280611c7c5250806112c552508061129c5250806112735280611ac052506128646000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c8063931c0ac11161013b578063c8a5f81e116100b8578063e820e2841161007c578063e820e2841461049c578063eeac3e0e146104af578063f77c4791146104c2578063fc763657146104ca578063fcb5fa86146104dd57610248565b8063c8a5f81e1461045e578063d6866ea514610471578063db75092614610479578063e242cf1e1461048c578063e284f8481461049457610248565b8063a8cc0ee2116100ff578063a8cc0ee21461042b578063b951acd714610433578063c3e15de11461043b578063c4d66de814610443578063c7d1117d1461045657610248565b8063931c0ac1146103d757806393a90a1e146103ea5780639825545a146103fd5780639ce7abe514610405578063a2594d821461041857610248565b8063365b7f91116101c95780636c080f181161018d5780636c080f1814610380578063702a280e14610388578063779bcb9b146103a95780639006ce8b146103bc57806392eefe9b146103c457610248565b8063365b7f911461031c5780633df8d6821461032f5780634986594f146103375780634bbfc1c51461035a5780635c6cbd591461036d57610248565b80631324a506116102105780631324a506146102bb57806316a84ab2146102ce5780631ab6bff1146102ee5780631d1c2fec14610301578063260582491461031457610248565b806301ffc9a71461024d57806305bb8c6b146102765780630903c0941461028b5780630beff424146102a05780631156bdc1146102a8575b600080fd5b61026061025b366004612379565b6104f0565b60405161026d91906124b9565b60405180910390f35b61027e610544565b60405161026d919061248c565b61029e6102993660046121d6565b610553565b005b61027e6105af565b61029e6102b63660046122bf565b6105be565b61029e6102c9366004612355565b6105d2565b6102e16102dc3660046122bf565b610613565b60405161026d91906124c4565b6102e16102fc3660046122fb565b610625565b6102e161030f3660046122bf565b6106bc565b61027e6106f3565b61029e61032a3660046121d6565b610702565b61029e61081f565b61034a6103453660046122bf565b610827565b60405161026d94939291906127cf565b61029e6103683660046122bf565b61084e565b6102e161037b3660046122bf565b61094a565b6102e1610a52565b61039b6103963660046122bf565b610a58565b60405161026d9291906127c1565b6102e16103b736600461220e565b610bcc565b6102e1610cf2565b61029e6103d23660046121d6565b610cf8565b61029e6103e53660046121d6565b610d09565b61029e6103f83660046121d6565b610e2f565b6102e1610e89565b61029e6104133660046123a1565b610f2f565b61029e6104263660046121d6565b611085565b6102e16111a0565b6102e16111b6565b61027e6111bc565b61029e6104513660046121d6565b6111cb565b6102e1611237565b6102e161046c36600461246b565b61124f565b61029e61126e565b6102e16104873660046121d6565b61138f565b6102e16114e7565b6102e16114ed565b6102606104aa3660046122bf565b611605565b6102e16104bd3660046122bf565b611619565b61027e61164b565b61029e6104d83660046122d7565b61165a565b61027e6104eb3660046122bf565b611701565b60006001600160e01b031982166301ffc9a760e01b148061052157506001600160e01b0319821663aee4dc4360e01b145b8061053c57506001600160e01b0319821663022ee85560e51b145b90505b919050565b600f546001600160a01b031681565b61055b61171c565b600f80546001600160a01b0319166001600160a01b0383161790556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a4906124e2565b60405180910390a150565b6016546001600160a01b031681565b6105c661171c565b6105cf816117f0565b50565b600f546001600160a01b031633146106055760405162461bcd60e51b81526004016105fc90612519565b60405180910390fd5b61060f828261182c565b5050565b60116020526000908152604090205481565b60155460009033906001600160a01b031681146106545760405162461bcd60e51b81526004016105fc906126d2565b600080600061066384896118ef565b9250925092506106ad8984848b858c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119bf92505050565b9450505050505b949350505050565b60006106c6611237565b5060008281526010602052604090206106de8361094a565b808255600d5460029092019190915592915050565b6015546001600160a01b031681565b61070a61171c565b6016546001600160a01b038281169116146105cf576001600160a01b038116156107cd576040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790610761906366e305fd60e01b906004016124cd565b60206040518083038186803b15801561077957600080fd5b505afa15801561078d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b19190612246565b6107cd5760405162461bcd60e51b81526004016105fc90612597565b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f6a6254f061a8ff05f7d86ad3625787bb913090d9758a7495a002a44813d6e44890600090a35050565b6105cf611237565b60106020526000908152604090208054600182015460028301546003909301549192909184565b600f546001600160a01b03163314806108fb575060008054906101000a90046001600160a01b03166001600160a01b0316634fc07d756040518163ffffffff1660e01b815260040160206040518083038186803b1580156108ae57600080fd5b505afa1580156108c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e691906121f2565b6001600160a01b0316336001600160a01b0316145b6109175760405162461bcd60e51b81526004016105fc90612737565b60128190556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a490612568565b600081815260106020526040812061096183611605565b1561096e5754905061053f565b6000610978611ab9565b6001600160a01b03166346e855da856040518263ffffffff1660e01b81526004016109a391906124c4565b60206040518083038186803b1580156109bb57600080fd5b505afa1580156109cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f39190612453565b90506000601254821015610a08576000610a3a565b610a3a670de0b6b3a7640000610a3484610a2e8760020154610a286111a0565b90611ae4565b90611b41565b90611b9a565b8354909150610a499082611c01565b95945050505050565b60145481565b6000818152601060205260408120819081610a728561094a565b90506000610a84828460010154611c5b565b90506000806040518060400160405280610a9c611c75565b6001600160a01b03908116825260155416602090910152905060005b6002811015610b7b576000828260028110610acf57fe5b60200201516001600160a01b031614610b7357818160028110610aee57fe5b60200201516001600160a01b031663e2e1e8e98a6040518263ffffffff1660e01b8152600401610b1e91906124c4565b60206040518083038186803b158015610b3657600080fd5b505afa158015610b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e9190612453565b830192505b600101610ab8565b5081610b9257600084965096505050505050610bc7565b6000610baa83610a3486670de0b6b3a7640000611b41565b6003870154909150610bbc9082611c01565b975093955050505050505b915091565b6000610bd6611c75565b6001600160a01b0316836001600160a01b03161480610c0257506015546001600160a01b038481169116145b610c1e5760405162461bcd60e51b81526004016105fc906126d2565b6000806000806000876001600160a01b03166355c85269886040518263ffffffff1660e01b8152600401610c52919061248c565b60c06040518083038186803b158015610c6a57600080fd5b505afa158015610c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca29190612262565b955095509550955050945084610cc057600095505050505050610cec565b6000610ccb85610a58565b509050610ce3610cdc858584611ca0565b8390611c01565b96505050505050505b92915050565b600e5481565b610d00611cc5565b6105cf81611d24565b610d1161171c565b6017546001600160a01b038281169116146105cf57610d2e611237565b506001600160a01b03811615610ddd576040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790610d7190631e768dff60e21b906004016124cd565b60206040518083038186803b158015610d8957600080fd5b505afa158015610d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc19190612246565b610ddd5760405162461bcd60e51b81526004016105fc90612669565b601780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f01674b69434be290e7c6acef73422bc6cf74884b5228c9e6cab93117eae2cdcb90600090a35050565b610e3761171c565b601580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f97befc0afcf2bace352f077aea9873c9552fc2e5ab26874f356006fdf9da4ede90600090a35050565b6017546000906001600160a01b0316610ea457601454610f29565b601754604051630c19f2d360e21b81526001600160a01b0390911690633067cb4c90610ed490309060040161248c565b60806040518083038186803b158015610eec57600080fd5b505afa158015610f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2491906123f4565b604001515b90505b90565b82806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f6b57600080fd5b505af1158015610f7f573d6000803e3d6000fd5b505050506040513d6020811015610f9557600080fd5b50516001600160a01b03163314610ff3576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206d757374206265207468652070726f78792061646d696e0000604482015290519081900360640190fd5b60405163623faf6160e01b8152602060048201908152602482018490526001600160a01b0386169163623faf619186918691908190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561106757600080fd5b505af115801561107b573d6000803e3d6000fd5b5050505050505050565b80806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156110c157600080fd5b505af11580156110d5573d6000803e3d6000fd5b505050506040513d60208110156110eb57600080fd5b50516001600160a01b03163314611149576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206d757374206265207468652070726f78792061646d696e0000604482015290519081900360640190fd5b816001600160a01b03166359fc20bb6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561118457600080fd5b505af1158015611198573d6000803e3d6000fd5b505050505050565b6000610f296111ad6114ed565b600d5490611c01565b60125481565b6017546001600160a01b031681565b6111d3611dcc565b6001600160a01b0316336001600160a01b03161461122e576040805162461bcd60e51b815260206004820152601360248201527227b7363c9034b6b83632b6b2b73a30ba34b7b760691b604482015290519081900360640190fd5b6105cf81610d00565b60006112416111a0565b600d81905543600e55905090565b6000611267670de0b6b3a7640000610a348486611b41565b9392505050565b6112977f0000000000000000000000000000000000000000000000000000000000000000611df1565b6112c07f0000000000000000000000000000000000000000000000000000000000000000611df1565b6112e97f0000000000000000000000000000000000000000000000000000000000000000611df1565b6113127f0000000000000000000000000000000000000000000000000000000000000000611df1565b61133b7f0000000000000000000000000000000000000000000000000000000000000000611df1565b6113647f0000000000000000000000000000000000000000000000000000000000000000611df1565b61138d7f0000000000000000000000000000000000000000000000000000000000000000611df1565b565b60003361139a611c75565b6001600160a01b0316816001600160a01b031614806113c657506015546001600160a01b038281169116145b6113e25760405162461bcd60e51b81526004016105fc90612700565b60008060006113f184876118ef565b925092509250826000141561140d57600094505050505061053f565b61141983838884611ef2565b1561142b57600094505050505061053f565b6114336120cc565b6001600160a01b03166340c10f1985856040518363ffffffff1660e01b81526004016114609291906124a0565b600060405180830381600087803b15801561147a57600080fd5b505af115801561148e573d6000803e3d6000fd5b50505050856001600160a01b0316826001600160a01b03167fa111914d7f2ea8beca61d12f1a1f38c5533de5f1823c3936422df4404ac2ec68856040516114d591906124c4565b60405180910390a35090949350505050565b600d5481565b600080611505600e5443611ae490919063ffffffff16565b905080611516576000915050610f2c565b6000611520610e89565b90508061153257600092505050610f2c565b600061153c6120cc565b90506000816001600160a01b03166370a08231611557611ab9565b6040518263ffffffff1660e01b8152600401611573919061248c565b60206040518083038186803b15801561158b57600080fd5b505afa15801561159f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c39190612453565b9050806115d7576000945050505050610f2c565b60006115e38486611b41565b90506115fb82610a3483670de0b6b3a7640000611b41565b9550505050505090565b600090815260116020526040902054151590565b6000818152601060205260408120818061163285610a58565b6003850182905560019094019390935550909392505050565b6000546001600160a01b031681565b61166261171c565b8161167f5760405162461bcd60e51b81526004016105fc906125f4565b6000828152601860205260409020546001600160a01b0390811690821681146116fc5760008381526018602052604080822080546001600160a01b0319166001600160a01b03868116918217909255915191929084169186917f125079be6e3f6efadf63498088ca509edc3835fb416ba13d25649bd1d47d2fa991a45b505050565b6018602052600090815260409020546001600160a01b031681565b60008054906101000a90046001600160a01b03166001600160a01b0316634fc07d756040518163ffffffff1660e01b815260040160206040518083038186803b15801561176857600080fd5b505afa15801561177c573d6000803e3d6000fd5b505050506040513d602081101561179257600080fd5b50516001600160a01b0316331461138d576040805162461bcd60e51b815260206004820152601860248201527f4f6e6c7920436f6e74726f6c6c657220676f7665726e6f720000000000000000604482015290519081900360640190fd5b6117f8611237565b5060148190556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a49061263f565b611835826106bc565b5080156118a25760008281526011602052604090205461189d57600082815260116020526040908190204390819055905183917fe016102b339c3889f4967b491f3381f2c352c8fe3d4f880007807d45b124065a9161189491906124c4565b60405180910390a25b61060f565b6000828152601160205260408082208290555183917fe016102b339c3889f4967b491f3381f2c352c8fe3d4f880007807d45b124065a916118e391906124c4565b60405180910390a25050565b60008060008060008060008060008a6001600160a01b03166355c852698b6040518263ffffffff1660e01b8152600401611929919061248c565b60c06040518083038186803b15801561194157600080fd5b505afa158015611955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119799190612262565b955095509550955095509550600061199085611619565b90508661199e5760006119ac565b6119ac610cdc858584611ca0565b9c959b5093995093975050505050505050565b6000868152601860205260408120546001600160a01b031686158015906119ee57506001600160a01b03811615155b15611aae576119fb6120cc565b6001600160a01b03166340c10f1982896040518363ffffffff1660e01b8152600401611a289291906124a0565b600060405180830381600087803b158015611a4257600080fd5b505af1158015611a56573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b0316897fc65eb6cf0937b3705ec8a3ab7f01707d806f4e42f65a2f06b1143fc30862df5e8a8888604051611aa29392919061275f565b60405180910390a48691505b509695505050505050565b6000610f297f00000000000000000000000000000000000000000000000000000000000000006120f3565b600082821115611b3b576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082611b5057506000610cec565b82820282848281611b5d57fe5b04146112675760405162461bcd60e51b815260040180806020018281038252602181526020018061280e6021913960400191505060405180910390fd5b6000808211611bf0576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381611bf957fe5b049392505050565b600082820183811015611267576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818311611c6b576000611267565b6112678383611ae4565b6000610f297f00000000000000000000000000000000000000000000000000000000000000006120f3565b600080611cad8385611ae4565b9050610a49670de0b6b3a7640000610a348388611b41565b6000546001600160a01b0316331461138d576040805162461bcd60e51b815260206004820152601960248201527f43616c6c6572206d75737420626520436f6e74726f6c6c657200000000000000604482015290519081900360640190fd5b6001600160a01b038116611d78576040805162461bcd60e51b815260206004820152601660248201527510dbdb9d1c9bdb1b195c881b5d5cdd081899481cd95d60521b604482015290519081900360640190fd5b600080546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f4ff638452bbf33c012645d18ae6f05515ff5f2d1dfb0cece8cbf018c60903f709181900360200190a150565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6000805460408051637bb20d2f60e11b81526004810185905290516001600160a01b039092169163f7641a5e91602480820192602092909190829003018186803b158015611e3e57600080fd5b505afa158015611e52573d6000803e3d6000fd5b505050506040513d6020811015611e6857600080fd5b50516000838152600160205260409020549091506001600160a01b0380831691161461060f5760008281526001602090815260409182902080546001600160a01b0319166001600160a01b0385169081179091558251908152915184927fd0e7a942b1fc38c411c4f53d153ba14fd24542a6a35ebacd9b6afca1a154e20692908290030190a25050565b6000611efd82611605565b15611f9057826001600160a01b0316846001600160a01b03167f9b1323a10f3955b1c9c054ffbda78edfdf49998aaf37f61d9f84776b59ac804360405160405180910390a3611f7f7fc0f4a5620db2f97e7c3a4ba7058497eaa0d497538b2666d66bd6932f25345c8886868686604051806020016040528060008152506119bf565b15611f8c575060016106b4565b5060015b6016546001600160a01b03161580159061202757506016546040516366e305fd60e01b81526001600160a01b03909116906366e305fd90611fd590879060040161248c565b60206040518083038186803b158015611fed57600080fd5b505afa158015612001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120259190612246565b155b156106b457826001600160a01b0316846001600160a01b03167fb012e09970916d172f2899bd374aae8d902671bf721e50331e2d57775f90e7478760405161206f91906124c4565b60405180910390a36120b47ffcadc72cad493def76767524554db9da829b6aca9457c0187f63000dba3c943986868686604051806020016040528060008152506119bf565b156120c1575060016106b4565b506001949350505050565b6000610f297f00000000000000000000000000000000000000000000000000000000000000005b6000818152600160205260408120546001600160a01b03168061053c5760005460408051637bb20d2f60e11b81526004810186905290516001600160a01b039092169163f7641a5e91602480820192602092909190829003018186803b15801561215c57600080fd5b505afa158015612170573d6000803e3d6000fd5b505050506040513d602081101561218657600080fd5b50519392505050565b60008083601f8401126121a0578182fd5b50813567ffffffffffffffff8111156121b7578182fd5b6020830191508360208285010111156121cf57600080fd5b9250929050565b6000602082840312156121e7578081fd5b8135611267816127ea565b600060208284031215612203578081fd5b8151611267816127ea565b60008060408385031215612220578081fd5b823561222b816127ea565b9150602083013561223b816127ea565b809150509250929050565b600060208284031215612257578081fd5b8151611267816127ff565b60008060008060008060c0878903121561227a578182fd5b8651612285816127ff565b6020880151909650612296816127ea565b6040880151606089015160808a015160a0909a0151989b929a5090989097909650945092505050565b6000602082840312156122d0578081fd5b5035919050565b600080604083850312156122e9578182fd5b82359150602083013561223b816127ea565b60008060008060608587031215612310578384fd5b843593506020850135612322816127ea565b9250604085013567ffffffffffffffff81111561233d578283fd5b6123498782880161218f565b95989497509550505050565b60008060408385031215612367578182fd5b82359150602083013561223b816127ff565b60006020828403121561238a578081fd5b81356001600160e01b031981168114611267578182fd5b6000806000604084860312156123b5578283fd5b83356123c0816127ea565b9250602084013567ffffffffffffffff8111156123db578283fd5b6123e78682870161218f565b9497909650939450505050565b600060808284031215612405578081fd5b6040516080810181811067ffffffffffffffff8211171561242257fe5b8060405250825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612464578081fd5b5051919050565b6000806040838503121561247d578182fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b6001600160e01b031991909116815260200190565b6020808252601a908201527f7375626772617068417661696c6162696c6974794f7261636c65000000000000604082015260600190565b6020808252602f908201527f43616c6c6572206d75737420626520746865207375626772617068206176616960408201526e6c6162696c697479206f7261636c6560881b606082015260800190565b6020808252601590820152741b5a5b9a5b5d5b54dd5899dc985c1a14da59db985b605a1b604082015260600190565b60208082526037908201527f436f6e747261637420646f6573206e6f7420737570706f72742049526577617260408201527f6473456c69676962696c69747920696e74657266616365000000000000000000606082015260800190565b6020808252602b908201527f43616e6e6f7420736574207265636c61696d206164647265737320666f72202860408201526a627974657333322830292960a81b606082015260800190565b60208082526010908201526f69737375616e6365506572426c6f636b60801b604082015260600190565b60208082526043908201527f436f6e747261637420646f6573206e6f7420737570706f72742049497373756160408201527f6e6365416c6c6f636174696f6e446973747269627574696f6e20696e7465726660608201526261636560e81b608082015260a00190565b6020808252601490820152732737ba1030903932bbb0b932399034b9b9bab2b960611b604082015260600190565b6020808252601f908201527f43616c6c6572206d757374206265206120726577617264732069737375657200604082015260600190565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b600084825260208481840152606060408401528351806060850152825b818110156127985785810183015185820160800152820161277c565b818111156127a95783608083870101525b50601f01601f19169290920160800195945050505050565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b6001600160a01b03811681146105cf57600080fd5b80151581146105cf57600080fdfe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212207419d71079463c2ab6f09756cef155b2ab7c65e9f3f2a7debd98b5b547540fba64736f6c63430007060033","id":1,"type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} +{"futureId":"UpgradeRewardsManagerDeployer#RewardsManagerV2","networkInteractionId":1,"nonce":1743,"type":"TRANSACTION_PREPARE_SEND"} +{"futureId":"UpgradeRewardsManagerDeployer#RewardsManagerV2","networkInteractionId":1,"nonce":1743,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"1040112000"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"1000000000"}},"hash":"0x33cef7bf9243894913022ca4956fbb0455afaff9d9b39762f3268a239df131aa"},"type":"TRANSACTION_SEND"} +{"futureId":"UpgradeRewardsManagerDeployer#RewardsManagerV2","hash":"0x33cef7bf9243894913022ca4956fbb0455afaff9d9b39762f3268a239df131aa","networkInteractionId":1,"receipt":{"blockHash":"0x09019ef38e4e1934531146b095b6d109a0645fdd195ba29173fa5437d4c8267e","blockNumber":235554160,"contractAddress":"0xB90E09488d99D6b5e08D1E82080801a96c85976a","logs":[],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} +{"futureId":"UpgradeRewardsManagerDeployer#RewardsManagerV2","result":{"address":"0xB90E09488d99D6b5e08D1E82080801a96c85976a","type":"SUCCESS"},"type":"DEPLOYMENT_EXECUTION_STATE_COMPLETE"} +{"artifactId":"UpgradeRewardsManagerGovernor#GraphProxyAdmin","contractAddress":"0x7474a6cc5fAeDEc620Db0fa8E4da6eD58477042C","contractName":"GraphProxyAdmin","dependencies":[],"futureId":"UpgradeRewardsManagerGovernor#GraphProxyAdmin","futureType":"CONTRACT_AT","strategy":"basic","strategyConfig":{},"type":"CONTRACT_AT_EXECUTION_STATE_INITIALIZE"} +{"artifactId":"UpgradeRewardsManagerGovernor#RewardsManagerImplV2","contractAddress":"","contractName":"RewardsManagerImplV2","dependencies":[],"futureId":"UpgradeRewardsManagerGovernor#RewardsManagerImplV2","futureType":"CONTRACT_AT","strategy":"basic","strategyConfig":{},"type":"CONTRACT_AT_EXECUTION_STATE_INITIALIZE"} +{"artifactId":"UpgradeRewardsManagerGovernor#RewardsManagerProxy","contractAddress":"0x1F49caE7669086c8ba53CC35d1E9f80176d67E79","contractName":"RewardsManagerProxy","dependencies":[],"futureId":"UpgradeRewardsManagerGovernor#RewardsManagerProxy","futureType":"CONTRACT_AT","strategy":"basic","strategyConfig":{},"type":"CONTRACT_AT_EXECUTION_STATE_INITIALIZE"} +{"args":["0x1F49caE7669086c8ba53CC35d1E9f80176d67E79",""],"artifactId":"UpgradeRewardsManagerGovernor#GraphProxyAdmin","contractAddress":"0x7474a6cc5fAeDEc620Db0fa8E4da6eD58477042C","dependencies":["UpgradeRewardsManagerGovernor#GraphProxyAdmin","UpgradeRewardsManagerGovernor#RewardsManagerProxy","UpgradeRewardsManagerGovernor#RewardsManagerImplV2"],"from":"0x72ee30d43Fb5A90B3FE983156C5d2fBE6F6d07B3","functionName":"upgrade","futureId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV2_upgrade","strategy":"basic","strategyConfig":{},"type":"CALL_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV2_upgrade","type":"WIPE_APPLY"} +{"futureId":"UpgradeRewardsManagerGovernor#RewardsManagerImplV2","type":"WIPE_APPLY"} +{"artifactId":"UpgradeRewardsManagerGovernor#RewardsManagerImplV2","contractAddress":"0xB90E09488d99D6b5e08D1E82080801a96c85976a","contractName":"RewardsManagerImplV2","dependencies":[],"futureId":"UpgradeRewardsManagerGovernor#RewardsManagerImplV2","futureType":"CONTRACT_AT","strategy":"basic","strategyConfig":{},"type":"CONTRACT_AT_EXECUTION_STATE_INITIALIZE"} +{"args":["0x1F49caE7669086c8ba53CC35d1E9f80176d67E79","0xB90E09488d99D6b5e08D1E82080801a96c85976a"],"artifactId":"UpgradeRewardsManagerGovernor#GraphProxyAdmin","contractAddress":"0x7474a6cc5fAeDEc620Db0fa8E4da6eD58477042C","dependencies":["UpgradeRewardsManagerGovernor#GraphProxyAdmin","UpgradeRewardsManagerGovernor#RewardsManagerProxy","UpgradeRewardsManagerGovernor#RewardsManagerImplV2"],"from":"0x72ee30d43Fb5A90B3FE983156C5d2fBE6F6d07B3","functionName":"upgrade","futureId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV2_upgrade","strategy":"basic","strategyConfig":{},"type":"CALL_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV2_upgrade","networkInteraction":{"data":"0x99a88ec40000000000000000000000001f49cae7669086c8ba53cc35d1e9f80176d67e79000000000000000000000000b90e09488d99d6b5e08d1e82080801a96c85976a","id":1,"to":"0x7474a6cc5fAeDEc620Db0fa8E4da6eD58477042C","type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} +{"futureId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV2_upgrade","networkInteractionId":1,"nonce":126,"type":"TRANSACTION_PREPARE_SEND"} +{"futureId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV2_upgrade","networkInteractionId":1,"nonce":126,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"1035098002"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"1000000000"}},"hash":"0x8b9695cf54bc2de4f7e263b89b7e4ad9c6ef200ad262e3f9146951d2d71c2b82"},"type":"TRANSACTION_SEND"} +{"futureId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV2_upgrade","hash":"0x8b9695cf54bc2de4f7e263b89b7e4ad9c6ef200ad262e3f9146951d2d71c2b82","networkInteractionId":1,"receipt":{"blockHash":"0x6663a300e861d6c8bb4520b3f2c100fe31dd393e9fee3913eac3c97a9bc4dd89","blockNumber":235554161,"logs":[{"address":"0x1F49caE7669086c8ba53CC35d1E9f80176d67E79","data":"0x","logIndex":0,"topics":["0x980c0d30fe97457c47903527d88b7009a1643be6de24d2af664214919f0540a1","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000b90e09488d99d6b5e08d1e82080801a96c85976a"]}],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} +{"futureId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV2_upgrade","result":{"type":"SUCCESS"},"type":"CALL_EXECUTION_STATE_COMPLETE"} +{"args":["0xB90E09488d99D6b5e08D1E82080801a96c85976a","0x1F49caE7669086c8ba53CC35d1E9f80176d67E79"],"artifactId":"UpgradeRewardsManagerGovernor#GraphProxyAdmin","contractAddress":"0x7474a6cc5fAeDEc620Db0fa8E4da6eD58477042C","dependencies":["UpgradeRewardsManagerGovernor#GraphProxyAdmin","UpgradeRewardsManagerGovernor#RewardsManagerImplV2","UpgradeRewardsManagerGovernor#RewardsManagerProxy","UpgradeRewardsManagerGovernor#upgradeRewardsManagerV2_upgrade"],"from":"0x72ee30d43Fb5A90B3FE983156C5d2fBE6F6d07B3","functionName":"acceptProxy","futureId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV2_accept","strategy":"basic","strategyConfig":{},"type":"CALL_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV2_accept","networkInteraction":{"data":"0xeb451a02000000000000000000000000b90e09488d99d6b5e08d1e82080801a96c85976a0000000000000000000000001f49cae7669086c8ba53cc35d1e9f80176d67e79","id":1,"to":"0x7474a6cc5fAeDEc620Db0fa8E4da6eD58477042C","type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} +{"futureId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV2_accept","networkInteractionId":1,"nonce":127,"type":"TRANSACTION_PREPARE_SEND"} +{"futureId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV2_accept","networkInteractionId":1,"nonce":127,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"1031380072"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"1000000000"}},"hash":"0xbee0c06a5bb4daf42076ebc9c06f6d4a6bb6ba63cb086eab53c072737e3eef08"},"type":"TRANSACTION_SEND"} +{"futureId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV2_accept","hash":"0xbee0c06a5bb4daf42076ebc9c06f6d4a6bb6ba63cb086eab53c072737e3eef08","networkInteractionId":1,"receipt":{"blockHash":"0x6c2d9ccc8903e59f4ae74079e44021c138e7d67b94743d9091dc334a431eac5b","blockNumber":235554162,"logs":[{"address":"0x1F49caE7669086c8ba53CC35d1E9f80176d67E79","data":"0x","logIndex":0,"topics":["0xaa3f731066a578e5f39b4215468d826cdd15373cbc0dfc9cb9bdc649718ef7da","0x000000000000000000000000856843f6409a8b3a0d4aae67313037fed02bbbff","0x000000000000000000000000b90e09488d99d6b5e08d1e82080801a96c85976a"]},{"address":"0x1F49caE7669086c8ba53CC35d1E9f80176d67E79","data":"0x","logIndex":1,"topics":["0x980c0d30fe97457c47903527d88b7009a1643be6de24d2af664214919f0540a1","0x000000000000000000000000b90e09488d99d6b5e08d1e82080801a96c85976a","0x0000000000000000000000000000000000000000000000000000000000000000"]}],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} +{"futureId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV2_accept","result":{"type":"SUCCESS"},"type":"CALL_EXECUTION_STATE_COMPLETE"} +{"artifactId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV2_proxy","contractAddress":"0x1F49caE7669086c8ba53CC35d1E9f80176d67E79","contractName":"RewardsManager_ProxyWithABI","dependencies":["UpgradeRewardsManagerGovernor#upgradeRewardsManagerV2_accept","UpgradeRewardsManagerGovernor#RewardsManagerProxy"],"futureId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV2_proxy","futureType":"CONTRACT_AT","strategy":"basic","strategyConfig":{},"type":"CONTRACT_AT_EXECUTION_STATE_INITIALIZE"} +{"artifactId":"UpgradeRewardsManagerDeployer#RewardsManagerV3","constructorArgs":[],"contractName":"RewardsManager","dependencies":[],"from":"0xadE6B8EB69a49B56929C1d4F4b428d791861dB6f","futureId":"UpgradeRewardsManagerDeployer#RewardsManagerV3","futureType":"CONTRACT_DEPLOYMENT","libraries":{},"strategy":"basic","strategyConfig":{},"type":"DEPLOYMENT_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"UpgradeRewardsManagerDeployer#RewardsManagerV3","networkInteraction":{"data":"0x6101606040527fe6876326c1291dfcbbd3864a6816d698cd591defc7aa2153d7f9c4c04016c89f6080527fc713c3df6d14cdf946460395d09af88993ee2b948b1a808161494e32c5f6706360a0527f966f1e8d8d8014e05f6ec4a57138da9be1f7c5a7f802928a18072f7c5318076160c0527f1df41cd916959d1163dc8f0671a666ea8a3e434c13e40faef527133b5d16703460e0527f45fc200c7e4544e457d3c5709bfe0d520442c30bbcbdaede89e8d4a4bbc19247610100527fd362cac9cb75c10d67bcc0b7eeb0b1ef48bb5420b556c092d4fd7f758816fcf0610120527f39605a6c26a173774ca666c67ef70cf491880e5d3d6d0ca66ec0a31034f15ea36101405234801561011057600080fd5b5060805160a05160c05160e0516101005161012051610140516128646101736000398061136952508061134052508061131752806120d35250806112ee5280611c7c5250806112c552508061129c5250806112735280611ac052506128646000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c8063931c0ac11161013b578063c8a5f81e116100b8578063e820e2841161007c578063e820e2841461049c578063eeac3e0e146104af578063f77c4791146104c2578063fc763657146104ca578063fcb5fa86146104dd57610248565b8063c8a5f81e1461045e578063d6866ea514610471578063db75092614610479578063e242cf1e1461048c578063e284f8481461049457610248565b8063a8cc0ee2116100ff578063a8cc0ee21461042b578063b951acd714610433578063c3e15de11461043b578063c4d66de814610443578063c7d1117d1461045657610248565b8063931c0ac1146103d757806393a90a1e146103ea5780639825545a146103fd5780639ce7abe514610405578063a2594d821461041857610248565b8063365b7f91116101c95780636c080f181161018d5780636c080f1814610380578063702a280e14610388578063779bcb9b146103a95780639006ce8b146103bc57806392eefe9b146103c457610248565b8063365b7f911461031c5780633df8d6821461032f5780634986594f146103375780634bbfc1c51461035a5780635c6cbd591461036d57610248565b80631324a506116102105780631324a506146102bb57806316a84ab2146102ce5780631ab6bff1146102ee5780631d1c2fec14610301578063260582491461031457610248565b806301ffc9a71461024d57806305bb8c6b146102765780630903c0941461028b5780630beff424146102a05780631156bdc1146102a8575b600080fd5b61026061025b366004612379565b6104f0565b60405161026d91906124b9565b60405180910390f35b61027e610544565b60405161026d919061248c565b61029e6102993660046121d6565b610553565b005b61027e6105af565b61029e6102b63660046122bf565b6105be565b61029e6102c9366004612355565b6105d2565b6102e16102dc3660046122bf565b610613565b60405161026d91906124c4565b6102e16102fc3660046122fb565b610625565b6102e161030f3660046122bf565b6106bc565b61027e6106f3565b61029e61032a3660046121d6565b610702565b61029e61081f565b61034a6103453660046122bf565b610827565b60405161026d94939291906127cf565b61029e6103683660046122bf565b61084e565b6102e161037b3660046122bf565b61094a565b6102e1610a52565b61039b6103963660046122bf565b610a58565b60405161026d9291906127c1565b6102e16103b736600461220e565b610bcc565b6102e1610cf2565b61029e6103d23660046121d6565b610cf8565b61029e6103e53660046121d6565b610d09565b61029e6103f83660046121d6565b610e2f565b6102e1610e89565b61029e6104133660046123a1565b610f2f565b61029e6104263660046121d6565b611085565b6102e16111a0565b6102e16111b6565b61027e6111bc565b61029e6104513660046121d6565b6111cb565b6102e1611237565b6102e161046c36600461246b565b61124f565b61029e61126e565b6102e16104873660046121d6565b61138f565b6102e16114e7565b6102e16114ed565b6102606104aa3660046122bf565b611605565b6102e16104bd3660046122bf565b611619565b61027e61164b565b61029e6104d83660046122d7565b61165a565b61027e6104eb3660046122bf565b611701565b60006001600160e01b031982166301ffc9a760e01b148061052157506001600160e01b0319821663aee4dc4360e01b145b8061053c57506001600160e01b0319821663022ee85560e51b145b90505b919050565b600f546001600160a01b031681565b61055b61171c565b600f80546001600160a01b0319166001600160a01b0383161790556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a4906124e2565b60405180910390a150565b6016546001600160a01b031681565b6105c661171c565b6105cf816117f0565b50565b600f546001600160a01b031633146106055760405162461bcd60e51b81526004016105fc90612519565b60405180910390fd5b61060f828261182c565b5050565b60116020526000908152604090205481565b60155460009033906001600160a01b031681146106545760405162461bcd60e51b81526004016105fc906126d2565b600080600061066384896118ef565b9250925092506106ad8984848b858c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119bf92505050565b9450505050505b949350505050565b60006106c6611237565b5060008281526010602052604090206106de8361094a565b808255600d5460029092019190915592915050565b6015546001600160a01b031681565b61070a61171c565b6016546001600160a01b038281169116146105cf576001600160a01b038116156107cd576040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790610761906366e305fd60e01b906004016124cd565b60206040518083038186803b15801561077957600080fd5b505afa15801561078d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b19190612246565b6107cd5760405162461bcd60e51b81526004016105fc90612597565b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f6a6254f061a8ff05f7d86ad3625787bb913090d9758a7495a002a44813d6e44890600090a35050565b6105cf611237565b60106020526000908152604090208054600182015460028301546003909301549192909184565b600f546001600160a01b03163314806108fb575060008054906101000a90046001600160a01b03166001600160a01b0316634fc07d756040518163ffffffff1660e01b815260040160206040518083038186803b1580156108ae57600080fd5b505afa1580156108c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e691906121f2565b6001600160a01b0316336001600160a01b0316145b6109175760405162461bcd60e51b81526004016105fc90612737565b60128190556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a490612568565b600081815260106020526040812061096183611605565b1561096e5754905061053f565b6000610978611ab9565b6001600160a01b03166346e855da856040518263ffffffff1660e01b81526004016109a391906124c4565b60206040518083038186803b1580156109bb57600080fd5b505afa1580156109cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f39190612453565b90506000601254821015610a08576000610a3a565b610a3a670de0b6b3a7640000610a3484610a2e8760020154610a286111a0565b90611ae4565b90611b41565b90611b9a565b8354909150610a499082611c01565b95945050505050565b60145481565b6000818152601060205260408120819081610a728561094a565b90506000610a84828460010154611c5b565b90506000806040518060400160405280610a9c611c75565b6001600160a01b03908116825260155416602090910152905060005b6002811015610b7b576000828260028110610acf57fe5b60200201516001600160a01b031614610b7357818160028110610aee57fe5b60200201516001600160a01b031663e2e1e8e98a6040518263ffffffff1660e01b8152600401610b1e91906124c4565b60206040518083038186803b158015610b3657600080fd5b505afa158015610b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e9190612453565b830192505b600101610ab8565b5081610b9257600084965096505050505050610bc7565b6000610baa83610a3486670de0b6b3a7640000611b41565b6003870154909150610bbc9082611c01565b975093955050505050505b915091565b6000610bd6611c75565b6001600160a01b0316836001600160a01b03161480610c0257506015546001600160a01b038481169116145b610c1e5760405162461bcd60e51b81526004016105fc906126d2565b6000806000806000876001600160a01b03166355c85269886040518263ffffffff1660e01b8152600401610c52919061248c565b60c06040518083038186803b158015610c6a57600080fd5b505afa158015610c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca29190612262565b955095509550955050945084610cc057600095505050505050610cec565b6000610ccb85610a58565b509050610ce3610cdc858584611ca0565b8390611c01565b96505050505050505b92915050565b600e5481565b610d00611cc5565b6105cf81611d24565b610d1161171c565b6017546001600160a01b038281169116146105cf57610d2e611237565b506001600160a01b03811615610ddd576040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790610d7190631e768dff60e21b906004016124cd565b60206040518083038186803b158015610d8957600080fd5b505afa158015610d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc19190612246565b610ddd5760405162461bcd60e51b81526004016105fc90612669565b601780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f01674b69434be290e7c6acef73422bc6cf74884b5228c9e6cab93117eae2cdcb90600090a35050565b610e3761171c565b601580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f97befc0afcf2bace352f077aea9873c9552fc2e5ab26874f356006fdf9da4ede90600090a35050565b6017546000906001600160a01b0316610ea457601454610f29565b601754604051630c19f2d360e21b81526001600160a01b0390911690633067cb4c90610ed490309060040161248c565b60806040518083038186803b158015610eec57600080fd5b505afa158015610f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2491906123f4565b604001515b90505b90565b82806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f6b57600080fd5b505af1158015610f7f573d6000803e3d6000fd5b505050506040513d6020811015610f9557600080fd5b50516001600160a01b03163314610ff3576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206d757374206265207468652070726f78792061646d696e0000604482015290519081900360640190fd5b60405163623faf6160e01b8152602060048201908152602482018490526001600160a01b0386169163623faf619186918691908190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561106757600080fd5b505af115801561107b573d6000803e3d6000fd5b5050505050505050565b80806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156110c157600080fd5b505af11580156110d5573d6000803e3d6000fd5b505050506040513d60208110156110eb57600080fd5b50516001600160a01b03163314611149576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206d757374206265207468652070726f78792061646d696e0000604482015290519081900360640190fd5b816001600160a01b03166359fc20bb6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561118457600080fd5b505af1158015611198573d6000803e3d6000fd5b505050505050565b6000610f296111ad6114ed565b600d5490611c01565b60125481565b6017546001600160a01b031681565b6111d3611dcc565b6001600160a01b0316336001600160a01b03161461122e576040805162461bcd60e51b815260206004820152601360248201527227b7363c9034b6b83632b6b2b73a30ba34b7b760691b604482015290519081900360640190fd5b6105cf81610d00565b60006112416111a0565b600d81905543600e55905090565b6000611267670de0b6b3a7640000610a348486611b41565b9392505050565b6112977f0000000000000000000000000000000000000000000000000000000000000000611df1565b6112c07f0000000000000000000000000000000000000000000000000000000000000000611df1565b6112e97f0000000000000000000000000000000000000000000000000000000000000000611df1565b6113127f0000000000000000000000000000000000000000000000000000000000000000611df1565b61133b7f0000000000000000000000000000000000000000000000000000000000000000611df1565b6113647f0000000000000000000000000000000000000000000000000000000000000000611df1565b61138d7f0000000000000000000000000000000000000000000000000000000000000000611df1565b565b60003361139a611c75565b6001600160a01b0316816001600160a01b031614806113c657506015546001600160a01b038281169116145b6113e25760405162461bcd60e51b81526004016105fc90612700565b60008060006113f184876118ef565b925092509250826000141561140d57600094505050505061053f565b61141983838884611ef2565b1561142b57600094505050505061053f565b6114336120cc565b6001600160a01b03166340c10f1985856040518363ffffffff1660e01b81526004016114609291906124a0565b600060405180830381600087803b15801561147a57600080fd5b505af115801561148e573d6000803e3d6000fd5b50505050856001600160a01b0316826001600160a01b03167fa111914d7f2ea8beca61d12f1a1f38c5533de5f1823c3936422df4404ac2ec68856040516114d591906124c4565b60405180910390a35090949350505050565b600d5481565b600080611505600e5443611ae490919063ffffffff16565b905080611516576000915050610f2c565b6000611520610e89565b90508061153257600092505050610f2c565b600061153c6120cc565b90506000816001600160a01b03166370a08231611557611ab9565b6040518263ffffffff1660e01b8152600401611573919061248c565b60206040518083038186803b15801561158b57600080fd5b505afa15801561159f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c39190612453565b9050806115d7576000945050505050610f2c565b60006115e38486611b41565b90506115fb82610a3483670de0b6b3a7640000611b41565b9550505050505090565b600090815260116020526040902054151590565b6000818152601060205260408120818061163285610a58565b6003850182905560019094019390935550909392505050565b6000546001600160a01b031681565b61166261171c565b8161167f5760405162461bcd60e51b81526004016105fc906125f4565b6000828152601860205260409020546001600160a01b0390811690821681146116fc5760008381526018602052604080822080546001600160a01b0319166001600160a01b03868116918217909255915191929084169186917f125079be6e3f6efadf63498088ca509edc3835fb416ba13d25649bd1d47d2fa991a45b505050565b6018602052600090815260409020546001600160a01b031681565b60008054906101000a90046001600160a01b03166001600160a01b0316634fc07d756040518163ffffffff1660e01b815260040160206040518083038186803b15801561176857600080fd5b505afa15801561177c573d6000803e3d6000fd5b505050506040513d602081101561179257600080fd5b50516001600160a01b0316331461138d576040805162461bcd60e51b815260206004820152601860248201527f4f6e6c7920436f6e74726f6c6c657220676f7665726e6f720000000000000000604482015290519081900360640190fd5b6117f8611237565b5060148190556040517f96d5a4b4edf1cefd0900c166d64447f8da1d01d1861a6a60894b5b82a2c15c3c906105a49061263f565b611835826106bc565b5080156118a25760008281526011602052604090205461189d57600082815260116020526040908190204390819055905183917fe016102b339c3889f4967b491f3381f2c352c8fe3d4f880007807d45b124065a9161189491906124c4565b60405180910390a25b61060f565b6000828152601160205260408082208290555183917fe016102b339c3889f4967b491f3381f2c352c8fe3d4f880007807d45b124065a916118e391906124c4565b60405180910390a25050565b60008060008060008060008060008a6001600160a01b03166355c852698b6040518263ffffffff1660e01b8152600401611929919061248c565b60c06040518083038186803b15801561194157600080fd5b505afa158015611955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119799190612262565b955095509550955095509550600061199085611619565b90508661199e5760006119ac565b6119ac610cdc858584611ca0565b9c959b5093995093975050505050505050565b6000868152601860205260408120546001600160a01b031686158015906119ee57506001600160a01b03811615155b15611aae576119fb6120cc565b6001600160a01b03166340c10f1982896040518363ffffffff1660e01b8152600401611a289291906124a0565b600060405180830381600087803b158015611a4257600080fd5b505af1158015611a56573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b0316897fc65eb6cf0937b3705ec8a3ab7f01707d806f4e42f65a2f06b1143fc30862df5e8a8888604051611aa29392919061275f565b60405180910390a48691505b509695505050505050565b6000610f297f00000000000000000000000000000000000000000000000000000000000000006120f3565b600082821115611b3b576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082611b5057506000610cec565b82820282848281611b5d57fe5b04146112675760405162461bcd60e51b815260040180806020018281038252602181526020018061280e6021913960400191505060405180910390fd5b6000808211611bf0576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381611bf957fe5b049392505050565b600082820183811015611267576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818311611c6b576000611267565b6112678383611ae4565b6000610f297f00000000000000000000000000000000000000000000000000000000000000006120f3565b600080611cad8385611ae4565b9050610a49670de0b6b3a7640000610a348388611b41565b6000546001600160a01b0316331461138d576040805162461bcd60e51b815260206004820152601960248201527f43616c6c6572206d75737420626520436f6e74726f6c6c657200000000000000604482015290519081900360640190fd5b6001600160a01b038116611d78576040805162461bcd60e51b815260206004820152601660248201527510dbdb9d1c9bdb1b195c881b5d5cdd081899481cd95d60521b604482015290519081900360640190fd5b600080546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f4ff638452bbf33c012645d18ae6f05515ff5f2d1dfb0cece8cbf018c60903f709181900360200190a150565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6000805460408051637bb20d2f60e11b81526004810185905290516001600160a01b039092169163f7641a5e91602480820192602092909190829003018186803b158015611e3e57600080fd5b505afa158015611e52573d6000803e3d6000fd5b505050506040513d6020811015611e6857600080fd5b50516000838152600160205260409020549091506001600160a01b0380831691161461060f5760008281526001602090815260409182902080546001600160a01b0319166001600160a01b0385169081179091558251908152915184927fd0e7a942b1fc38c411c4f53d153ba14fd24542a6a35ebacd9b6afca1a154e20692908290030190a25050565b6000611efd82611605565b15611f9057826001600160a01b0316846001600160a01b03167f9b1323a10f3955b1c9c054ffbda78edfdf49998aaf37f61d9f84776b59ac804360405160405180910390a3611f7f7fc0f4a5620db2f97e7c3a4ba7058497eaa0d497538b2666d66bd6932f25345c8886868686604051806020016040528060008152506119bf565b15611f8c575060016106b4565b5060015b6016546001600160a01b03161580159061202757506016546040516366e305fd60e01b81526001600160a01b03909116906366e305fd90611fd590879060040161248c565b60206040518083038186803b158015611fed57600080fd5b505afa158015612001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120259190612246565b155b156106b457826001600160a01b0316846001600160a01b03167fb012e09970916d172f2899bd374aae8d902671bf721e50331e2d57775f90e7478760405161206f91906124c4565b60405180910390a36120b47ffcadc72cad493def76767524554db9da829b6aca9457c0187f63000dba3c943986868686604051806020016040528060008152506119bf565b156120c1575060016106b4565b506001949350505050565b6000610f297f00000000000000000000000000000000000000000000000000000000000000005b6000818152600160205260408120546001600160a01b03168061053c5760005460408051637bb20d2f60e11b81526004810186905290516001600160a01b039092169163f7641a5e91602480820192602092909190829003018186803b15801561215c57600080fd5b505afa158015612170573d6000803e3d6000fd5b505050506040513d602081101561218657600080fd5b50519392505050565b60008083601f8401126121a0578182fd5b50813567ffffffffffffffff8111156121b7578182fd5b6020830191508360208285010111156121cf57600080fd5b9250929050565b6000602082840312156121e7578081fd5b8135611267816127ea565b600060208284031215612203578081fd5b8151611267816127ea565b60008060408385031215612220578081fd5b823561222b816127ea565b9150602083013561223b816127ea565b809150509250929050565b600060208284031215612257578081fd5b8151611267816127ff565b60008060008060008060c0878903121561227a578182fd5b8651612285816127ff565b6020880151909650612296816127ea565b6040880151606089015160808a015160a0909a0151989b929a5090989097909650945092505050565b6000602082840312156122d0578081fd5b5035919050565b600080604083850312156122e9578182fd5b82359150602083013561223b816127ea565b60008060008060608587031215612310578384fd5b843593506020850135612322816127ea565b9250604085013567ffffffffffffffff81111561233d578283fd5b6123498782880161218f565b95989497509550505050565b60008060408385031215612367578182fd5b82359150602083013561223b816127ff565b60006020828403121561238a578081fd5b81356001600160e01b031981168114611267578182fd5b6000806000604084860312156123b5578283fd5b83356123c0816127ea565b9250602084013567ffffffffffffffff8111156123db578283fd5b6123e78682870161218f565b9497909650939450505050565b600060808284031215612405578081fd5b6040516080810181811067ffffffffffffffff8211171561242257fe5b8060405250825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b600060208284031215612464578081fd5b5051919050565b6000806040838503121561247d578182fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b6001600160e01b031991909116815260200190565b6020808252601a908201527f7375626772617068417661696c6162696c6974794f7261636c65000000000000604082015260600190565b6020808252602f908201527f43616c6c6572206d75737420626520746865207375626772617068206176616960408201526e6c6162696c697479206f7261636c6560881b606082015260800190565b6020808252601590820152741b5a5b9a5b5d5b54dd5899dc985c1a14da59db985b605a1b604082015260600190565b60208082526037908201527f436f6e747261637420646f6573206e6f7420737570706f72742049526577617260408201527f6473456c69676962696c69747920696e74657266616365000000000000000000606082015260800190565b6020808252602b908201527f43616e6e6f7420736574207265636c61696d206164647265737320666f72202860408201526a627974657333322830292960a81b606082015260800190565b60208082526010908201526f69737375616e6365506572426c6f636b60801b604082015260600190565b60208082526043908201527f436f6e747261637420646f6573206e6f7420737570706f72742049497373756160408201527f6e6365416c6c6f636174696f6e446973747269627574696f6e20696e7465726660608201526261636560e81b608082015260a00190565b6020808252601490820152732737ba1030903932bbb0b932399034b9b9bab2b960611b604082015260600190565b6020808252601f908201527f43616c6c6572206d757374206265206120726577617264732069737375657200604082015260600190565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b600084825260208481840152606060408401528351806060850152825b818110156127985785810183015185820160800152820161277c565b818111156127a95783608083870101525b50601f01601f19169290920160800195945050505050565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b6001600160a01b03811681146105cf57600080fd5b80151581146105cf57600080fdfe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212207419d71079463c2ab6f09756cef155b2ab7c65e9f3f2a7debd98b5b547540fba64736f6c63430007060033","id":1,"type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} +{"futureId":"UpgradeRewardsManagerDeployer#RewardsManagerV3","networkInteractionId":1,"nonce":1744,"type":"TRANSACTION_PREPARE_SEND"} +{"futureId":"UpgradeRewardsManagerDeployer#RewardsManagerV3","networkInteractionId":1,"nonce":1744,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"1027471486"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"1000000000"}},"hash":"0x0cca77baa31a2a864f5c0aad70576b69b7e96b866a6c98894878c2b1cbfa5726"},"type":"TRANSACTION_SEND"} +{"futureId":"UpgradeRewardsManagerDeployer#RewardsManagerV3","hash":"0x0cca77baa31a2a864f5c0aad70576b69b7e96b866a6c98894878c2b1cbfa5726","networkInteractionId":1,"receipt":{"blockHash":"0x33b32b617c6ddb8105019edf8cc6713bb104eec6fb0e9713906697ff705fa22a","blockNumber":235554163,"contractAddress":"0x5842F91bC81b4BfEcDd4C5c90A1001F0f9C70bBB","logs":[],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} +{"futureId":"UpgradeRewardsManagerDeployer#RewardsManagerV3","result":{"address":"0x5842F91bC81b4BfEcDd4C5c90A1001F0f9C70bBB","type":"SUCCESS"},"type":"DEPLOYMENT_EXECUTION_STATE_COMPLETE"} +{"artifactId":"UpgradeRewardsManagerGovernor#RewardsManagerImplV3","contractAddress":"0x5842F91bC81b4BfEcDd4C5c90A1001F0f9C70bBB","contractName":"RewardsManagerImplV3","dependencies":[],"futureId":"UpgradeRewardsManagerGovernor#RewardsManagerImplV3","futureType":"CONTRACT_AT","strategy":"basic","strategyConfig":{},"type":"CONTRACT_AT_EXECUTION_STATE_INITIALIZE"} +{"args":["0x1F49caE7669086c8ba53CC35d1E9f80176d67E79","0x5842F91bC81b4BfEcDd4C5c90A1001F0f9C70bBB"],"artifactId":"UpgradeRewardsManagerGovernor#GraphProxyAdmin","contractAddress":"0x7474a6cc5fAeDEc620Db0fa8E4da6eD58477042C","dependencies":["UpgradeRewardsManagerGovernor#GraphProxyAdmin","UpgradeRewardsManagerGovernor#RewardsManagerProxy","UpgradeRewardsManagerGovernor#RewardsManagerImplV3"],"from":"0x72ee30d43Fb5A90B3FE983156C5d2fBE6F6d07B3","functionName":"upgrade","futureId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV3_upgrade","strategy":"basic","strategyConfig":{},"type":"CALL_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV3_upgrade","networkInteraction":{"data":"0x99a88ec40000000000000000000000001f49cae7669086c8ba53cc35d1e9f80176d67e790000000000000000000000005842f91bc81b4bfecdd4c5c90a1001f0f9c70bbb","id":1,"to":"0x7474a6cc5fAeDEc620Db0fa8E4da6eD58477042C","type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} +{"futureId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV3_upgrade","networkInteractionId":1,"nonce":128,"type":"TRANSACTION_PREPARE_SEND"} +{"futureId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV3_upgrade","networkInteractionId":1,"nonce":128,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"1024047416"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"1000000000"}},"hash":"0xc522808afd055db67727c16f698273276d937b234b6244949f779acbae3dbce3"},"type":"TRANSACTION_SEND"} +{"futureId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV3_upgrade","hash":"0xc522808afd055db67727c16f698273276d937b234b6244949f779acbae3dbce3","networkInteractionId":1,"receipt":{"blockHash":"0xefc3dd15c38ad6733b142e0cf866068c992537d8887c71973e7ece68daa2bac9","blockNumber":235554164,"logs":[{"address":"0x1F49caE7669086c8ba53CC35d1E9f80176d67E79","data":"0x","logIndex":0,"topics":["0x980c0d30fe97457c47903527d88b7009a1643be6de24d2af664214919f0540a1","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000005842f91bc81b4bfecdd4c5c90a1001f0f9c70bbb"]}],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} +{"futureId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV3_upgrade","result":{"type":"SUCCESS"},"type":"CALL_EXECUTION_STATE_COMPLETE"} +{"args":["0x5842F91bC81b4BfEcDd4C5c90A1001F0f9C70bBB","0x1F49caE7669086c8ba53CC35d1E9f80176d67E79"],"artifactId":"UpgradeRewardsManagerGovernor#GraphProxyAdmin","contractAddress":"0x7474a6cc5fAeDEc620Db0fa8E4da6eD58477042C","dependencies":["UpgradeRewardsManagerGovernor#GraphProxyAdmin","UpgradeRewardsManagerGovernor#RewardsManagerImplV3","UpgradeRewardsManagerGovernor#RewardsManagerProxy","UpgradeRewardsManagerGovernor#upgradeRewardsManagerV3_upgrade"],"from":"0x72ee30d43Fb5A90B3FE983156C5d2fBE6F6d07B3","functionName":"acceptProxy","futureId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV3_accept","strategy":"basic","strategyConfig":{},"type":"CALL_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV3_accept","networkInteraction":{"data":"0xeb451a020000000000000000000000005842f91bc81b4bfecdd4c5c90a1001f0f9c70bbb0000000000000000000000001f49cae7669086c8ba53cc35d1e9f80176d67e79","id":1,"to":"0x7474a6cc5fAeDEc620Db0fa8E4da6eD58477042C","type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} +{"futureId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV3_accept","networkInteractionId":1,"nonce":129,"type":"TRANSACTION_PREPARE_SEND"} +{"futureId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV3_accept","networkInteractionId":1,"nonce":129,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"1021500074"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"1000000000"}},"hash":"0x7f5eec4d7e11b23bbf39b03bbfc64acc94580a65f4d5778de7a7debd1801f7bc"},"type":"TRANSACTION_SEND"} +{"futureId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV3_accept","hash":"0x7f5eec4d7e11b23bbf39b03bbfc64acc94580a65f4d5778de7a7debd1801f7bc","networkInteractionId":1,"receipt":{"blockHash":"0x104c2e4068ba0b83e317efad5455247d6c42b2847aaedfbe4801dc04528f5de3","blockNumber":235554165,"logs":[{"address":"0x1F49caE7669086c8ba53CC35d1E9f80176d67E79","data":"0x","logIndex":0,"topics":["0xaa3f731066a578e5f39b4215468d826cdd15373cbc0dfc9cb9bdc649718ef7da","0x000000000000000000000000b90e09488d99d6b5e08d1e82080801a96c85976a","0x0000000000000000000000005842f91bc81b4bfecdd4c5c90a1001f0f9c70bbb"]},{"address":"0x1F49caE7669086c8ba53CC35d1E9f80176d67E79","data":"0x","logIndex":1,"topics":["0x980c0d30fe97457c47903527d88b7009a1643be6de24d2af664214919f0540a1","0x0000000000000000000000005842f91bc81b4bfecdd4c5c90a1001f0f9c70bbb","0x0000000000000000000000000000000000000000000000000000000000000000"]}],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} +{"futureId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV3_accept","result":{"type":"SUCCESS"},"type":"CALL_EXECUTION_STATE_COMPLETE"} +{"artifactId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV3_proxy","contractAddress":"0x1F49caE7669086c8ba53CC35d1E9f80176d67E79","contractName":"RewardsManager_ProxyWithABI","dependencies":["UpgradeRewardsManagerGovernor#upgradeRewardsManagerV3_accept","UpgradeRewardsManagerGovernor#RewardsManagerProxy"],"futureId":"UpgradeRewardsManagerGovernor#upgradeRewardsManagerV3_proxy","futureType":"CONTRACT_AT","strategy":"basic","strategyConfig":{},"type":"CONTRACT_AT_EXECUTION_STATE_INITIALIZE"} \ No newline at end of file diff --git a/packages/horizon/ignition/modules/proxy/GraphProxy.ts b/packages/horizon/ignition/modules/proxy/GraphProxy.ts index f9dc08de9..eb2c42a35 100644 --- a/packages/horizon/ignition/modules/proxy/GraphProxy.ts +++ b/packages/horizon/ignition/modules/proxy/GraphProxy.ts @@ -33,10 +33,15 @@ export function upgradeGraphProxy( metadata: ImplementationMetadata, options?: ContractOptions, ) { - const upgradeCall = m.call(proxyAdmin, 'upgrade', [proxy, implementation], options) - const acceptCall = m.call(proxyAdmin, 'acceptProxy', [implementation, proxy], { ...options, after: [upgradeCall] }) + const baseId = options?.id ?? 'upgradeGraphProxy' + const upgradeCall = m.call(proxyAdmin, 'upgrade', [proxy, implementation], { ...options, id: `${baseId}_upgrade` }) + const acceptCall = m.call(proxyAdmin, 'acceptProxy', [implementation, proxy], { + ...options, + id: `${baseId}_accept`, + after: [upgradeCall], + }) - return loadProxyWithABI(m, proxy, metadata, { ...options, after: [acceptCall] }) + return loadProxyWithABI(m, proxy, metadata, { ...options, id: `${baseId}_proxy`, after: [acceptCall] }) } export function acceptUpgradeGraphProxy( diff --git a/packages/horizon/ignition/modules/upgrades/RewardsManager.ts b/packages/horizon/ignition/modules/upgrades/RewardsManager.ts new file mode 100644 index 000000000..3941d9409 --- /dev/null +++ b/packages/horizon/ignition/modules/upgrades/RewardsManager.ts @@ -0,0 +1,64 @@ +import RewardsManagerArtifact from '@graphprotocol/contracts/artifacts/contracts/rewards/RewardsManager.sol/RewardsManager.json' +import GraphProxyArtifact from '@graphprotocol/contracts/artifacts/contracts/upgrades/GraphProxy.sol/GraphProxy.json' +import GraphProxyAdminArtifact from '@graphprotocol/contracts/artifacts/contracts/upgrades/GraphProxyAdmin.sol/GraphProxyAdmin.json' +import { buildModule } from '@nomicfoundation/ignition-core' + +import { upgradeGraphProxy } from '../proxy/GraphProxy' +import { deployImplementation } from '../proxy/implementation' + +export const UpgradeRewardsManagerDeployerModule = buildModule('UpgradeRewardsManagerDeployer', (m) => { + const rewardsManagerAddress = m.getParameter('rewardsManagerAddress') + const RewardsManagerProxy = m.contractAt('RewardsManagerProxy', GraphProxyArtifact, rewardsManagerAddress) + + deployImplementation( + m, + { + name: 'RewardsManager', + artifact: RewardsManagerArtifact, + }, + { id: 'RewardsManagerV2' }, + ) + + const RewardsManagerV3 = deployImplementation( + m, + { + name: 'RewardsManager', + artifact: RewardsManagerArtifact, + }, + { id: 'RewardsManagerV3' }, + ) + + return { RewardsManagerProxy, Implementation_RewardsManager: RewardsManagerV3 } +}) + +export const UpgradeRewardsManagerGovernorModule = buildModule('UpgradeRewardsManagerGovernor', (m) => { + const rewardsManagerAddress = m.getParameter('rewardsManagerAddress') + const graphProxyAdminAddress = m.getParameter('graphProxyAdminAddress') + + const RewardsManagerProxy = m.contractAt('RewardsManagerProxy', GraphProxyArtifact, rewardsManagerAddress) + const GraphProxyAdmin = m.contractAt('GraphProxyAdmin', GraphProxyAdminArtifact, graphProxyAdminAddress) + + const rewardsManagerV2Address = m.getParameter('rewardsManagerV2Address') + const RewardsManagerImplV2 = m.contractAt('RewardsManagerImplV2', RewardsManagerArtifact, rewardsManagerV2Address) + upgradeGraphProxy( + m, + GraphProxyAdmin, + RewardsManagerProxy, + RewardsManagerImplV2, + { name: 'RewardsManager', artifact: RewardsManagerArtifact }, + { id: 'upgradeRewardsManagerV2' }, + ) + + const rewardsManagerV3Address = m.getParameter('rewardsManagerV3Address') + const RewardsManagerImplV3 = m.contractAt('RewardsManagerImplV3', RewardsManagerArtifact, rewardsManagerV3Address) + const RewardsManagerV3 = upgradeGraphProxy( + m, + GraphProxyAdmin, + RewardsManagerProxy, + RewardsManagerImplV3, + { name: 'RewardsManager', artifact: RewardsManagerArtifact }, + { id: 'upgradeRewardsManagerV3' }, + ) + + return { RewardsManagerV3 } +}) diff --git a/packages/horizon/ignition/modules/upgrades/upgrade.ts b/packages/horizon/ignition/modules/upgrades/upgrade.ts new file mode 100644 index 000000000..8fd58a746 --- /dev/null +++ b/packages/horizon/ignition/modules/upgrades/upgrade.ts @@ -0,0 +1,18 @@ +import { buildModule } from '@nomicfoundation/ignition-core' + +import { UpgradeRewardsManagerDeployerModule, UpgradeRewardsManagerGovernorModule } from './RewardsManager' +// import { UpgradeCurationDeployerModule, UpgradeCurationGovernorModule } from './Curation' + +export const UpgradeDeployerModule = buildModule('GraphHorizon_Upgrade_Deployer', (m) => { + const { RewardsManagerProxy, Implementation_RewardsManager } = m.useModule(UpgradeRewardsManagerDeployerModule) + // const { CurationProxy, Implementation_Curation } = m.useModule(UpgradeCurationDeployerModule) + + return { RewardsManagerProxy, Implementation_RewardsManager } +}) + +export const UpgradeGovernorModule = buildModule('GraphHorizon_Upgrade_Governor', (m) => { + const { RewardsManagerV3 } = m.useModule(UpgradeRewardsManagerGovernorModule) + // const { CurationV3 } = m.useModule(UpgradeCurationGovernorModule) + + return { RewardsManagerV3 } +}) diff --git a/packages/horizon/tasks/deploy.ts b/packages/horizon/tasks/deploy.ts index b928b57d2..3eeba599a 100644 --- a/packages/horizon/tasks/deploy.ts +++ b/packages/horizon/tasks/deploy.ts @@ -135,6 +135,92 @@ task('deploy:migrate', 'Upgrade an existing version of the Graph Protocol v1 to console.log(`\n\nšŸŽ‰ ✨ šŸš€ āœ… Migration step ${step} complete! šŸŽ‰ ✨ šŸš€ āœ…\n`) }) +task('deploy:upgrade', 'Upgrade existing protocol contracts') + .addOptionalParam( + 'upgradeConfig', + 'Name of the upgrade configuration file to use. Format is "upgrade..json5", file must be in the "ignition/configs/" directory. Defaults to network name.', + undefined, + types.string, + ) + .addOptionalParam('step', 'Upgrade step to run (1 or 2)', undefined, types.int) + .addOptionalParam('accountIndex', 'Derivation path index for the account to use', 0, types.int) + .addFlag('patchConfig', 'Patch configuration file using address book values - does not save changes') + .setAction(async (args, hre: HardhatRuntimeEnvironment) => { + const graph = hre.graph() + const step: number = args.step ?? 0 + + // Upgrade step to run + console.log('\n========== Upgrade steps ==========') + const validSteps = [1, 2] + if (!validSteps.includes(step)) { + console.error(`Error: Invalid upgrade step provided: ${step}`) + console.error(`Valid steps are: ${validSteps.join(', ')}`) + process.exit(1) + } + console.log(`Running upgrade step: ${step}`) + + // Load configuration for the upgrade + console.log('\n========== Upgrade configuration ==========') + const { config: UpgradeConfig, file } = loadConfig( + './ignition/configs/', + 'upgrade', + args.upgradeConfig ?? hre.network.name, + ) + console.log(`Loaded upgrade configuration from ${file}`) + + // Display the deployer -- this also triggers the secure accounts prompt if being used + console.log('\n========== Deployer account ==========') + const deployer = await graph.accounts.getDeployer(args.accountIndex) + console.log('Using deployer account:', deployer.address) + const balance = await hre.ethers.provider.getBalance(deployer.address) + console.log('Deployer balance:', hre.ethers.formatEther(balance), 'ETH') + if (balance === 0n) { + console.error('Error: Deployer account has no ETH balance') + process.exit(1) + } + + // Run upgrade step + console.log(`\n========== Running upgrade: step ${step} ==========`) + const { UpgradeDeployerModule, UpgradeGovernorModule } = require('../ignition/modules/upgrades/upgrade') + const UpgradeModule = step === 1 ? UpgradeDeployerModule : UpgradeGovernorModule + + const deployment = await hre.ignition.deploy(UpgradeModule, { + displayUi: true, + parameters: + args.patchConfig && step === 2 ? _patchUpgradeConfig(UpgradeConfig, graph.horizon.addressBook) : UpgradeConfig, + deploymentId: `horizon-${hre.network.name}-upgrade`, + defaultSender: deployer.address, + }) + + // Update address book + console.log('\n========== Updating address book ==========') + // @ts-expect-error - @graphprotocol/toolshed/hardhat exports ts files so types mismatch here + saveToAddressBook(deployment, graph.horizon.addressBook) + console.log(`Address book at ${graph.horizon.addressBook.file} updated!`) + + console.log(`\n\nUpgrade step ${step} complete!\n`) + }) + +function _patchUpgradeConfig( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + config: any, + horizonAddressBook: AddressBook, + // eslint-disable-next-line @typescript-eslint/no-explicit-any +): any { + const RewardsManager = horizonAddressBook.getEntry('RewardsManager') + const latestImpl = RewardsManager.implementation ?? '' + + // Find the first empty version parameter and patch it with the latest implementation address + const versionParams = ['rewardsManagerV2Address', 'rewardsManagerV3Address'] + for (const param of versionParams) { + if (!config.$global[param]) { + return patchConfig(config, { $global: { [param]: latestImpl } }) + } + } + + return config +} + // This function patches the Ignition configuration object using an address book to fill in the gaps // The resulting configuration is not saved back to the configuration file