{
  "contractName": "SchemeFactory",
  "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": "string",
          "name": "_schemeName",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "_schemeData",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint64[3]",
          "name": "_packageVersion",
          "type": "uint64[3]"
        },
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "_permissions",
          "type": "bytes4"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_schemeToReplace",
          "type": "address"
        },
        {
          "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"
    },
    {
      "inputs": [],
      "name": "avatar",
      "outputs": [
        {
          "internalType": "contract Avatar",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "_stakingToken",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "balanceOfStakingToken",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "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"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "daoFactory",
      "outputs": [
        {
          "internalType": "contract DAOFactory",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "internalType": "int256",
          "name": "_decision",
          "type": "int256"
        }
      ],
      "name": "executeProposal",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "getTotalReputationSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract Avatar",
          "name": "_avatar",
          "type": "address"
        },
        {
          "internalType": "contract IntVoteInterface",
          "name": "_votingMachine",
          "type": "address"
        },
        {
          "internalType": "uint256[11]",
          "name": "_votingParams",
          "type": "uint256[11]"
        },
        {
          "internalType": "address",
          "name": "_voteOnBehalf",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_voteParamsHash",
          "type": "bytes32"
        },
        {
          "internalType": "contract DAOFactory",
          "name": "_daoFactory",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "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"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "proposals",
      "outputs": [
        {
          "internalType": "string",
          "name": "schemeName",
          "type": "string"
        },
        {
          "internalType": "bytes",
          "name": "schemeData",
          "type": "bytes"
        },
        {
          "internalType": "address",
          "name": "schemeToReplace",
          "type": "address"
        },
        {
          "internalType": "bytes4",
          "name": "permissions",
          "type": "bytes4"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "proposalsBlockNumber",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64[3]",
          "name": "_packageVersion",
          "type": "uint64[3]"
        },
        {
          "internalType": "string",
          "name": "_schemeName",
          "type": "string"
        },
        {
          "internalType": "bytes",
          "name": "_schemeData",
          "type": "bytes"
        },
        {
          "internalType": "bytes4",
          "name": "_permissions",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "_schemeToReplace",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "_descriptionHash",
          "type": "string"
        }
      ],
      "name": "proposeScheme",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "reputationOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "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"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "voteParamsHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "votingMachine",
      "outputs": [
        {
          "internalType": "contract IntVoteInterface",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5061240e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80637a5cb92c11610097578063b551c37311610066578063b551c37314610566578063bea75f2814610583578063d29b5d2f146105bf578063f81f8bf6146105f1576100f5565b80637a5cb92c146104975780639588378e146104b4578063985e313f146104e05780639d4c162d1461052f576100f5565b80634ea2c7ec116100d35780634ea2c7ec146102425780635aef7de61461025c57806369270334146102645780636b8eb4031461046b576100f5565b806332ed5b12146100fa5780633edf7ca11461021657806348f7f2a31461023a575b600080fd5b6101176004803603602081101561011057600080fd5b5035610623565b604080516001600160a01b038416918101919091526001600160e01b03198216606082015260808082528551908201528451819060208083019160a084019189019080838360005b8381101561017757818101518382015260200161015f565b50505050905090810190601f1680156101a45780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b838110156101d75781810151838201526020016101bf565b50505050905090810190601f1680156102045780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b61021e61077d565b604080516001600160a01b039092168252519081900360200190f35b61021e61078c565b61024a61079b565b60408051918252519081900360200190f35b61021e6107a1565b61024a600480360361010081101561027b57600080fd5b8101908080606001906003806020026040519081016040528092919082600360200280828437600092019190915250919493926020810192503590506401000000008111156102c957600080fd5b8201836020820111156102db57600080fd5b803590602001918460018302840111640100000000831117156102fd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561035057600080fd5b82018360208201111561036257600080fd5b8035906020019184600183028401116401000000008311171561038457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160e01b0319853516956001600160a01b03602087013516959194509250606081019150604001356401000000008111156103f657600080fd5b82018360208201111561040857600080fd5b8035906020019184600183028401116401000000008311171561042a57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506107b0945050505050565b61024a6004803603604081101561048157600080fd5b506001600160a01b038135169060200135610e1a565b61024a600480360360208110156104ad57600080fd5b5035610ef4565b61024a600480360360408110156104ca57600080fd5b506001600160a01b038135169060200135610f06565b61052d60048036036102008110156104f757600080fd5b506001600160a01b038135811691602081013582169160408201916101a08101358216916101c0820135916101e0013516611037565b005b6105526004803603604081101561054557600080fd5b5080359060200135611095565b604080519115158252519081900360200190f35b61024a6004803603602081101561057c57600080fd5b5035611827565b6105526004803603608081101561059957600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611984565b610552600480360360608110156105d557600080fd5b508035906001600160a01b036020820135169060400135611ae8565b6105526004803603606081101561060757600080fd5b508035906001600160a01b036020820135169060400135611c43565b60376020908152600091825260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529092918391908301828280156106ba5780601f1061068f576101008083540402835291602001916106ba565b820191906000526020600020905b81548152906001019060200180831161069d57829003601f168201915b505050505090806001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107585780601f1061072d57610100808354040283529160200191610758565b820191906000526020600020905b81548152906001019060200180831161073b57829003601f168201915b505050600390930154919250506001600160a01b03811690600160a01b900460e01b84565b6034546001600160a01b031681565b6038546001600160a01b031681565b60355481565b6033546001600160a01b031681565b84516000901561090757603854604051632346e68b60e01b81526000916001600160a01b031690632346e68b908a908a90600401808360608083838b5b838110156108055781810151838201526020016107ed565b5050505090500180602001828103825283818151815260200191508051906020019080838360005b8381101561084557818101518382015260200161082d565b50505050905090810190601f1680156108725780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b15801561089057600080fd5b505afa1580156108a4573d6000803e3d6000fd5b505050506040513d60208110156108ba57600080fd5b50516001600160a01b031614156109025760405162461bcd60e51b815260040180806020018281038252602581526020018061230b6025913960400191505060405180910390fd5b610a78565b6001600160a01b03831615610a415760335460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b15801561095b57600080fd5b505afa15801561096f573d6000803e3d6000fd5b505050506040513d602081101561098557600080fd5b505160408051632074193160e21b81526001600160a01b0387811660048301529151929350908316916381d064c491602480820192602092909190829003018186803b1580156109d457600080fd5b505afa1580156109e8573d6000803e3d6000fd5b505050506040513d60208110156109fe57600080fd5b5051610a3b5760405162461bcd60e51b81526004018080602001828103825260378152602001806123306037913960400191505060405180910390fd5b50610a78565b60405162461bcd60e51b81526004018080602001828103825260448152602001806123676044913960600191505060405180910390fd5b60345460355460335460408051634439bdaf60e11b81526002600482015260248101939093523360448401526001600160a01b0391821660648401525160009391909116916388737b5e91608480830192602092919082900301818787803b158015610ae357600080fd5b505af1158015610af7573d6000803e3d6000fd5b505050506040513d6020811015610b0d57600080fd5b50519050610b19612108565b6040518060a001604052808981526020018881526020018a8152602001866001600160a01b03168152602001876001600160e01b0319168152509050603460009054906101000a90046001600160a01b03166001600160a01b031682603360009054906101000a90046001600160a01b03166001600160a01b03167fb390521055def5ff9aeb5a6ab0b72337c61966ac7070f15dc31fd2df4adf9bf38b8b8e8c8c8c60405180806020018060200187600360200280838360005b83811015610beb578181015183820152602001610bd3565b50505050905001866001600160e01b0319166001600160e01b0319168152602001856001600160a01b03166001600160a01b031681526020018060200184810384528a818151815260200191508051906020019080838360005b83811015610c5d578181015183820152602001610c45565b50505050905090810190601f168015610c8a5780820380516001836020036101000a031916815260200191505b5084810383528951815289516020918201918b019080838360005b83811015610cbd578181015183820152602001610ca5565b50505050905090810190601f168015610cea5780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b83811015610d1d578181015183820152602001610d05565b50505050905090810190601f168015610d4a5780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390a46000828152603760209081526040909120825180518493610d8392849291019061213d565b506020828101518051610d9c926001850192019061213d565b506040820151610db290600283019060036121bb565b5060608201516003909101805460809093015160e01c600160a01b0263ffffffff60a01b196001600160a01b039093166001600160a01b0319909416939093179190911691909117905550600081815260366020526040902043905590509695505050505050565b60345460009082906001600160a01b03163314610e73576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603354604080516370a0823160e01b81526001600160a01b0392831660048201529051918616916370a0823191602480820192602092909190829003018186803b158015610ec057600080fd5b505afa158015610ed4573d6000803e3d6000fd5b505050506040513d6020811015610eea57600080fd5b5051949350505050565b60366020526000908152604090205481565b60345460009082906001600160a01b03163314610f5f576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b158015610fad57600080fd5b505afa158015610fc1573d6000803e3d6000fd5b505050506040513d6020811015610fd757600080fd5b505160008481526036602090815260409182902054825163277166bf60e11b81526001600160a01b03898116600483015260248201929092529251931692634ee2cd7e926044808201939291829003018186803b158015610ec057600080fd5b61106e86868487600b806020026040519081016040528092919082600b60200280828437600092019190915250899150611d699050565b603880546001600160a01b0319166001600160a01b03929092169190911790555050505050565b60345460009083906001600160a01b031633146110ee576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b6110f6612108565b6000858152603760209081526040918290208251815460026001821615610100026000190190911604601f8101849004909302810160c090810190945260a081018381529093919284928491908401828280156111945780601f1061116957610100808354040283529160200191611194565b820191906000526020600020905b81548152906001019060200180831161117757829003601f168201915b50505050508152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112365780601f1061120b57610100808354040283529160200191611236565b820191906000526020600020905b81548152906001019060200180831161121957829003601f168201915b5050509183525050604080516060810191829052602090920191906002840190600390826000855b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff168152602001906008019060208260070104928301926001038202915080841161125e57505050928452505050600391909101546001600160a01b038116602080840191909152600160a01b90910460e01b6001600160e01b031916604092830152600088815260379091529081209192506112f8828261225f565b61130660018301600061225f565b6113146002830160006122a6565b5060030180546001600160c01b031916905560335460405186916001600160a01b0316907f6bc0cb9e9967b59a69ace442598e1df4368d38661bd5c0800fbcbc9fe855fbbe90600090a360335460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b1580156113a357600080fd5b505afa1580156113b7573d6000803e3d6000fd5b505050506040513d60208110156113cd57600080fd5b5051905060018514156117d8578151511561165c57603854604080840151845160335460208701519351634b6c2f7760e11b81526000956001600160a01b03908116956396d85eee95949390911691600401808560608083838d5b83811015611440578181015183820152602001611428565b5050505090500180602001846001600160a01b03166001600160a01b0316815260200180602001838103835286818151815260200191508051906020019080838360005b8381101561149c578181015183820152602001611484565b50505050905090810190601f1680156114c95780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156114fc5781810151838201526020016114e4565b50505050905090810190601f1680156115295780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b505050506040513d602081101561157657600080fd5b5051608084015160408051635d1da8cb60e01b81526001600160a01b0380851660048301526001600160e01b03199093166024820152905192935090841691635d1da8cb916044808201926020929091908290030181600087803b1580156115dd57600080fd5b505af11580156115f1573d6000803e3d6000fd5b505050506040513d602081101561160757600080fd5b505161165a576040805162461bcd60e51b815260206004820152601c60248201527f6661696c6420746f207265676973746572206e657720736368656d6500000000604482015290519081900360640190fd5b505b60608201516001600160a01b0316158015906116fa5750806001600160a01b03166381d064c483606001516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156116cd57600080fd5b505afa1580156116e1573d6000803e3d6000fd5b505050506040513d60208110156116f757600080fd5b50515b156117d857806001600160a01b031663653915e583606001516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b15801561175b57600080fd5b505af115801561176f573d6000803e3d6000fd5b505050506040513d602081101561178557600080fd5b50516117d8576040805162461bcd60e51b815260206004820152601e60248201527f6661696c6420746f20756e7265676973746572206f6c6420736368656d650000604482015290519081900360640190fd5b60335460408051878152905188926001600160a01b0316917fd2632e80f5364f02aded1c64e8a04637b7c8bb9c2db2bedf4b6ac47c013acbc0919081900360200190a350600195945050505050565b60345460009082906001600160a01b03163314611880576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b1580156118ce57600080fd5b505afa1580156118e2573d6000803e3d6000fd5b505050506040513d60208110156118f857600080fd5b5051600084815260366020908152604091829020548251630981b24d60e41b8152600481019190915291516001600160a01b039093169263981b24d0926024808201939291829003018186803b15801561195157600080fd5b505afa158015611965573d6000803e3d6000fd5b505050506040513d602081101561197b57600080fd5b50519392505050565b60345460009082906001600160a01b031633146119dd576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a2b57600080fd5b505afa158015611a3f573d6000803e3d6000fd5b505050506040513d6020811015611a5557600080fd5b50516040805163dab0efff60e01b81526001600160a01b0389811660048301528881166024830152604482018890529151919092169163dab0efff9160648083019260209291908290030181600087803b158015611ab257600080fd5b505af1158015611ac6573d6000803e3d6000fd5b505050506040513d6020811015611adc57600080fd5b50519695505050505050565b60345460009082906001600160a01b03163314611b41576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b8f57600080fd5b505afa158015611ba3573d6000803e3d6000fd5b505050506040513d6020811015611bb957600080fd5b50516040805163dea9e24d60e01b8152600481018890526001600160a01b0387811660248301529151919092169163dea9e24d9160448083019260209291908290030181600087803b158015611c0e57600080fd5b505af1158015611c22573d6000803e3d6000fd5b505050506040513d6020811015611c3857600080fd5b505195945050505050565b60345460009082906001600160a01b03163314611c9c576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611cea57600080fd5b505afa158015611cfe573d6000803e3d6000fd5b505050506040513d6020811015611d1457600080fd5b50516040805163ddbfcc6b60e01b8152600481018890526001600160a01b0387811660248301529151919092169163ddbfcc6b9160448083019260209291908290030181600087803b158015611c0e57600080fd5b6001600160a01b038416611dc4576040805162461bcd60e51b815260206004820152601c60248201527f766f74696e674d616368696e652063616e6e6f74206265207a65726f00000000604482015290519081900360640190fd5b611dcd85611fe8565b603480546001600160a01b0319166001600160a01b03861617905582611fdb576040516307b4e1e360e01b815284906001600160a01b038216906307b4e1e39085908590600401808361016080838360005b83811015611e37578181015183820152602001611e1f565b50505050905001826001600160a01b03166001600160a01b031681526020019250505060206040518083038186803b158015611e7257600080fd5b505afa158015611e86573d6000803e3d6000fd5b505050506040513d6020811015611e9c57600080fd5b505160358190556040805162941a0160e21b81526004810192909252516000916001600160a01b038416916302506804916024808201926101a092909190829003018186803b158015611eee57600080fd5b505afa158015611f02573d6000803e3d6000fd5b505050506040513d6101a0811015611f1957600080fd5b5051905080611fd457604051638894c41b60e01b81526001600160a01b03831690638894c41b9086908690600401808361016080838360005b83811015611f6a578181015183820152602001611f52565b50505050905001826001600160a01b03166001600160a01b0316815260200192505050602060405180830381600087803b158015611fa757600080fd5b505af1158015611fbb573d6000803e3d6000fd5b505050506040513d6020811015611fd157600080fd5b50505b5050611fe1565b60358390555b5050505050565b600054610100900460ff16806120015750612001612101565b8061200f575060005460ff16155b61204a5760405162461bcd60e51b815260040180806020018281038252602e8152602001806123ab602e913960400191505060405180910390fd5b600054610100900460ff16158015612075576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382166120d0576040805162461bcd60e51b815260206004820152601760248201527f536368656d65206d757374206861766520617661746172000000000000000000604482015290519081900360640190fd5b603380546001600160a01b0319166001600160a01b03841617905580156120fd576000805461ff00191690555b5050565b303b155b90565b6040518060a0016040528060608152602001606081526020016121296122ad565b815260006020820181905260409091015290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061217e57805160ff19168380011785556121ab565b828001600101855582156121ab579182015b828111156121ab578251825591602001919060010190612190565b506121b79291506122cb565b5090565b6001830191839082156122535791602002820160005b8382111561221d57835183826101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555092602001926008016020816007010492830192600103026121d1565b80156122515782816101000a81549067ffffffffffffffff021916905560080160208160070104928301926001030261221d565b505b506121b79291506122e5565b50805460018160011615610100020316600290046000825580601f1061228557506122a3565b601f0160209004906000526020600020908101906122a391906122cb565b50565b5060009055565b60405180606001604052806003906020820280368337509192915050565b61210591905b808211156121b757600081556001016122d1565b61210591905b808211156121b757805467ffffffffffffffff191681556001016122eb56fe736368656d65206e616d6520646f6573206e6f7420657869737420696e2041726348697665736368656d6520746f207265706c616365206973206e6f74207265676973746572656420696e20746865206f7267616e697a6174696f6e70726f706f73616c206d7573742068617665206120736368656d65206e616d6520746f2072656973746572206f72206164647265737320746f20756e7265676973746572436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a2646970667358221220213952b841df2cddbaf7dd30e17bc227715e3b0cd3b819fd72d9e273e31d853f64736f6c634300060a0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80637a5cb92c11610097578063b551c37311610066578063b551c37314610566578063bea75f2814610583578063d29b5d2f146105bf578063f81f8bf6146105f1576100f5565b80637a5cb92c146104975780639588378e146104b4578063985e313f146104e05780639d4c162d1461052f576100f5565b80634ea2c7ec116100d35780634ea2c7ec146102425780635aef7de61461025c57806369270334146102645780636b8eb4031461046b576100f5565b806332ed5b12146100fa5780633edf7ca11461021657806348f7f2a31461023a575b600080fd5b6101176004803603602081101561011057600080fd5b5035610623565b604080516001600160a01b038416918101919091526001600160e01b03198216606082015260808082528551908201528451819060208083019160a084019189019080838360005b8381101561017757818101518382015260200161015f565b50505050905090810190601f1680156101a45780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b838110156101d75781810151838201526020016101bf565b50505050905090810190601f1680156102045780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b61021e61077d565b604080516001600160a01b039092168252519081900360200190f35b61021e61078c565b61024a61079b565b60408051918252519081900360200190f35b61021e6107a1565b61024a600480360361010081101561027b57600080fd5b8101908080606001906003806020026040519081016040528092919082600360200280828437600092019190915250919493926020810192503590506401000000008111156102c957600080fd5b8201836020820111156102db57600080fd5b803590602001918460018302840111640100000000831117156102fd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561035057600080fd5b82018360208201111561036257600080fd5b8035906020019184600183028401116401000000008311171561038457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160e01b0319853516956001600160a01b03602087013516959194509250606081019150604001356401000000008111156103f657600080fd5b82018360208201111561040857600080fd5b8035906020019184600183028401116401000000008311171561042a57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506107b0945050505050565b61024a6004803603604081101561048157600080fd5b506001600160a01b038135169060200135610e1a565b61024a600480360360208110156104ad57600080fd5b5035610ef4565b61024a600480360360408110156104ca57600080fd5b506001600160a01b038135169060200135610f06565b61052d60048036036102008110156104f757600080fd5b506001600160a01b038135811691602081013582169160408201916101a08101358216916101c0820135916101e0013516611037565b005b6105526004803603604081101561054557600080fd5b5080359060200135611095565b604080519115158252519081900360200190f35b61024a6004803603602081101561057c57600080fd5b5035611827565b6105526004803603608081101561059957600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611984565b610552600480360360608110156105d557600080fd5b508035906001600160a01b036020820135169060400135611ae8565b6105526004803603606081101561060757600080fd5b508035906001600160a01b036020820135169060400135611c43565b60376020908152600091825260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529092918391908301828280156106ba5780601f1061068f576101008083540402835291602001916106ba565b820191906000526020600020905b81548152906001019060200180831161069d57829003601f168201915b505050505090806001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107585780601f1061072d57610100808354040283529160200191610758565b820191906000526020600020905b81548152906001019060200180831161073b57829003601f168201915b505050600390930154919250506001600160a01b03811690600160a01b900460e01b84565b6034546001600160a01b031681565b6038546001600160a01b031681565b60355481565b6033546001600160a01b031681565b84516000901561090757603854604051632346e68b60e01b81526000916001600160a01b031690632346e68b908a908a90600401808360608083838b5b838110156108055781810151838201526020016107ed565b5050505090500180602001828103825283818151815260200191508051906020019080838360005b8381101561084557818101518382015260200161082d565b50505050905090810190601f1680156108725780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b15801561089057600080fd5b505afa1580156108a4573d6000803e3d6000fd5b505050506040513d60208110156108ba57600080fd5b50516001600160a01b031614156109025760405162461bcd60e51b815260040180806020018281038252602581526020018061230b6025913960400191505060405180910390fd5b610a78565b6001600160a01b03831615610a415760335460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b15801561095b57600080fd5b505afa15801561096f573d6000803e3d6000fd5b505050506040513d602081101561098557600080fd5b505160408051632074193160e21b81526001600160a01b0387811660048301529151929350908316916381d064c491602480820192602092909190829003018186803b1580156109d457600080fd5b505afa1580156109e8573d6000803e3d6000fd5b505050506040513d60208110156109fe57600080fd5b5051610a3b5760405162461bcd60e51b81526004018080602001828103825260378152602001806123306037913960400191505060405180910390fd5b50610a78565b60405162461bcd60e51b81526004018080602001828103825260448152602001806123676044913960600191505060405180910390fd5b60345460355460335460408051634439bdaf60e11b81526002600482015260248101939093523360448401526001600160a01b0391821660648401525160009391909116916388737b5e91608480830192602092919082900301818787803b158015610ae357600080fd5b505af1158015610af7573d6000803e3d6000fd5b505050506040513d6020811015610b0d57600080fd5b50519050610b19612108565b6040518060a001604052808981526020018881526020018a8152602001866001600160a01b03168152602001876001600160e01b0319168152509050603460009054906101000a90046001600160a01b03166001600160a01b031682603360009054906101000a90046001600160a01b03166001600160a01b03167fb390521055def5ff9aeb5a6ab0b72337c61966ac7070f15dc31fd2df4adf9bf38b8b8e8c8c8c60405180806020018060200187600360200280838360005b83811015610beb578181015183820152602001610bd3565b50505050905001866001600160e01b0319166001600160e01b0319168152602001856001600160a01b03166001600160a01b031681526020018060200184810384528a818151815260200191508051906020019080838360005b83811015610c5d578181015183820152602001610c45565b50505050905090810190601f168015610c8a5780820380516001836020036101000a031916815260200191505b5084810383528951815289516020918201918b019080838360005b83811015610cbd578181015183820152602001610ca5565b50505050905090810190601f168015610cea5780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b83811015610d1d578181015183820152602001610d05565b50505050905090810190601f168015610d4a5780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390a46000828152603760209081526040909120825180518493610d8392849291019061213d565b506020828101518051610d9c926001850192019061213d565b506040820151610db290600283019060036121bb565b5060608201516003909101805460809093015160e01c600160a01b0263ffffffff60a01b196001600160a01b039093166001600160a01b0319909416939093179190911691909117905550600081815260366020526040902043905590509695505050505050565b60345460009082906001600160a01b03163314610e73576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603354604080516370a0823160e01b81526001600160a01b0392831660048201529051918616916370a0823191602480820192602092909190829003018186803b158015610ec057600080fd5b505afa158015610ed4573d6000803e3d6000fd5b505050506040513d6020811015610eea57600080fd5b5051949350505050565b60366020526000908152604090205481565b60345460009082906001600160a01b03163314610f5f576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b158015610fad57600080fd5b505afa158015610fc1573d6000803e3d6000fd5b505050506040513d6020811015610fd757600080fd5b505160008481526036602090815260409182902054825163277166bf60e11b81526001600160a01b03898116600483015260248201929092529251931692634ee2cd7e926044808201939291829003018186803b158015610ec057600080fd5b61106e86868487600b806020026040519081016040528092919082600b60200280828437600092019190915250899150611d699050565b603880546001600160a01b0319166001600160a01b03929092169190911790555050505050565b60345460009083906001600160a01b031633146110ee576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b6110f6612108565b6000858152603760209081526040918290208251815460026001821615610100026000190190911604601f8101849004909302810160c090810190945260a081018381529093919284928491908401828280156111945780601f1061116957610100808354040283529160200191611194565b820191906000526020600020905b81548152906001019060200180831161117757829003601f168201915b50505050508152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112365780601f1061120b57610100808354040283529160200191611236565b820191906000526020600020905b81548152906001019060200180831161121957829003601f168201915b5050509183525050604080516060810191829052602090920191906002840190600390826000855b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff168152602001906008019060208260070104928301926001038202915080841161125e57505050928452505050600391909101546001600160a01b038116602080840191909152600160a01b90910460e01b6001600160e01b031916604092830152600088815260379091529081209192506112f8828261225f565b61130660018301600061225f565b6113146002830160006122a6565b5060030180546001600160c01b031916905560335460405186916001600160a01b0316907f6bc0cb9e9967b59a69ace442598e1df4368d38661bd5c0800fbcbc9fe855fbbe90600090a360335460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b1580156113a357600080fd5b505afa1580156113b7573d6000803e3d6000fd5b505050506040513d60208110156113cd57600080fd5b5051905060018514156117d8578151511561165c57603854604080840151845160335460208701519351634b6c2f7760e11b81526000956001600160a01b03908116956396d85eee95949390911691600401808560608083838d5b83811015611440578181015183820152602001611428565b5050505090500180602001846001600160a01b03166001600160a01b0316815260200180602001838103835286818151815260200191508051906020019080838360005b8381101561149c578181015183820152602001611484565b50505050905090810190601f1680156114c95780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156114fc5781810151838201526020016114e4565b50505050905090810190601f1680156115295780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b505050506040513d602081101561157657600080fd5b5051608084015160408051635d1da8cb60e01b81526001600160a01b0380851660048301526001600160e01b03199093166024820152905192935090841691635d1da8cb916044808201926020929091908290030181600087803b1580156115dd57600080fd5b505af11580156115f1573d6000803e3d6000fd5b505050506040513d602081101561160757600080fd5b505161165a576040805162461bcd60e51b815260206004820152601c60248201527f6661696c6420746f207265676973746572206e657720736368656d6500000000604482015290519081900360640190fd5b505b60608201516001600160a01b0316158015906116fa5750806001600160a01b03166381d064c483606001516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156116cd57600080fd5b505afa1580156116e1573d6000803e3d6000fd5b505050506040513d60208110156116f757600080fd5b50515b156117d857806001600160a01b031663653915e583606001516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b15801561175b57600080fd5b505af115801561176f573d6000803e3d6000fd5b505050506040513d602081101561178557600080fd5b50516117d8576040805162461bcd60e51b815260206004820152601e60248201527f6661696c6420746f20756e7265676973746572206f6c6420736368656d650000604482015290519081900360640190fd5b60335460408051878152905188926001600160a01b0316917fd2632e80f5364f02aded1c64e8a04637b7c8bb9c2db2bedf4b6ac47c013acbc0919081900360200190a350600195945050505050565b60345460009082906001600160a01b03163314611880576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b1580156118ce57600080fd5b505afa1580156118e2573d6000803e3d6000fd5b505050506040513d60208110156118f857600080fd5b5051600084815260366020908152604091829020548251630981b24d60e41b8152600481019190915291516001600160a01b039093169263981b24d0926024808201939291829003018186803b15801561195157600080fd5b505afa158015611965573d6000803e3d6000fd5b505050506040513d602081101561197b57600080fd5b50519392505050565b60345460009082906001600160a01b031633146119dd576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a2b57600080fd5b505afa158015611a3f573d6000803e3d6000fd5b505050506040513d6020811015611a5557600080fd5b50516040805163dab0efff60e01b81526001600160a01b0389811660048301528881166024830152604482018890529151919092169163dab0efff9160648083019260209291908290030181600087803b158015611ab257600080fd5b505af1158015611ac6573d6000803e3d6000fd5b505050506040513d6020811015611adc57600080fd5b50519695505050505050565b60345460009082906001600160a01b03163314611b41576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b8f57600080fd5b505afa158015611ba3573d6000803e3d6000fd5b505050506040513d6020811015611bb957600080fd5b50516040805163dea9e24d60e01b8152600481018890526001600160a01b0387811660248301529151919092169163dea9e24d9160448083019260209291908290030181600087803b158015611c0e57600080fd5b505af1158015611c22573d6000803e3d6000fd5b505050506040513d6020811015611c3857600080fd5b505195945050505050565b60345460009082906001600160a01b03163314611c9c576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611cea57600080fd5b505afa158015611cfe573d6000803e3d6000fd5b505050506040513d6020811015611d1457600080fd5b50516040805163ddbfcc6b60e01b8152600481018890526001600160a01b0387811660248301529151919092169163ddbfcc6b9160448083019260209291908290030181600087803b158015611c0e57600080fd5b6001600160a01b038416611dc4576040805162461bcd60e51b815260206004820152601c60248201527f766f74696e674d616368696e652063616e6e6f74206265207a65726f00000000604482015290519081900360640190fd5b611dcd85611fe8565b603480546001600160a01b0319166001600160a01b03861617905582611fdb576040516307b4e1e360e01b815284906001600160a01b038216906307b4e1e39085908590600401808361016080838360005b83811015611e37578181015183820152602001611e1f565b50505050905001826001600160a01b03166001600160a01b031681526020019250505060206040518083038186803b158015611e7257600080fd5b505afa158015611e86573d6000803e3d6000fd5b505050506040513d6020811015611e9c57600080fd5b505160358190556040805162941a0160e21b81526004810192909252516000916001600160a01b038416916302506804916024808201926101a092909190829003018186803b158015611eee57600080fd5b505afa158015611f02573d6000803e3d6000fd5b505050506040513d6101a0811015611f1957600080fd5b5051905080611fd457604051638894c41b60e01b81526001600160a01b03831690638894c41b9086908690600401808361016080838360005b83811015611f6a578181015183820152602001611f52565b50505050905001826001600160a01b03166001600160a01b0316815260200192505050602060405180830381600087803b158015611fa757600080fd5b505af1158015611fbb573d6000803e3d6000fd5b505050506040513d6020811015611fd157600080fd5b50505b5050611fe1565b60358390555b5050505050565b600054610100900460ff16806120015750612001612101565b8061200f575060005460ff16155b61204a5760405162461bcd60e51b815260040180806020018281038252602e8152602001806123ab602e913960400191505060405180910390fd5b600054610100900460ff16158015612075576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382166120d0576040805162461bcd60e51b815260206004820152601760248201527f536368656d65206d757374206861766520617661746172000000000000000000604482015290519081900360640190fd5b603380546001600160a01b0319166001600160a01b03841617905580156120fd576000805461ff00191690555b5050565b303b155b90565b6040518060a0016040528060608152602001606081526020016121296122ad565b815260006020820181905260409091015290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061217e57805160ff19168380011785556121ab565b828001600101855582156121ab579182015b828111156121ab578251825591602001919060010190612190565b506121b79291506122cb565b5090565b6001830191839082156122535791602002820160005b8382111561221d57835183826101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555092602001926008016020816007010492830192600103026121d1565b80156122515782816101000a81549067ffffffffffffffff021916905560080160208160070104928301926001030261221d565b505b506121b79291506122e5565b50805460018160011615610100020316600290046000825580601f1061228557506122a3565b601f0160209004906000526020600020908101906122a391906122cb565b50565b5060009055565b60405180606001604052806003906020820280368337509192915050565b61210591905b808211156121b757600081556001016122d1565b61210591905b808211156121b757805467ffffffffffffffff191681556001016122eb56fe736368656d65206e616d6520646f6573206e6f7420657869737420696e2041726348697665736368656d6520746f207265706c616365206973206e6f74207265676973746572656420696e20746865206f7267616e697a6174696f6e70726f706f73616c206d7573742068617665206120736368656d65206e616d6520746f2072656973746572206f72206164647265737320746f20756e7265676973746572436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a2646970667358221220213952b841df2cddbaf7dd30e17bc227715e3b0cd3b819fd72d9e273e31d853f64736f6c634300060a0033"
}