{
  "_format": "hh-sol-artifact-1",
  "contractName": "SchemeRegistrar",
  "sourceName": "contracts/universalSchemes/SchemeRegistrar.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_avatar",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_intVoteInterface",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_scheme",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_parametersHash",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "_permissions",
          "type": "bytes4"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "_descriptionHash",
          "type": "string"
        }
      ],
      "name": "NewSchemeProposal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_avatar",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "ProposalDeleted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_avatar",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "_param",
          "type": "int256"
        }
      ],
      "name": "ProposalExecuted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_avatar",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_intVoteInterface",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_scheme",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "_descriptionHash",
          "type": "string"
        }
      ],
      "name": "RemoveSchemeProposal",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "_stakingToken",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "balanceOfStakingToken",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "burnReputation",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "internalType": "int256",
          "name": "_param",
          "type": "int256"
        }
      ],
      "name": "executeProposal",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_voteRegisterParams",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_voteRemoveParams",
          "type": "bytes32"
        },
        {
          "internalType": "contract IntVoteInterface",
          "name": "_intVote",
          "type": "address"
        }
      ],
      "name": "getParametersHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "getTotalReputationSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "mintReputation",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "organizationsProposals",
      "outputs": [
        {
          "internalType": "address",
          "name": "scheme",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "addScheme",
          "type": "bool"
        },
        {
          "internalType": "bytes32",
          "name": "parametersHash",
          "type": "bytes32"
        },
        {
          "internalType": "bytes4",
          "name": "permissions",
          "type": "bytes4"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "parameters",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "voteRegisterParams",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "voteRemoveParams",
          "type": "bytes32"
        },
        {
          "internalType": "contract IntVoteInterface",
          "name": "intVote",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "proposalsInfo",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        },
        {
          "internalType": "contract Avatar",
          "name": "avatar",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract Avatar",
          "name": "_avatar",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_scheme",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_parametersHash",
          "type": "bytes32"
        },
        {
          "internalType": "bytes4",
          "name": "_permissions",
          "type": "bytes4"
        },
        {
          "internalType": "string",
          "name": "_descriptionHash",
          "type": "string"
        }
      ],
      "name": "proposeScheme",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract Avatar",
          "name": "_avatar",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_scheme",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "_descriptionHash",
          "type": "string"
        }
      ],
      "name": "proposeToRemoveScheme",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "reputationOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_voteRegisterParams",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_voteRemoveParams",
          "type": "bytes32"
        },
        {
          "internalType": "contract IntVoteInterface",
          "name": "_intVote",
          "type": "address"
        }
      ],
      "name": "setParameters",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "_stakingToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "stakingTokenTransfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50611ca5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80639588378e1161008c578063bea75f2811610066578063bea75f28146103dd578063d29b5d2f14610419578063e7ac593e1461044b578063f81f8bf61461050a576100ea565b80639588378e1461035d5780639d4c162d14610389578063b551c373146103c0576100ea565b80635099e006116100c85780635099e006146101dd57806360bdbb3f146102b25780636b8eb403146102ff578063771822611461032b576100ea565b806302506804146100ef57806306e3a978146101335780630a6687fd14610199575b600080fd5b61010c6004803603602081101561010557600080fd5b503561053c565b6040805193845260208401929092526001600160a01b031682820152519081900360600190f35b61015f6004803603604081101561014957600080fd5b506001600160a01b038135169060200135610565565b604080516001600160a01b0390951685529215156020850152838301919091526001600160e01b0319166060830152519081900360800190f35b6101cb600480360360608110156101af57600080fd5b50803590602081013590604001356001600160a01b03166105a7565b60408051918252519081900360200190f35b6101cb600480360360a08110156101f357600080fd5b6001600160a01b0382358116926020810135909116916040820135916001600160e01b03196060820135169181019060a08101608082013564010000000081111561023d57600080fd5b82018360208201111561024f57600080fd5b8035906020019184600183028401116401000000008311171561027157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506105f6945050505050565b6102de600480360360408110156102c857600080fd5b506001600160a01b03813516906020013561091b565b604080519283526001600160a01b0390911660208301528051918290030190f35b6101cb6004803603604081101561031557600080fd5b506001600160a01b038135169060200135610945565b6101cb6004803603606081101561034157600080fd5b50803590602081013590604001356001600160a01b0316610a05565b6101cb6004803603604081101561037357600080fd5b506001600160a01b038135169060200135610a4d565b6103ac6004803603604081101561039f57600080fd5b5080359060200135610cdf565b604080519115158252519081900360200190f35b6101cb600480360360208110156103d657600080fd5b5035611067565b6103ac600480360360808110156103f357600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356112ef565b6103ac6004803603606081101561042f57600080fd5b508035906001600160a01b036020820135169060400135611491565b6101cb6004803603606081101561046157600080fd5b6001600160a01b03823581169260208101359091169181019060608101604082013564010000000081111561049557600080fd5b8201836020820111156104a757600080fd5b803590602001918460018302840111640100000000831117156104c957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061162a945050505050565b6103ac6004803603606081101561052057600080fd5b508035906001600160a01b03602082013516906040013561189b565b60026020819052600091825260409091208054600182015491909201546001600160a01b031683565b600160208181526000938452604080852090915291835291208054918101546002909101546001600160a01b03831692600160a01b900460ff16919060e01b84565b6000806105b5858585610a05565b6000818152600260208190526040909120878155600181018790550180546001600160a01b0386166001600160a01b03199091161790559150509392505050565b60006001600160a01b03851661064b576040805162461bcd60e51b8152602060048201526015602482015274736368656d652063616e6e6f74206265207a65726f60581b604482015290519081900360640190fd5b610653611c12565b60026000610660896119fc565b815260208082019290925260409081016000908120825160608101845281548082526001830154828701526002928301546001600160a01b039081168387018190528651634439bdaf60e11b8152600481019590955260248501929092523360448501528d166064840152935190955091936388737b5e9260848084019382900301818787803b1580156106f357600080fd5b505af1158015610707573d6000803e3d6000fd5b505050506040513d602081101561071d57600080fd5b50519050610729611c32565b6040518060800160405280896001600160a01b03168152602001600115158152602001888152602001876001600160e01b031916815250905082604001516001600160a01b0316828a6001600160a01b03167fcc9180a05805acc3615b472c3ba00cdc9cd2c6e0e0b3648d60eb58f2c1001b848b8b8b8b60405180856001600160a01b03166001600160a01b03168152602001848152602001836001600160e01b0319166001600160e01b031916815260200180602001828103825283818151815260200191508051906020019080838360005b838110156108155781810151838201526020016107fd565b50505050905090810190601f1680156108425780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a46001600160a01b03808a166000818152600160208181526040808420888552825280842087518154848a01511515600160a01b0260ff60a01b19928a166001600160a01b0319928316179290921691909117825582890151828601556060909801516002909101805460e09290921c63ffffffff1990921691909117905580518082018252438152808301958652988101518616845283825280842088855290915290912095518655905194018054949091169390911692909217909155905095945050505050565b6000602081815292815260408082209093529081522080546001909101546001600160a01b031682565b336000908152602081815260408083208484529091528120600101546001600160a01b0316806109795760009150506109ff565b836001600160a01b03166370a08231826040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156109cf57600080fd5b505afa1580156109e3573d6000803e3d6000fd5b505050506040513d60208110156109f957600080fd5b50519150505b92915050565b6040805160208082019590955280820193909352606091821b6bffffffffffffffffffffffff1916918301919091528051808303605401815260749092019052805191012090565b336000908152602081815260408083208484528252808320600101548151638da5cb5b60e01b8152915185936001600160a01b03909216928392638da5cb5b92600480840193829003018186803b158015610aa757600080fd5b505afa158015610abb573d6000803e3d6000fd5b505050506040513d6020811015610ad157600080fd5b505160408051639be2faed60e01b81523060048201526001600160a01b03848116602483015291519190921691639be2faed916044808301926020929190829003018186803b158015610b2357600080fd5b505afa158015610b37573d6000803e3d6000fd5b505050506040513d6020811015610b4d57600080fd5b5051610b9b576040805162461bcd60e51b81526020600482015260186024820152771cd8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b610ba3611c59565b5033600090815260208181526040808320878452825291829020825180840190935280548352600101546001600160a01b0316908201819052610bea576000935050610cd7565b80602001516001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b158015610c2757600080fd5b505afa158015610c3b573d6000803e3d6000fd5b505050506040513d6020811015610c5157600080fd5b505181516040805163277166bf60e11b81526001600160a01b038a81166004830152602482019390935290519190921691634ee2cd7e916044808301926020929190829003018186803b158015610ca757600080fd5b505afa158015610cbb573d6000803e3d6000fd5b505050506040513d6020811015610cd157600080fd5b50519350505b505092915050565b3360009081526020818152604080832085845290915281206001015483906001600160a01b0316610d4c576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b336000908152602081815260408083208784529091529020600101546001600160a01b0316610d79611c32565b506001600160a01b0381811660009081526001602081815260408084208a855282529283902083516080810185528154958616808252600160a01b90960460ff1615159281019290925291820154928101929092526002015460e01b6001600160e01b031916606082015290610dee57600080fd5b6001600160a01b03821660008181526001602081815260408084208b855290915280832080546001600160a81b03191681559182018390556002909101805463ffffffff19169055518892917f6bc0cb9e9967b59a69ace442598e1df4368d38661bd5c0800fbcbc9fe855fbbe91a3846001141561101b576000826001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ea157600080fd5b505afa158015610eb5573d6000803e3d6000fd5b505050506040513d6020811015610ecb57600080fd5b5051602083015190915015610f855781516040808401516060850151825163e869d45f60e01b81526001600160a01b03948516600482015260248101929092526001600160e01b0319166044820152858316606482015290519183169163e869d45f916084808201926020929091908290030181600087803b158015610f5057600080fd5b505af1158015610f64573d6000803e3d6000fd5b505050506040513d6020811015610f7a57600080fd5b5051610f8557600080fd5b81602001516110195781516040805163039de01d60e01b81526001600160a01b039283166004820152858316602482015290519183169163039de01d916044808201926020929091908290030181600087803b158015610fe457600080fd5b505af1158015610ff8573d6000803e3d6000fd5b505050506040513d602081101561100e57600080fd5b505161101957600080fd5b505b60408051868152905187916001600160a01b038516917fd2632e80f5364f02aded1c64e8a04637b7c8bb9c2db2bedf4b6ac47c013acbc09181900360200190a350600195945050505050565b336000908152602081815260408083208484528252808320600101548151638da5cb5b60e01b8152915185936001600160a01b03909216928392638da5cb5b92600480840193829003018186803b1580156110c157600080fd5b505afa1580156110d5573d6000803e3d6000fd5b505050506040513d60208110156110eb57600080fd5b505160408051639be2faed60e01b81523060048201526001600160a01b03848116602483015291519190921691639be2faed916044808301926020929190829003018186803b15801561113d57600080fd5b505afa158015611151573d6000803e3d6000fd5b505050506040513d602081101561116757600080fd5b50516111b5576040805162461bcd60e51b81526020600482015260186024820152771cd8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b6111bd611c59565b5033600090815260208181526040808320878452825291829020825180840190935280548352600101546001600160a01b03169082018190526112045760009350506112e8565b80602001516001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b15801561124157600080fd5b505afa158015611255573d6000803e3d6000fd5b505050506040513d602081101561126b57600080fd5b5051815160408051630981b24d60e41b81526004810192909252516001600160a01b039092169163981b24d091602480820192602092909190829003018186803b1580156112b857600080fd5b505afa1580156112cc573d6000803e3d6000fd5b505050506040513d60208110156112e257600080fd5b50519350505b5050919050565b3360009081526020818152604080832084845290915281206001015482906001600160a01b031661135c576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b336000908152602081815260408083208684529091529020600101546001600160a01b031680611390576000925050611488565b806001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113c957600080fd5b505afa1580156113dd573d6000803e3d6000fd5b505050506040513d60208110156113f357600080fd5b50516040805163b9a04cdd60e01b81526001600160a01b038a8116600483015289811660248301526044820189905284811660648301529151919092169163b9a04cdd9160848083019260209291908290030181600087803b15801561145857600080fd5b505af115801561146c573d6000803e3d6000fd5b505050506040513d602081101561148257600080fd5b50519250505b50949350505050565b3360009081526020818152604080832084845290915281206001015482906001600160a01b03166114fe576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b336000908152602081815260408083208684529091529020600101546001600160a01b031680611532576000925050611622565b806001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561156b57600080fd5b505afa15801561157f573d6000803e3d6000fd5b505050506040513d602081101561159557600080fd5b50516040805163757cca5960e11b8152600481018990526001600160a01b03888116602483015284811660448301529151919092169163eaf994b29160648083019260209291908290030181600087803b1580156115f257600080fd5b505af1158015611606573d6000803e3d6000fd5b505050506040513d602081101561161c57600080fd5b50519250505b509392505050565b60006001600160a01b03831661167f576040805162461bcd60e51b8152602060048201526015602482015274736368656d652063616e6e6f74206265207a65726f60581b604482015290519081900360640190fd5b600061168a856119fc565b9050611694611c12565b5060008181526002602081815260408084208151606081018352815481526001820154818501819052918501546001600160a01b039081168285018190528451634439bdaf60e11b8152600481019790975260248701939093523360448701528b166064860152915191949093909284926388737b5e92608480820193929182900301818787803b15801561172857600080fd5b505af115801561173c573d6000803e3d6000fd5b505050506040513d602081101561175257600080fd5b50516001600160a01b038981166000818152600160209081526040808320868452825280832080546001600160a01b0319168e871690811790915581519081528083018281528d51928201929092528c519697509488169587957f504b6bd2558241a5f0532c970f3444e1fc24e1f7cf3d7c49a8d213bd612e9055948f948f9492936060850192918601918190849084905b838110156117fc5781810151838201526020016117e4565b50505050905090810190601f1680156118295780820380516001836020036101000a031916815260200191505b50935050505060405180910390a46040805180820182524381526001600160a01b03998a166020808301918252958301518b166000908152808752838120858252909652919094209351845551600190930180546001600160a01b031916939098169290921790965595945050505050565b3360009081526020818152604080832084845290915281206001015482906001600160a01b0316611908576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b336000908152602081815260408083208684529091529020600101546001600160a01b03168061193c576000925050611622565b806001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561197557600080fd5b505afa158015611989573d6000803e3d6000fd5b505050506040513d602081101561199f57600080fd5b505160408051630dd29a4f60e31b8152600481018990526001600160a01b038881166024830152848116604483015291519190921691636e94d2789160648083019260209291908290030181600087803b1580156115f257600080fd5b6000816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a3757600080fd5b505afa158015611a4b573d6000803e3d6000fd5b505050506040513d6020811015611a6157600080fd5b505160408051639be2faed60e01b81523060048201526001600160a01b03858116602483015291519190921691639be2faed916044808301926020929190829003018186803b158015611ab357600080fd5b505afa158015611ac7573d6000803e3d6000fd5b505050506040513d6020811015611add57600080fd5b5051611b2b576040805162461bcd60e51b81526020600482015260186024820152771cd8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b6457600080fd5b505afa158015611b78573d6000803e3d6000fd5b505050506040513d6020811015611b8e57600080fd5b505160408051630389aac160e31b81523060048201526001600160a01b03858116602483015291519190921691631c4d5608916044808301926020929190829003018186803b158015611be057600080fd5b505afa158015611bf4573d6000803e3d6000fd5b505050506040513d6020811015611c0a57600080fd5b505192915050565b604080516060810182526000808252602082018190529181019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b60408051808201909152600080825260208201529056fea265627a7a72315820cc06d76b7d123610fd7b55c06794dafd738aa5db1a24a64a9cc0bcea5045532864736f6c63430005110032",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c80639588378e1161008c578063bea75f2811610066578063bea75f28146103dd578063d29b5d2f14610419578063e7ac593e1461044b578063f81f8bf61461050a576100ea565b80639588378e1461035d5780639d4c162d14610389578063b551c373146103c0576100ea565b80635099e006116100c85780635099e006146101dd57806360bdbb3f146102b25780636b8eb403146102ff578063771822611461032b576100ea565b806302506804146100ef57806306e3a978146101335780630a6687fd14610199575b600080fd5b61010c6004803603602081101561010557600080fd5b503561053c565b6040805193845260208401929092526001600160a01b031682820152519081900360600190f35b61015f6004803603604081101561014957600080fd5b506001600160a01b038135169060200135610565565b604080516001600160a01b0390951685529215156020850152838301919091526001600160e01b0319166060830152519081900360800190f35b6101cb600480360360608110156101af57600080fd5b50803590602081013590604001356001600160a01b03166105a7565b60408051918252519081900360200190f35b6101cb600480360360a08110156101f357600080fd5b6001600160a01b0382358116926020810135909116916040820135916001600160e01b03196060820135169181019060a08101608082013564010000000081111561023d57600080fd5b82018360208201111561024f57600080fd5b8035906020019184600183028401116401000000008311171561027157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506105f6945050505050565b6102de600480360360408110156102c857600080fd5b506001600160a01b03813516906020013561091b565b604080519283526001600160a01b0390911660208301528051918290030190f35b6101cb6004803603604081101561031557600080fd5b506001600160a01b038135169060200135610945565b6101cb6004803603606081101561034157600080fd5b50803590602081013590604001356001600160a01b0316610a05565b6101cb6004803603604081101561037357600080fd5b506001600160a01b038135169060200135610a4d565b6103ac6004803603604081101561039f57600080fd5b5080359060200135610cdf565b604080519115158252519081900360200190f35b6101cb600480360360208110156103d657600080fd5b5035611067565b6103ac600480360360808110156103f357600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356112ef565b6103ac6004803603606081101561042f57600080fd5b508035906001600160a01b036020820135169060400135611491565b6101cb6004803603606081101561046157600080fd5b6001600160a01b03823581169260208101359091169181019060608101604082013564010000000081111561049557600080fd5b8201836020820111156104a757600080fd5b803590602001918460018302840111640100000000831117156104c957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061162a945050505050565b6103ac6004803603606081101561052057600080fd5b508035906001600160a01b03602082013516906040013561189b565b60026020819052600091825260409091208054600182015491909201546001600160a01b031683565b600160208181526000938452604080852090915291835291208054918101546002909101546001600160a01b03831692600160a01b900460ff16919060e01b84565b6000806105b5858585610a05565b6000818152600260208190526040909120878155600181018790550180546001600160a01b0386166001600160a01b03199091161790559150509392505050565b60006001600160a01b03851661064b576040805162461bcd60e51b8152602060048201526015602482015274736368656d652063616e6e6f74206265207a65726f60581b604482015290519081900360640190fd5b610653611c12565b60026000610660896119fc565b815260208082019290925260409081016000908120825160608101845281548082526001830154828701526002928301546001600160a01b039081168387018190528651634439bdaf60e11b8152600481019590955260248501929092523360448501528d166064840152935190955091936388737b5e9260848084019382900301818787803b1580156106f357600080fd5b505af1158015610707573d6000803e3d6000fd5b505050506040513d602081101561071d57600080fd5b50519050610729611c32565b6040518060800160405280896001600160a01b03168152602001600115158152602001888152602001876001600160e01b031916815250905082604001516001600160a01b0316828a6001600160a01b03167fcc9180a05805acc3615b472c3ba00cdc9cd2c6e0e0b3648d60eb58f2c1001b848b8b8b8b60405180856001600160a01b03166001600160a01b03168152602001848152602001836001600160e01b0319166001600160e01b031916815260200180602001828103825283818151815260200191508051906020019080838360005b838110156108155781810151838201526020016107fd565b50505050905090810190601f1680156108425780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a46001600160a01b03808a166000818152600160208181526040808420888552825280842087518154848a01511515600160a01b0260ff60a01b19928a166001600160a01b0319928316179290921691909117825582890151828601556060909801516002909101805460e09290921c63ffffffff1990921691909117905580518082018252438152808301958652988101518616845283825280842088855290915290912095518655905194018054949091169390911692909217909155905095945050505050565b6000602081815292815260408082209093529081522080546001909101546001600160a01b031682565b336000908152602081815260408083208484529091528120600101546001600160a01b0316806109795760009150506109ff565b836001600160a01b03166370a08231826040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156109cf57600080fd5b505afa1580156109e3573d6000803e3d6000fd5b505050506040513d60208110156109f957600080fd5b50519150505b92915050565b6040805160208082019590955280820193909352606091821b6bffffffffffffffffffffffff1916918301919091528051808303605401815260749092019052805191012090565b336000908152602081815260408083208484528252808320600101548151638da5cb5b60e01b8152915185936001600160a01b03909216928392638da5cb5b92600480840193829003018186803b158015610aa757600080fd5b505afa158015610abb573d6000803e3d6000fd5b505050506040513d6020811015610ad157600080fd5b505160408051639be2faed60e01b81523060048201526001600160a01b03848116602483015291519190921691639be2faed916044808301926020929190829003018186803b158015610b2357600080fd5b505afa158015610b37573d6000803e3d6000fd5b505050506040513d6020811015610b4d57600080fd5b5051610b9b576040805162461bcd60e51b81526020600482015260186024820152771cd8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b610ba3611c59565b5033600090815260208181526040808320878452825291829020825180840190935280548352600101546001600160a01b0316908201819052610bea576000935050610cd7565b80602001516001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b158015610c2757600080fd5b505afa158015610c3b573d6000803e3d6000fd5b505050506040513d6020811015610c5157600080fd5b505181516040805163277166bf60e11b81526001600160a01b038a81166004830152602482019390935290519190921691634ee2cd7e916044808301926020929190829003018186803b158015610ca757600080fd5b505afa158015610cbb573d6000803e3d6000fd5b505050506040513d6020811015610cd157600080fd5b50519350505b505092915050565b3360009081526020818152604080832085845290915281206001015483906001600160a01b0316610d4c576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b336000908152602081815260408083208784529091529020600101546001600160a01b0316610d79611c32565b506001600160a01b0381811660009081526001602081815260408084208a855282529283902083516080810185528154958616808252600160a01b90960460ff1615159281019290925291820154928101929092526002015460e01b6001600160e01b031916606082015290610dee57600080fd5b6001600160a01b03821660008181526001602081815260408084208b855290915280832080546001600160a81b03191681559182018390556002909101805463ffffffff19169055518892917f6bc0cb9e9967b59a69ace442598e1df4368d38661bd5c0800fbcbc9fe855fbbe91a3846001141561101b576000826001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ea157600080fd5b505afa158015610eb5573d6000803e3d6000fd5b505050506040513d6020811015610ecb57600080fd5b5051602083015190915015610f855781516040808401516060850151825163e869d45f60e01b81526001600160a01b03948516600482015260248101929092526001600160e01b0319166044820152858316606482015290519183169163e869d45f916084808201926020929091908290030181600087803b158015610f5057600080fd5b505af1158015610f64573d6000803e3d6000fd5b505050506040513d6020811015610f7a57600080fd5b5051610f8557600080fd5b81602001516110195781516040805163039de01d60e01b81526001600160a01b039283166004820152858316602482015290519183169163039de01d916044808201926020929091908290030181600087803b158015610fe457600080fd5b505af1158015610ff8573d6000803e3d6000fd5b505050506040513d602081101561100e57600080fd5b505161101957600080fd5b505b60408051868152905187916001600160a01b038516917fd2632e80f5364f02aded1c64e8a04637b7c8bb9c2db2bedf4b6ac47c013acbc09181900360200190a350600195945050505050565b336000908152602081815260408083208484528252808320600101548151638da5cb5b60e01b8152915185936001600160a01b03909216928392638da5cb5b92600480840193829003018186803b1580156110c157600080fd5b505afa1580156110d5573d6000803e3d6000fd5b505050506040513d60208110156110eb57600080fd5b505160408051639be2faed60e01b81523060048201526001600160a01b03848116602483015291519190921691639be2faed916044808301926020929190829003018186803b15801561113d57600080fd5b505afa158015611151573d6000803e3d6000fd5b505050506040513d602081101561116757600080fd5b50516111b5576040805162461bcd60e51b81526020600482015260186024820152771cd8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b6111bd611c59565b5033600090815260208181526040808320878452825291829020825180840190935280548352600101546001600160a01b03169082018190526112045760009350506112e8565b80602001516001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b15801561124157600080fd5b505afa158015611255573d6000803e3d6000fd5b505050506040513d602081101561126b57600080fd5b5051815160408051630981b24d60e41b81526004810192909252516001600160a01b039092169163981b24d091602480820192602092909190829003018186803b1580156112b857600080fd5b505afa1580156112cc573d6000803e3d6000fd5b505050506040513d60208110156112e257600080fd5b50519350505b5050919050565b3360009081526020818152604080832084845290915281206001015482906001600160a01b031661135c576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b336000908152602081815260408083208684529091529020600101546001600160a01b031680611390576000925050611488565b806001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113c957600080fd5b505afa1580156113dd573d6000803e3d6000fd5b505050506040513d60208110156113f357600080fd5b50516040805163b9a04cdd60e01b81526001600160a01b038a8116600483015289811660248301526044820189905284811660648301529151919092169163b9a04cdd9160848083019260209291908290030181600087803b15801561145857600080fd5b505af115801561146c573d6000803e3d6000fd5b505050506040513d602081101561148257600080fd5b50519250505b50949350505050565b3360009081526020818152604080832084845290915281206001015482906001600160a01b03166114fe576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b336000908152602081815260408083208684529091529020600101546001600160a01b031680611532576000925050611622565b806001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561156b57600080fd5b505afa15801561157f573d6000803e3d6000fd5b505050506040513d602081101561159557600080fd5b50516040805163757cca5960e11b8152600481018990526001600160a01b03888116602483015284811660448301529151919092169163eaf994b29160648083019260209291908290030181600087803b1580156115f257600080fd5b505af1158015611606573d6000803e3d6000fd5b505050506040513d602081101561161c57600080fd5b50519250505b509392505050565b60006001600160a01b03831661167f576040805162461bcd60e51b8152602060048201526015602482015274736368656d652063616e6e6f74206265207a65726f60581b604482015290519081900360640190fd5b600061168a856119fc565b9050611694611c12565b5060008181526002602081815260408084208151606081018352815481526001820154818501819052918501546001600160a01b039081168285018190528451634439bdaf60e11b8152600481019790975260248701939093523360448701528b166064860152915191949093909284926388737b5e92608480820193929182900301818787803b15801561172857600080fd5b505af115801561173c573d6000803e3d6000fd5b505050506040513d602081101561175257600080fd5b50516001600160a01b038981166000818152600160209081526040808320868452825280832080546001600160a01b0319168e871690811790915581519081528083018281528d51928201929092528c519697509488169587957f504b6bd2558241a5f0532c970f3444e1fc24e1f7cf3d7c49a8d213bd612e9055948f948f9492936060850192918601918190849084905b838110156117fc5781810151838201526020016117e4565b50505050905090810190601f1680156118295780820380516001836020036101000a031916815260200191505b50935050505060405180910390a46040805180820182524381526001600160a01b03998a166020808301918252958301518b166000908152808752838120858252909652919094209351845551600190930180546001600160a01b031916939098169290921790965595945050505050565b3360009081526020818152604080832084845290915281206001015482906001600160a01b0316611908576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b336000908152602081815260408083208684529091529020600101546001600160a01b03168061193c576000925050611622565b806001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561197557600080fd5b505afa158015611989573d6000803e3d6000fd5b505050506040513d602081101561199f57600080fd5b505160408051630dd29a4f60e31b8152600481018990526001600160a01b038881166024830152848116604483015291519190921691636e94d2789160648083019260209291908290030181600087803b1580156115f257600080fd5b6000816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a3757600080fd5b505afa158015611a4b573d6000803e3d6000fd5b505050506040513d6020811015611a6157600080fd5b505160408051639be2faed60e01b81523060048201526001600160a01b03858116602483015291519190921691639be2faed916044808301926020929190829003018186803b158015611ab357600080fd5b505afa158015611ac7573d6000803e3d6000fd5b505050506040513d6020811015611add57600080fd5b5051611b2b576040805162461bcd60e51b81526020600482015260186024820152771cd8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b6457600080fd5b505afa158015611b78573d6000803e3d6000fd5b505050506040513d6020811015611b8e57600080fd5b505160408051630389aac160e31b81523060048201526001600160a01b03858116602483015291519190921691631c4d5608916044808301926020929190829003018186803b158015611be057600080fd5b505afa158015611bf4573d6000803e3d6000fd5b505050506040513d6020811015611c0a57600080fd5b505192915050565b604080516060810182526000808252602082018190529181019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b60408051808201909152600080825260208201529056fea265627a7a72315820cc06d76b7d123610fd7b55c06794dafd738aa5db1a24a64a9cc0bcea5045532864736f6c63430005110032",
  "linkReferences": {},
  "deployedLinkReferences": {}
}