@gnosis.pm/pm-contracts
Version:
Collection of smart contracts for the Gnosis prediction market platform
236 lines • 313 kB
JSON
{
"contractName": "EventFactory",
"abi": [
{
"constant": true,
"inputs": [],
"name": "categoricalEventMasterCopy",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "scalarEventMasterCopy",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "bytes32"
}
],
"name": "categoricalEvents",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "bytes32"
}
],
"name": "scalarEvents",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "outcomeTokenMasterCopy",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"name": "_categoricalEventMasterCopy",
"type": "address"
},
{
"name": "_scalarEventMasterCopy",
"type": "address"
},
{
"name": "_outcomeTokenMasterCopy",
"type": "address"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "creator",
"type": "address"
},
{
"indexed": false,
"name": "categoricalEvent",
"type": "address"
},
{
"indexed": false,
"name": "collateralToken",
"type": "address"
},
{
"indexed": false,
"name": "oracle",
"type": "address"
},
{
"indexed": false,
"name": "outcomeCount",
"type": "uint8"
}
],
"name": "CategoricalEventCreation",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "creator",
"type": "address"
},
{
"indexed": false,
"name": "scalarEvent",
"type": "address"
},
{
"indexed": false,
"name": "collateralToken",
"type": "address"
},
{
"indexed": false,
"name": "oracle",
"type": "address"
},
{
"indexed": false,
"name": "lowerBound",
"type": "int256"
},
{
"indexed": false,
"name": "upperBound",
"type": "int256"
}
],
"name": "ScalarEventCreation",
"type": "event"
},
{
"constant": false,
"inputs": [
{
"name": "collateralToken",
"type": "address"
},
{
"name": "oracle",
"type": "address"
},
{
"name": "outcomeCount",
"type": "uint8"
}
],
"name": "createCategoricalEvent",
"outputs": [
{
"name": "eventContract",
"type": "address"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "collateralToken",
"type": "address"
},
{
"name": "oracle",
"type": "address"
},
{
"name": "lowerBound",
"type": "int256"
},
{
"name": "upperBound",
"type": "int256"
}
],
"name": "createScalarEvent",
"outputs": [
{
"name": "eventContract",
"type": "address"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.5.6+commit.b259423e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"categoricalEventMasterCopy\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"scalarEventMasterCopy\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"collateralToken\",\"type\":\"address\"},{\"name\":\"oracle\",\"type\":\"address\"},{\"name\":\"lowerBound\",\"type\":\"int256\"},{\"name\":\"upperBound\",\"type\":\"int256\"}],\"name\":\"createScalarEvent\",\"outputs\":[{\"name\":\"eventContract\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"categoricalEvents\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"scalarEvents\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"collateralToken\",\"type\":\"address\"},{\"name\":\"oracle\",\"type\":\"address\"},{\"name\":\"outcomeCount\",\"type\":\"uint8\"}],\"name\":\"createCategoricalEvent\",\"outputs\":[{\"name\":\"eventContract\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"outcomeTokenMasterCopy\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_categoricalEventMasterCopy\",\"type\":\"address\"},{\"name\":\"_scalarEventMasterCopy\",\"type\":\"address\"},{\"name\":\"_outcomeTokenMasterCopy\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"categoricalEvent\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"collateralToken\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"oracle\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"outcomeCount\",\"type\":\"uint8\"}],\"name\":\"CategoricalEventCreation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"scalarEvent\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"collateralToken\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"oracle\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"lowerBound\",\"type\":\"int256\"},{\"indexed\":false,\"name\":\"upperBound\",\"type\":\"int256\"}],\"name\":\"ScalarEventCreation\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"Stefan George - <stefan@gnosis.pm>\",\"methods\":{\"createCategoricalEvent(address,address,uint8)\":{\"details\":\"Creates a new categorical event and adds it to the event mapping\",\"params\":{\"collateralToken\":\"Tokens used as collateral in exchange for outcome tokens\",\"oracle\":\"Oracle contract used to resolve the event\",\"outcomeCount\":\"Number of event outcomes\"},\"return\":\"Event contract\"},\"createScalarEvent(address,address,int256,int256)\":{\"details\":\"Creates a new scalar event and adds it to the event mapping\",\"params\":{\"collateralToken\":\"Tokens used as collateral in exchange for outcome tokens\",\"lowerBound\":\"Lower bound for event outcome\",\"oracle\":\"Oracle contract used to resolve the event\",\"upperBound\":\"Lower bound for event outcome\"},\"return\":\"Event contract\"}},\"title\":\"Event factory contract - Allows creation of categorical and scalar events\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Events/EventFactory.sol\":\"EventFactory\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Events/CategoricalEvent.sol\":{\"keccak256\":\"0x0d618ff0e76444e82eb38603d60798a2ca697ca0262ef541ed0987503ed493da\",\"urls\":[\"bzzr://a8677480e10d1c369ab348a093598f84d85a51f400d114ece3d1d5055a09267a\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Events/Event.sol\":{\"keccak256\":\"0xdcacfa25145426b5681ad7d8bafb3c117c92a37b7a0175d72a10b42f130fb8c1\",\"urls\":[\"bzzr://bd10fbdb82f0d50866442c9e95317b3176c8ee067def27d764529973fb36420a\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Events/EventFactory.sol\":{\"keccak256\":\"0xd9c190f46a1f260cb6ca7aa455444cb79f4d0e732bbaa4485e36e7b6c344739c\",\"urls\":[\"bzzr://f84bccd78e77be6288cf97d3fc0cb4808d161f75d291b89df3f2232d394082f0\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Events/ScalarEvent.sol\":{\"keccak256\":\"0xb8113f1a3f63ec0b6ae2d1a833fbffcf2b2af9470d4d7591d8e2c2784a163b32\",\"urls\":[\"bzzr://feb468d84fdda273585ba31abbbf8cceb906df5a9142695ec30c98f000a05bd4\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/Oracle.sol\":{\"keccak256\":\"0xf4d12f4a59c17e66dfa6791188f621a8914e2038a4e3f72d6fc9fb903ca8e18e\",\"urls\":[\"bzzr://a477ccd203e677cc904b1a4f8fcc85251c5b5e09c5c10eed27e01318584b16d1\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Tokens/OutcomeToken.sol\":{\"keccak256\":\"0x3d4c9ec14a60cf7577d366da5116e919a4331da8d6d993174f7d599f84ae74e0\",\"urls\":[\"bzzr://20f87450259a3af24ff1769faa9ab3b714d01921e9d8fa4efa75a0c277837a8a\"]},\"@gnosis.pm/util-contracts/contracts/Proxy.sol\":{\"keccak256\":\"0xeab0e83a9ec9e7f052c0455a11577061ec6d1994db08dae429abd6faaabf6555\",\"urls\":[\"bzzr://b2c1273d4ec30e2f9e768eea8c510f8493a7359b03e01923d93eea86b57ec145\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x4ccf2d7b51873db1ccfd54ca2adae5eac3b184f9699911ed4490438419f1c690\",\"urls\":[\"bzzr://1604f5b6d6e916c154efd8c6720cda069e5ba32dfa0a9dedf2b42e5b02d07f89\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x852793a3c2f86d336a683b30d688ec3dcfc57451af5a2bf5975cda3b7191a901\",\"urls\":[\"bzzr://07fb42206812a17c1f71e548cfa5cec6f9aa1ae0ca5df870718ca4aa9759d1a5\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x90e8c2521653bbb1768b05889c5760031e688d9cd361f167489b89215e201b95\",\"urls\":[\"bzzr://aa8b45b57edafc3d67bc5d916327ea16807fae33f753ca163ae0c4061b789766\"]}},\"version\":1}",
"bytecode": "0x608060405234801561001057600080fd5b506040516060806120978339810180604052606081101561003057600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050611f6d8061012a6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638d1d2c211161005b5780638d1d2c21146101ce5780639897e8a51461023c5780639df0c176146102aa578063d1de36c21461035b5761007d565b80634b62cde6146100825780634ea0c802146100cc5780635ea194a314610116575b600080fd5b61008a6103a5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100d46103cb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61018c6004803603608081101561012c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506103f1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101fa600480360360208110156101e457600080fd5b810190808035906020019092919050505061079e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102686004803603602081101561025257600080fd5b81019080803590602001909291905050506107d1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610319600480360360608110156102c057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610804565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610363610bab565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008085858585604051602001808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b8152601401838152602001828152602001945050505050604051602081830303815290604052805190602001209050600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146104ff57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168787878760405161055590610bd1565b808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050604051809103906000f08015801561064e573d6000803e3d6000fd5b509150816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fd613e63983a1538814e1b390fc232d0e20462cf7410924f6b6a5f29ea38e82ed8388888888604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019550505050505060405180910390a250949350505050565b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080848484604051602001808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018260ff1660ff1660f81b81526001019350505050604051602081830303815290604052805190602001209050600073ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461091257600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686868660405161096790610bde565b808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018260ff1660ff16815260200195505050505050604051809103906000f080158015610a5f573d6000803e3d6000fd5b5091508160008083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167f9732758aee476f5125b50d29cc43e28422f12ec078ba9f5c712f9dbd52796f5983878787604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018260ff1660ff16815260200194505050505060405180910390a2509392505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a5d80610bec83390190565b6108f9806116498339019056fe608060405234801561001057600080fd5b5060405160c080610a5d833981018060405260c081101561003057600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505085600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100ae57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156101595750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b61016257600080fd5b83600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008090505b60028160ff16101561033f5760008660405161020590610365565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080158015610257573d6000803e3d6000fd5b50905060048190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550507fad24776dc347085865b6988e249c191fc22d9b31cf54cb62233c3c16be1736ee8183604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018260ff1660ff1681526020019250505060405180910390a15080806001019150506101ea565b5081811361034c57600080fd5b8160058190555080600681905550505050505050610372565b61021c8061084183390190565b6104c0806103816000396000f3fe60806040526004361061009c5760003560e01c8063a384d6ff11610064578063a384d6ff1461024d578063a619486e14610278578063a871da91146102cf578063b09ad8a014610300578063b2016bd41461032b578063ccdf68f3146103825761009c565b806327793f87146100ea578063561cce0a146101155780636e5452fe146101465780637dc0d1d01461017b5780638abe59ea146101d2575b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050366000803760008036600084600019f43d6000803e80600081146100e5573d6000f35b3d6000fd5b3480156100f657600080fd5b506100ff6103b1565b6040518082815260200191505060405180910390f35b34801561012157600080fd5b5061012a6103b7565b604051808260ff1660ff16815260200191505060405180910390f35b34801561015257600080fd5b5061015b6103bc565b604051808262ffffff1662ffffff16815260200191505060405180910390f35b34801561018757600080fd5b506101906103c3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101de57600080fd5b5061020b600480360360208110156101f557600080fd5b81019080803590602001909291905050506103e9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025957600080fd5b50610262610425565b6040518082815260200191505060405180910390f35b34801561028457600080fd5b5061028d61042b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102db57600080fd5b506102e4610450565b604051808260ff1660ff16815260200191505060405180910390f35b34801561030c57600080fd5b50610315610455565b6040518082815260200191505060405180910390f35b34801561033757600080fd5b5061034061045b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561038e57600080fd5b50610397610481565b604051808215151515815260200191505060405180910390f35b60035481565b600181565b620f424081565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600481815481106103f657fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081565b60065481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260149054906101000a900460ff168156fea165627a7a723058201ad326563df01e279e60dfba8f6610d07e653666c4be8ecd67c56aa15da6c7750029608060405234801561001057600080fd5b5060405160208061021c8339810180604052602081101561003057600080fd5b810190808051906020019092919050505080600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561007c57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061010e8061010e6000396000f3fe608060405260043610601c5760003560e01c8063a619486e146069575b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050366000803760008036600084600019f43d6000803e80600081146064573d6000f35b3d6000fd5b348015607457600080fd5b50607b60bd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea165627a7a72305820cbbb84b03efb936eec7a7a63670e9c47ced04c53284f2b0435d190970bfd2eb40029608060405234801561001057600080fd5b5060405160a0806108f9833981018060405260a081101561003057600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505084600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100a457600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561014f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561015f575060028160ff1610155b61016857600080fd5b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008090505b8160ff168160ff1610156103475760008560405161020d90610352565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801561025f573d6000803e3d6000fd5b50905060048190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550507fad24776dc347085865b6988e249c191fc22d9b31cf54cb62233c3c16be1736ee8183604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018260ff1660ff1681526020019250505060405180910390a15080806001019150506101f0565b50505050505061035f565b61021c806106dd83390190565b61036f8061036e6000396000f3fe6080604052600436106100555760003560e01c806327793f87146100a35780637dc0d1d0146100ce5780638abe59ea14610125578063a619486e146101a0578063b2016bd4146101f7578063ccdf68f31461024e575b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050366000803760008036600084600019f43d6000803e806000811461009e573d6000f35b3d6000fd5b3480156100af57600080fd5b506100b861027d565b6040518082815260200191505060405180910390f35b3480156100da57600080fd5b506100e3610283565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013157600080fd5b5061015e6004803603602081101561014857600080fd5b81019080803590602001909291905050506102a9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101ac57600080fd5b506101b56102e5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020357600080fd5b5061020c61030a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025a57600080fd5b50610263610330565b604051808215151515815260200191505060405180910390f35b60035481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600481815481106102b657fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260149054906101000a900460ff168156fea165627a7a72305820014e05e63184c259de93dc2c6cc18e3837a4303e70d98d8e73308d4c09d57e8e0029608060405234801561001057600080fd5b5060405160208061021c8339810180604052602081101561003057600080fd5b810190808051906020019092919050505080600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561007c57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061010e8061010e6000396000f3fe608060405260043610601c5760003560e01c8063a619486e146069575b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050366000803760008036600084600019f43d6000803e80600081146064573d6000f35b3d6000fd5b348015607457600080fd5b50607b60bd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea165627a7a72305820cbbb84b03efb936eec7a7a63670e9c47ced04c53284f2b0435d190970bfd2eb40029a165627a7a7230582008101e4f0a242b6a57fb1991dcb40883536c1ac1cc65fdd821a6a5d6b3ccf3dd0029",
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80638d1d2c211161005b5780638d1d2c21146101ce5780639897e8a51461023c5780639df0c176146102aa578063d1de36c21461035b5761007d565b80634b62cde6146100825780634ea0c802146100cc5780635ea194a314610116575b600080fd5b61008a6103a5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100d46103cb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61018c6004803603608081101561012c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506103f1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101fa600480360360208110156101e457600080fd5b810190808035906020019092919050505061079e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102686004803603602081101561025257600080fd5b81019080803590602001909291905050506107d1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610319600480360360608110156102c057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610804565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610363610bab565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008085858585604051602001808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b8152601401838152602001828152602001945050505050604051602081830303815290604052805190602001209050600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146104ff57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168787878760405161055590610bd1565b808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050604051809103906000f08015801561064e573d6000803e3d6000fd5b509150816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fd613e63983a1538814e1b390fc232d0e20462cf7410924f6b6a5f29ea38e82ed8388888888604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019550505050505060405180910390a250949350505050565b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080848484604051602001808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018260ff1660ff1660f81b81526001019350505050604051602081830303815290604052805190602001209050600073ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461091257600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686868660405161096790610bde565b808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018260ff1660ff16815260200195505050505050604051809103906000f080158015610a5f573d6000803e3d6000fd5b5091508160008083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167f9732758aee476f5125b50d29cc43e28422f12ec078ba9f5c712f9dbd52796f5983878787604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018260ff1660ff16815260200194505050505060405180910390a2509392505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a5d80610bec83390190565b6108f9806116498339019056fe608060405234801561001057600080fd5b5060405160c080610a5d833981018060405260c081101561003057600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505085600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100ae57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156101595750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b61016257600080fd5b83600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008090505b60028160ff16101561033f5760008660405161020590610365565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080158015610257573d6000803e3d6000fd5b50905060048190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550507fad24776dc347085865b6988e249c191fc22d9b31cf54cb62233c3c16be1736ee8183604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018260ff1660ff1681526020019250505060405180910390a15080806001019150506101ea565b5081811361034c57600080fd5b8160058190555080600681905550505050505050610372565b61021c8061084183390190565b6104c0806103816000396000f3fe60806040526004361061009c5760003560e01c8063a384d6ff11610064578063a384d6ff1461024d578063a619486e14610278578063a871da91146102cf578063b09ad8a014610300578063b2016bd41461032b578063ccdf68f3146103825761009c565b806327793f87146100ea578063561cce0a146101155780636e5452fe146101465780637dc0d1d01461017b5780638abe59ea146101d2575b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050366000803760008036600084600019f43d6000803e80600081146100e5573d6000f35b3d6000fd5b3480156100f657600080fd5b506100ff6103b1565b6040518082815260200191505060405180910390f35b34801561012157600080fd5b5061012a6103b7565b604051808260ff1660ff16815260200191505060405180910390f35b34801561015257600080fd5b5061015b6103bc565b604051808262ffffff1662ffffff16815260200191505060405180910390f35b34801561018757600080fd5b506101906103c3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101de57600080fd5b5061020b600480360360208110156101f557600080fd5b81019080803590602001909291905050506103e9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025957600080fd5b50610262610425565b6040518082815260200191505060405180910390f35b34801561028457600080fd5b5061028d61042b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102db57600080fd5b506102e4610450565b604051808260ff1660ff16815260200191505060405180910390f35b34801561030c57600080fd5b50610315610455565b6040518082815260200191505060405180910390f35b34801561033757600080fd5b5061034061045b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561038e57600080fd5b50610397610481565b604051808215151515815260200191505060405180910390f35b60035481565b600181565b620f424081565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600481815481106103f657fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081565b60065481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260149054906101000a900460ff168156fea165627a7a723058201ad326563df01e279e60dfba8f6610d07e653666c4be8ecd67c56aa15da6c7750029608060405234801561001057600080fd5b5060405160208061021c8339810180604052602081101561003057600080fd5b810190808051906020019092919050505080600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561007c57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061010e8061010e6000396000f3fe608060405260043610601c5760003560e01c8063a619486e146069575b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050366000803760008036600084600019f43d6000803e80600081146064573d6000f35b3d6000fd5b348015607457600080fd5b50607b60bd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea165627a7a72305820cbbb84b03efb936eec7a7a63670e9c47ced04c53284f2b0435d190970bfd2eb40029608060405234801561001057600080fd5b5060405160a0806108f9833981018060405260a081101561003057600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505084600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100a457600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561014f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561015f575060028160ff1610155b61016857600080fd5b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008090505b8160ff168160ff1610156103475760008560405161020d90610352565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801561025f573d6000803e3d6000fd5b50905060048190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550507fad24776dc347085865b6988e249c191fc22d9b31cf54cb62233c3c16be1736ee8183604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018260ff1660ff1681526020019250505060405180910390a15080806001019150506101f0565b50505050505061035f565b61021c806106dd83390190565b61036f8061036e6000396000f3fe6080604052600436106100555760003560e01c806327793f87146100a35780637dc0d1d0146100ce5780638abe59ea14610125578063a619486e146101a0578063b2016bd4146101f7578063ccdf68f31461024e575b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050366000803760008036600084600019f43d6000803e806000811461009e573d6000f35b3d6000fd5b3480156100af57600080fd5b506100b861027d565b6040518082815260200191505060405180910390f35b3480156100da57600080fd5b506100e3610283565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013157600080fd5b5061015e6004803603602081101561014857600080fd5b81019080803590602001909291905050506102a9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101ac57600080fd5b506101b56102e5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020357600080fd5b5061020c61030a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025a57600080fd5b50610263610330565b604051808215151515815260200191505060405180910390f35b60035481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600481815481106102b657fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260149054906101000a900460ff168156fea165627a7a72305820014e05e63184c259de93dc2c6cc18e3837a4303e70d98d8e73308d4c09d57e8e0029608060405234801561001057600080fd5b5060405160208061021c8339810180604052602081101561003057600080fd5b810190808051906020019092919050505080600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561007c57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061010e8061010e6000396000f3fe608060405260043610601c5760003560e01c8063a619486e146069575b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050366000803760008036600084600019f43d6000803e80600081146064573d6000f35b3d6000fd5b348015607457600080fd5b50607b60bd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea165627a7a72305820cbbb84b03efb936eec7a7a63670e9c47ced04c53284f2b0435d190970bfd2eb40029a165627a7a7230582008101e4f0a242b6a57fb1991dcb40883536c1ac1cc65fdd821a6a5d6b3ccf3dd0029",
"sourceMap": "235:3477:2:-;;;948:368;8:9:-1;5:2;;;30:1;27;20:12;5:2;948:368:2;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;948:368:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1168:27;1139:26;;:56;;;;;;;;;;;;;;;;;;1229:22;1205:21;;:46;;;;;;;;;;;;;;;;;;1286:23;1261:22;;:48;;;;;;;;;;;;;;;;;;948:368;;;235:3477;;;;;;",
"deployedSourceMap": "235:3477:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;235:3477:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;757:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;813:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2849:861;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;2849:861:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;631:62;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;631:62:2;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;699:52;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;699:52:2;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1636:839;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1636:839:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;859:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;757:50;;;;;;;;;;;;;:::o;813:40::-;;;;;;;;;;;;;:::o;2849:861::-;3016:25;3057:17;3104:15;3121:6;3129:10;3141;3087:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3087:65:2;;;3077:76;;;;;;3057:96;;3253:1;3209:46;;3217:12;:23;3230:9;3217:23;;;;;;;;;;;;;;;;;;;;;3209:46;;;3201:55;;;;;;3368:21;;;;;;;;;;;3412:22;;;;;;;;;;;3449:15;3478:6;3498:10;3522;3326:216;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3326:216:2;3290:254;;3580:13;3554:12;:23;3567:9;3554:23;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;3628:10;3608:95;;;3640:13;3655:15;3672:6;3680:10;3692;3608:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2849:861;;;;;;;:::o;631:62::-;;;;;;;;;;;;;;;;;;;;;;:::o;699:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;1636:839::-;1788:30;1834:17;1881:15;1898:6;1906:12;1864:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1864:55:2;;;1854:66;;;;;;1834:86;;2025:1;1976:51;;1984:17;:28;2002:9;1984:28;;;;;;;;;;;;;;;;;;;;;1976:51;;;1968:60;;;;;;2150:26;;;;;;;;;;;2199:22;;;;;;;;;;;2236:15;2265:6;2285:12;2103:204;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2103:204:2;2062:247;;2350:13;2319:17;:28;2337:9;2319:28;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;2403:10;2378:90;;;2415:13;2430:15;2447:6;2455:12;2378:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1636:839;;;;;;:::o;859:42::-;;;;;;;;;;;;;:::o;235:3477::-;;;;;;;;:::o;:::-;;;;;;;;:::o",
"source": "pragma solidity ^0.5.0;\nimport \"../Events/CategoricalEvent.sol\";\nimport \"../Events/ScalarEvent.sol\";\n\n\n/// @title Event factory contract - Allows creation of categorical and scalar events\n/// @author Stefan George - <stefan@gnosis.pm>\ncontract EventFactory {\n\n /*\n * Events\n */\n event CategoricalEventCreation(address indexed creator, CategoricalEvent categoricalEvent, ERC20 collateralToken, Oracle oracle, uint8 outcomeCount);\n event ScalarEventCreation(address indexed creator, ScalarEvent scalarEvent, ERC20 collateralToken, Oracle oracle, int lowerBound, int upperBound);\n\n /*\n * Storage\n */\n mapping (bytes32 => CategoricalEvent) public categoricalEvents;\n mapping (bytes32 => ScalarEvent) public scalarEvents;\n CategoricalEvent public categoricalEventMasterCopy;\n ScalarEvent public scalarEventMasterCopy;\n OutcomeToken public outcomeTokenMasterCopy;\n\n /*\n * Public functions\n */\n constructor(\n CategoricalEvent _categoricalEventMasterCopy,\n ScalarEvent _scalarEventMasterCopy,\n OutcomeToken _outcomeTokenMasterCopy\n )\n public\n {\n categoricalEventMasterCopy = _categoricalEventMasterCopy;\n scalarEventMasterCopy = _scalarEventMasterCopy;\n outcomeTokenMasterCopy = _outcomeTokenMasterCopy;\n }\n\n /// @dev Creates a new categorical event and adds it to the event mapping\n /// @param collateralToken Tokens used as collateral in exchange for outcome tokens\n /// @param oracle Oracle contract used to resolve the event\n /// @param outcomeCount Number of event outcomes\n /// @return Event contract\n function createCategoricalEvent(\n ERC20 collateralToken,\n Oracle oracle,\n uint8 outcomeCount\n )\n public\n returns (CategoricalEvent eventContract)\n {\n bytes32 eventHash = keccak256(abi.encodePacked(collateralToken, oracle, outcomeCount));\n // Event should not exist yet\n require(address(categoricalEvents[eventHash]) == address(0));\n // Create event\n eventContract = CategoricalEvent(address(new CategoricalEventProxy(\n address(categoricalEventMasterCopy),\n address(outcomeTokenMasterCopy),\n collateralToken,\n oracle,\n outcomeCount\n )));\n categoricalEvents[eventHash] = eventContract;\n emit CategoricalEventCreation(msg.sender, eventContract, collateralToken, oracle, outcomeCount);\n }\n\n /// @dev Creates a new scalar event and adds it to the event mapping\n /// @param collateralToken Tokens used as collateral in exchange for outcome tokens\n /// @param oracle Oracle contract used to resolve the event\n /// @param lowerBound Lower bound for event outcome\n /// @param upperBound Lower bound for event outcome\n /// @return Event contract\n function createScalarEvent(\n ERC20 collateralToken,\n Oracle oracle,\n int lowerBound,\n int upperBound\n )\n public\n returns (ScalarEvent eventContract)\n {\n bytes32 eventHash = kecc