diff --git a/client/src/App.jsx b/client/src/App.jsx index c72c0e6..156cef6 100644 --- a/client/src/App.jsx +++ b/client/src/App.jsx @@ -8,12 +8,12 @@ import DAOArtifact from './assets/DAO.json'; const contracts = { '0x539': { // Hardhat - DAO: '0x8d914D38dD301FC4606f5aa9fEcF8A76389020d3', - Work1: '0x050C420Cc4995B41217Eba1B54B82Fd5687e9139', + DAO: '0x63472674239ffb70618Fae043610917f2d9B781C', + Work1: '0xC62b0b16B3ef06c417BFC4Fb02E0Da06aF5A95Ef', }, '0xaa36a7': { // Sepolia - DAO: '0x57BDFFf79108E5198dec6268A6BFFD8B62ECfA38', - Work1: '0x6c18eb38b7450F8DaE5A5928A40fcA3952493Ee4', + DAO: '0x8F00038542C87A5eAf18d5938B7723bF2A04A4e4', + Work1: '0x42b79f8d8408c36aD4347ab72f826684440a7a8F', }, }; @@ -87,9 +87,13 @@ function App() { // setWork1(work1Contract); setDAO(DAOContract); + DAOContract.events.PostAdded({ fromBlock: 'latest' }).on('data', (event) => { + console.log('event: post added', event); + fetchPosts(); + }); + DAOContract.events.ValidationPoolInitiated({ fromBlock: 'latest' }).on('data', (event) => { console.log('event: validation pool initiated', event); - fetchPosts(); fetchValidationPools(); }); diff --git a/client/src/assets/DAO.json b/client/src/assets/DAO.json index 9aa0a66..a863179 100644 --- a/client/src/assets/DAO.json +++ b/client/src/assets/DAO.json @@ -114,6 +114,19 @@ "name": "Approval", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "postIndex", + "type": "uint256" + } + ], + "name": "PostAdded", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -628,8 +641,8 @@ "type": "function" } ], - "bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280600a81526020017f52657075746174696f6e000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f524550000000000000000000000000000000000000000000000000000000000081525081600390816200008f919062000324565b508060049081620000a1919062000324565b5050506200040b565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200012c57607f821691505b602082108103620001425762000141620000e4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620001ac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200016d565b620001b886836200016d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000205620001ff620001f984620001d0565b620001da565b620001d0565b9050919050565b6000819050919050565b6200022183620001e4565b6200023962000230826200020c565b8484546200017a565b825550505050565b600090565b6200025062000241565b6200025d81848462000216565b505050565b5b8181101562000285576200027960008262000246565b60018101905062000263565b5050565b601f821115620002d4576200029e8162000148565b620002a9846200015d565b81016020851015620002b9578190505b620002d1620002c8856200015d565b83018262000262565b50505b505050565b600082821c905092915050565b6000620002f960001984600802620002d9565b1980831691505092915050565b6000620003148383620002e6565b9150826002028217905092915050565b6200032f82620000aa565b67ffffffffffffffff8111156200034b576200034a620000b5565b5b62000357825462000113565b6200036482828562000289565b600060209050601f8311600181146200039c576000841562000387578287015190505b62000393858262000306565b86555062000403565b601f198416620003ac8662000148565b60005b82811015620003d657848901518255600182019150602085019450602081019050620003af565b86831015620003f65784890151620003f2601f891682620002e6565b8355505b6001600288020188555050505b505050505050565b61237e806200041b6000396000f3fe60806040526004361061012a5760003560e01c8063561b2463116100ab57806395d89b411161006f57806395d89b41146104445780639fcb294b1461046f578063a230c5241461049f578063a2336279146104dc578063a9059cbb14610522578063dd62ed3e1461055f5761012a565b8063561b2463146103395780635daf08ca14610362578063642b5bfb1461039f57806370a08231146103ca57806388380274146104075761012a565b806317c18217116100f257806317c182171461022c57806318160ddd1461026957806323b872dd14610294578063313ce567146102d15780633ff75442146102fc5761012a565b806306fdde031461012f578063095ea7b31461015a5780630b1e7f831461019757806311aee380146101d657806317906c2e14610201575b600080fd5b34801561013b57600080fd5b5061014461059c565b6040516101519190611a11565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c9190611acc565b61062e565b60405161018e9190611b27565b60405180910390f35b3480156101a357600080fd5b506101be60048036038101906101b99190611b42565b610651565b6040516101cd93929190611b8d565b60405180910390f35b3480156101e257600080fd5b506101eb6106bb565b6040516101f89190611bc4565b60405180910390f35b34801561020d57600080fd5b506102166106c1565b6040516102239190611bc4565b60405180910390f35b34801561023857600080fd5b50610253600480360381019061024e9190611b42565b6106c7565b6040516102609190611b27565b60405180910390f35b34801561027557600080fd5b5061027e610c1b565b60405161028b9190611bc4565b60405180910390f35b3480156102a057600080fd5b506102bb60048036038101906102b69190611bdf565b610c25565b6040516102c89190611b27565b60405180910390f35b3480156102dd57600080fd5b506102e6610c54565b6040516102f39190611c4e565b60405180910390f35b34801561030857600080fd5b50610323600480360381019061031e9190611c69565b610c5d565b6040516103309190611bc4565b60405180910390f35b34801561034557600080fd5b50610360600480360381019061035b9190611cc2565b610d24565b005b34801561036e57600080fd5b5061038960048036038101906103849190611b42565b610d4d565b6040516103969190611d15565b60405180910390f35b3480156103ab57600080fd5b506103b4610d80565b6040516103c19190611bc4565b60405180910390f35b3480156103d657600080fd5b506103f160048036038101906103ec9190611c69565b610d86565b6040516103fe9190611bc4565b60405180910390f35b34801561041357600080fd5b5061042e60048036038101906104299190611d30565b610dce565b60405161043b9190611b27565b60405180910390f35b34801561045057600080fd5b50610459610e59565b6040516104669190611a11565b60405180910390f35b61048960048036038101906104849190611d83565b610eeb565b6040516104969190611bc4565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c19190611c69565b611128565b6040516104d39190611b27565b60405180910390f35b3480156104e857600080fd5b5061050360048036038101906104fe9190611b42565b611148565b6040516105199a99989796959493929190611dc3565b60405180910390f35b34801561052e57600080fd5b5061054960048036038101906105449190611acc565b6111b6565b6040516105569190611b27565b60405180910390f35b34801561056b57600080fd5b5061058660048036038101906105819190611e5f565b6111d9565b6040516105939190611bc4565b60405180910390f35b6060600380546105ab90611ece565b80601f01602080910402602001604051908101604052809291908181526020018280546105d790611ece565b80156106245780601f106105f957610100808354040283529160200191610624565b820191906000526020600020905b81548152906001019060200180831161060757829003601f168201915b5050505050905090565b600080610639611260565b9050610646818585611268565b600191505092915050565b600a6020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b60065481565b600b5481565b6000806008600084815260200190815260200160002090506000600a600083600101548152602001908152602001600020905081600801544211610740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073790611f71565b60405180910390fd5b600015158260090160009054906101000a900460ff16151514610798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078f90611fdd565b60405180910390fd5b600080600080600090505b85600301548110156108145785600201600082815260200190815260200160002091508160010160009054906101000a900460ff16156107f4578160020154846107ed919061202c565b9350610807565b816002015483610804919061202c565b92505b80806001019150506107a3565b508183101595508580156108965750600760008560020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156109a4578360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660056000600660008154809291906108d790612060565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008660020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60018560090160006101000a81548160ff021916908315150217905550858560090160016101000a81548160ff0219169083151502179055507f926ee3a021d24f18cfab444988fa0338bcaa0f1e0d7c2211c07d10cbad6772948787604051610a0e9291906120a8565b60405180910390a1600086610a235782610a25565b835b9050600087610a345784610a36565b835b9050600080600090505b8860030154811015610af95788600201600082815260200190815260200160002094508460010160009054906101000a900460ff1615158a151503610aec57600084866002015485610a9291906120d1565b610a9c9190612142565b9050610adc308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838960020154610ad7919061202c565b61127a565b8083610ae8919061202c565b9250505b8080600101915050610a40565b5060008183610b089190612173565b90506000811115610b4357610b42308960020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361127a565b5b60005b600654811015610c0c5760006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610b92610c1b565b610b9b83610d86565b8d60040154610baa91906120d1565b610bb49190612142565b90508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610bfc573d6000803e3d6000fd5b5050508080600101915050610b46565b50505050505050505050919050565b6000600254905090565b600080610c30611260565b9050610c3d85828561136e565b610c4885858561127a565b60019150509392505050565b60006012905090565b6000600b6000815480929190610c7290612060565b9190505590506000600a60008381526020019081526020016000209050828160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550338160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081816000018190555050919050565b6000600860008581526020019081526020016000209050610d4781338585611402565b50505050565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610dda84846111b6565b90508015610e52578373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b8152600401610e1f939291906121a7565b600060405180830381600087803b158015610e3957600080fd5b505af1158015610e4d573d6000803e3d6000fd5b505050505b9392505050565b606060048054610e6890611ece565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9490611ece565b8015610ee15780601f10610eb657610100808354040283529160200191610ee1565b820191906000526020600020905b815481529060010190602001808311610ec457829003601f168201915b5050505050905090565b6000803411610f2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2690612250565b60405180910390fd5b6000600a60008581526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd0906122bc565b60405180910390fd5b60096000815480929190610fec90612060565b91905055915060006008600084815260200190815260200160002090508481600101819055503481600401819055508381600701819055508342611030919061202c565b816008018190555082816000018190555061106f8260020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1634611503565b6110ac818360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002346110a59190612142565b6001611402565b6110e9818360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002346110e29190612142565b6000611402565b7f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a836040516111189190611bc4565b60405180910390a1505092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b60086020528060005260406000206000915090508060000154908060010154908060030154908060040154908060050154908060060154908060070154908060080154908060090160009054906101000a900460ff16908060090160019054906101000a900460ff1690508a565b6000806111c1611260565b90506111ce81858561127a565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b6112758383836001611585565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112ec5760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016112e39190611d15565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361135e5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016113559190611d15565b60405180910390fd5b61136983838361175c565b505050565b600061137a84846111d9565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146113fc57818110156113ec578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016113e3939291906121a7565b60405180910390fd5b6113fb84848484036000611585565b5b50505050565b8360080154421115611449576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144090612328565b60405180910390fd5b61145483308461127a565b600084600301600081548092919061146b90612060565b91905055905060008560020160008381526020019081526020016000209050848160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010160006101000a81548160ff021916908315150217905550838160020181905550818160000181905550505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115755760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161156c9190611d15565b60405180910390fd5b6115816000838361175c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036115f75760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016115ee9190611d15565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116695760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016116609190611d15565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015611756578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161174d9190611bc4565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117ae5780600260008282546117a2919061202c565b92505081905550611881565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561183a578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611831939291906121a7565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118ca5780600260008282540392505081905550611917565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119749190611bc4565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156119bb5780820151818401526020810190506119a0565b60008484015250505050565b6000601f19601f8301169050919050565b60006119e382611981565b6119ed818561198c565b93506119fd81856020860161199d565b611a06816119c7565b840191505092915050565b60006020820190508181036000830152611a2b81846119d8565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611a6382611a38565b9050919050565b611a7381611a58565b8114611a7e57600080fd5b50565b600081359050611a9081611a6a565b92915050565b6000819050919050565b611aa981611a96565b8114611ab457600080fd5b50565b600081359050611ac681611aa0565b92915050565b60008060408385031215611ae357611ae2611a33565b5b6000611af185828601611a81565b9250506020611b0285828601611ab7565b9150509250929050565b60008115159050919050565b611b2181611b0c565b82525050565b6000602082019050611b3c6000830184611b18565b92915050565b600060208284031215611b5857611b57611a33565b5b6000611b6684828501611ab7565b91505092915050565b611b7881611a96565b82525050565b611b8781611a58565b82525050565b6000606082019050611ba26000830186611b6f565b611baf6020830185611b7e565b611bbc6040830184611b7e565b949350505050565b6000602082019050611bd96000830184611b6f565b92915050565b600080600060608486031215611bf857611bf7611a33565b5b6000611c0686828701611a81565b9350506020611c1786828701611a81565b9250506040611c2886828701611ab7565b9150509250925092565b600060ff82169050919050565b611c4881611c32565b82525050565b6000602082019050611c636000830184611c3f565b92915050565b600060208284031215611c7f57611c7e611a33565b5b6000611c8d84828501611a81565b91505092915050565b611c9f81611b0c565b8114611caa57600080fd5b50565b600081359050611cbc81611c96565b92915050565b600080600060608486031215611cdb57611cda611a33565b5b6000611ce986828701611ab7565b9350506020611cfa86828701611ab7565b9250506040611d0b86828701611cad565b9150509250925092565b6000602082019050611d2a6000830184611b7e565b92915050565b600080600060608486031215611d4957611d48611a33565b5b6000611d5786828701611a81565b9350506020611d6886828701611ab7565b9250506040611d7986828701611ab7565b9150509250925092565b60008060408385031215611d9a57611d99611a33565b5b6000611da885828601611ab7565b9250506020611db985828601611ab7565b9150509250929050565b600061014082019050611dd9600083018d611b6f565b611de6602083018c611b6f565b611df3604083018b611b6f565b611e00606083018a611b6f565b611e0d6080830189611b6f565b611e1a60a0830188611b6f565b611e2760c0830187611b6f565b611e3460e0830186611b6f565b611e42610100830185611b18565b611e50610120830184611b18565b9b9a5050505050505050505050565b60008060408385031215611e7657611e75611a33565b5b6000611e8485828601611a81565b9250506020611e9585828601611a81565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611ee657607f821691505b602082108103611ef957611ef8611e9f565b5b50919050565b7f506f6f6c20656e642074696d6520686173206e6f74207965742061727269766560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000611f5b60218361198c565b9150611f6682611eff565b604082019050919050565b60006020820190508181036000830152611f8a81611f4e565b9050919050565b7f506f6f6c20697320616c7265616479207265736f6c7665640000000000000000600082015250565b6000611fc760188361198c565b9150611fd282611f91565b602082019050919050565b60006020820190508181036000830152611ff681611fba565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061203782611a96565b915061204283611a96565b925082820190508082111561205a57612059611ffd565b5b92915050565b600061206b82611a96565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361209d5761209c611ffd565b5b600182019050919050565b60006040820190506120bd6000830185611b6f565b6120ca6020830184611b18565b9392505050565b60006120dc82611a96565b91506120e783611a96565b92508282026120f581611a96565b9150828204841483151761210c5761210b611ffd565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061214d82611a96565b915061215883611a96565b92508261216857612167612113565b5b828204905092915050565b600061217e82611a96565b915061218983611a96565b92508282039050818111156121a1576121a0611ffd565b5b92915050565b60006060820190506121bc6000830186611b7e565b6121c96020830185611b6f565b6121d66040830184611b6f565b949350505050565b7f46656520697320726571756972656420746f20696e6974696174652076616c6960008201527f646174696f6e20706f6f6c000000000000000000000000000000000000000000602082015250565b600061223a602b8361198c565b9150612245826121de565b604082019050919050565b600060208201905081810360008301526122698161222d565b9050919050565b7f54617267657420706f7374206e6f7420666f756e640000000000000000000000600082015250565b60006122a660158361198c565b91506122b182612270565b602082019050919050565b600060208201905081810360008301526122d581612299565b9050919050565b7f506f6f6c20656e642074696d6520686173207061737365640000000000000000600082015250565b600061231260188361198c565b915061231d826122dc565b602082019050919050565b6000602082019050818103600083015261234181612305565b905091905056fea26469706673582212205bf3734283409d3522253e6c0d8d80b9bbe048ca1eb009f5b29f5f5fecf1ec0b64736f6c63430008180033", - "deployedBytecode": "0x60806040526004361061012a5760003560e01c8063561b2463116100ab57806395d89b411161006f57806395d89b41146104445780639fcb294b1461046f578063a230c5241461049f578063a2336279146104dc578063a9059cbb14610522578063dd62ed3e1461055f5761012a565b8063561b2463146103395780635daf08ca14610362578063642b5bfb1461039f57806370a08231146103ca57806388380274146104075761012a565b806317c18217116100f257806317c182171461022c57806318160ddd1461026957806323b872dd14610294578063313ce567146102d15780633ff75442146102fc5761012a565b806306fdde031461012f578063095ea7b31461015a5780630b1e7f831461019757806311aee380146101d657806317906c2e14610201575b600080fd5b34801561013b57600080fd5b5061014461059c565b6040516101519190611a11565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c9190611acc565b61062e565b60405161018e9190611b27565b60405180910390f35b3480156101a357600080fd5b506101be60048036038101906101b99190611b42565b610651565b6040516101cd93929190611b8d565b60405180910390f35b3480156101e257600080fd5b506101eb6106bb565b6040516101f89190611bc4565b60405180910390f35b34801561020d57600080fd5b506102166106c1565b6040516102239190611bc4565b60405180910390f35b34801561023857600080fd5b50610253600480360381019061024e9190611b42565b6106c7565b6040516102609190611b27565b60405180910390f35b34801561027557600080fd5b5061027e610c1b565b60405161028b9190611bc4565b60405180910390f35b3480156102a057600080fd5b506102bb60048036038101906102b69190611bdf565b610c25565b6040516102c89190611b27565b60405180910390f35b3480156102dd57600080fd5b506102e6610c54565b6040516102f39190611c4e565b60405180910390f35b34801561030857600080fd5b50610323600480360381019061031e9190611c69565b610c5d565b6040516103309190611bc4565b60405180910390f35b34801561034557600080fd5b50610360600480360381019061035b9190611cc2565b610d24565b005b34801561036e57600080fd5b5061038960048036038101906103849190611b42565b610d4d565b6040516103969190611d15565b60405180910390f35b3480156103ab57600080fd5b506103b4610d80565b6040516103c19190611bc4565b60405180910390f35b3480156103d657600080fd5b506103f160048036038101906103ec9190611c69565b610d86565b6040516103fe9190611bc4565b60405180910390f35b34801561041357600080fd5b5061042e60048036038101906104299190611d30565b610dce565b60405161043b9190611b27565b60405180910390f35b34801561045057600080fd5b50610459610e59565b6040516104669190611a11565b60405180910390f35b61048960048036038101906104849190611d83565b610eeb565b6040516104969190611bc4565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c19190611c69565b611128565b6040516104d39190611b27565b60405180910390f35b3480156104e857600080fd5b5061050360048036038101906104fe9190611b42565b611148565b6040516105199a99989796959493929190611dc3565b60405180910390f35b34801561052e57600080fd5b5061054960048036038101906105449190611acc565b6111b6565b6040516105569190611b27565b60405180910390f35b34801561056b57600080fd5b5061058660048036038101906105819190611e5f565b6111d9565b6040516105939190611bc4565b60405180910390f35b6060600380546105ab90611ece565b80601f01602080910402602001604051908101604052809291908181526020018280546105d790611ece565b80156106245780601f106105f957610100808354040283529160200191610624565b820191906000526020600020905b81548152906001019060200180831161060757829003601f168201915b5050505050905090565b600080610639611260565b9050610646818585611268565b600191505092915050565b600a6020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b60065481565b600b5481565b6000806008600084815260200190815260200160002090506000600a600083600101548152602001908152602001600020905081600801544211610740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073790611f71565b60405180910390fd5b600015158260090160009054906101000a900460ff16151514610798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078f90611fdd565b60405180910390fd5b600080600080600090505b85600301548110156108145785600201600082815260200190815260200160002091508160010160009054906101000a900460ff16156107f4578160020154846107ed919061202c565b9350610807565b816002015483610804919061202c565b92505b80806001019150506107a3565b508183101595508580156108965750600760008560020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156109a4578360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660056000600660008154809291906108d790612060565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008660020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60018560090160006101000a81548160ff021916908315150217905550858560090160016101000a81548160ff0219169083151502179055507f926ee3a021d24f18cfab444988fa0338bcaa0f1e0d7c2211c07d10cbad6772948787604051610a0e9291906120a8565b60405180910390a1600086610a235782610a25565b835b9050600087610a345784610a36565b835b9050600080600090505b8860030154811015610af95788600201600082815260200190815260200160002094508460010160009054906101000a900460ff1615158a151503610aec57600084866002015485610a9291906120d1565b610a9c9190612142565b9050610adc308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838960020154610ad7919061202c565b61127a565b8083610ae8919061202c565b9250505b8080600101915050610a40565b5060008183610b089190612173565b90506000811115610b4357610b42308960020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361127a565b5b60005b600654811015610c0c5760006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610b92610c1b565b610b9b83610d86565b8d60040154610baa91906120d1565b610bb49190612142565b90508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610bfc573d6000803e3d6000fd5b5050508080600101915050610b46565b50505050505050505050919050565b6000600254905090565b600080610c30611260565b9050610c3d85828561136e565b610c4885858561127a565b60019150509392505050565b60006012905090565b6000600b6000815480929190610c7290612060565b9190505590506000600a60008381526020019081526020016000209050828160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550338160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081816000018190555050919050565b6000600860008581526020019081526020016000209050610d4781338585611402565b50505050565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610dda84846111b6565b90508015610e52578373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b8152600401610e1f939291906121a7565b600060405180830381600087803b158015610e3957600080fd5b505af1158015610e4d573d6000803e3d6000fd5b505050505b9392505050565b606060048054610e6890611ece565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9490611ece565b8015610ee15780601f10610eb657610100808354040283529160200191610ee1565b820191906000526020600020905b815481529060010190602001808311610ec457829003601f168201915b5050505050905090565b6000803411610f2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2690612250565b60405180910390fd5b6000600a60008581526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd0906122bc565b60405180910390fd5b60096000815480929190610fec90612060565b91905055915060006008600084815260200190815260200160002090508481600101819055503481600401819055508381600701819055508342611030919061202c565b816008018190555082816000018190555061106f8260020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1634611503565b6110ac818360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002346110a59190612142565b6001611402565b6110e9818360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002346110e29190612142565b6000611402565b7f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a836040516111189190611bc4565b60405180910390a1505092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b60086020528060005260406000206000915090508060000154908060010154908060030154908060040154908060050154908060060154908060070154908060080154908060090160009054906101000a900460ff16908060090160019054906101000a900460ff1690508a565b6000806111c1611260565b90506111ce81858561127a565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b6112758383836001611585565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112ec5760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016112e39190611d15565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361135e5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016113559190611d15565b60405180910390fd5b61136983838361175c565b505050565b600061137a84846111d9565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146113fc57818110156113ec578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016113e3939291906121a7565b60405180910390fd5b6113fb84848484036000611585565b5b50505050565b8360080154421115611449576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144090612328565b60405180910390fd5b61145483308461127a565b600084600301600081548092919061146b90612060565b91905055905060008560020160008381526020019081526020016000209050848160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010160006101000a81548160ff021916908315150217905550838160020181905550818160000181905550505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115755760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161156c9190611d15565b60405180910390fd5b6115816000838361175c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036115f75760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016115ee9190611d15565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116695760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016116609190611d15565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015611756578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161174d9190611bc4565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117ae5780600260008282546117a2919061202c565b92505081905550611881565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561183a578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611831939291906121a7565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118ca5780600260008282540392505081905550611917565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119749190611bc4565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156119bb5780820151818401526020810190506119a0565b60008484015250505050565b6000601f19601f8301169050919050565b60006119e382611981565b6119ed818561198c565b93506119fd81856020860161199d565b611a06816119c7565b840191505092915050565b60006020820190508181036000830152611a2b81846119d8565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611a6382611a38565b9050919050565b611a7381611a58565b8114611a7e57600080fd5b50565b600081359050611a9081611a6a565b92915050565b6000819050919050565b611aa981611a96565b8114611ab457600080fd5b50565b600081359050611ac681611aa0565b92915050565b60008060408385031215611ae357611ae2611a33565b5b6000611af185828601611a81565b9250506020611b0285828601611ab7565b9150509250929050565b60008115159050919050565b611b2181611b0c565b82525050565b6000602082019050611b3c6000830184611b18565b92915050565b600060208284031215611b5857611b57611a33565b5b6000611b6684828501611ab7565b91505092915050565b611b7881611a96565b82525050565b611b8781611a58565b82525050565b6000606082019050611ba26000830186611b6f565b611baf6020830185611b7e565b611bbc6040830184611b7e565b949350505050565b6000602082019050611bd96000830184611b6f565b92915050565b600080600060608486031215611bf857611bf7611a33565b5b6000611c0686828701611a81565b9350506020611c1786828701611a81565b9250506040611c2886828701611ab7565b9150509250925092565b600060ff82169050919050565b611c4881611c32565b82525050565b6000602082019050611c636000830184611c3f565b92915050565b600060208284031215611c7f57611c7e611a33565b5b6000611c8d84828501611a81565b91505092915050565b611c9f81611b0c565b8114611caa57600080fd5b50565b600081359050611cbc81611c96565b92915050565b600080600060608486031215611cdb57611cda611a33565b5b6000611ce986828701611ab7565b9350506020611cfa86828701611ab7565b9250506040611d0b86828701611cad565b9150509250925092565b6000602082019050611d2a6000830184611b7e565b92915050565b600080600060608486031215611d4957611d48611a33565b5b6000611d5786828701611a81565b9350506020611d6886828701611ab7565b9250506040611d7986828701611ab7565b9150509250925092565b60008060408385031215611d9a57611d99611a33565b5b6000611da885828601611ab7565b9250506020611db985828601611ab7565b9150509250929050565b600061014082019050611dd9600083018d611b6f565b611de6602083018c611b6f565b611df3604083018b611b6f565b611e00606083018a611b6f565b611e0d6080830189611b6f565b611e1a60a0830188611b6f565b611e2760c0830187611b6f565b611e3460e0830186611b6f565b611e42610100830185611b18565b611e50610120830184611b18565b9b9a5050505050505050505050565b60008060408385031215611e7657611e75611a33565b5b6000611e8485828601611a81565b9250506020611e9585828601611a81565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611ee657607f821691505b602082108103611ef957611ef8611e9f565b5b50919050565b7f506f6f6c20656e642074696d6520686173206e6f74207965742061727269766560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000611f5b60218361198c565b9150611f6682611eff565b604082019050919050565b60006020820190508181036000830152611f8a81611f4e565b9050919050565b7f506f6f6c20697320616c7265616479207265736f6c7665640000000000000000600082015250565b6000611fc760188361198c565b9150611fd282611f91565b602082019050919050565b60006020820190508181036000830152611ff681611fba565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061203782611a96565b915061204283611a96565b925082820190508082111561205a57612059611ffd565b5b92915050565b600061206b82611a96565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361209d5761209c611ffd565b5b600182019050919050565b60006040820190506120bd6000830185611b6f565b6120ca6020830184611b18565b9392505050565b60006120dc82611a96565b91506120e783611a96565b92508282026120f581611a96565b9150828204841483151761210c5761210b611ffd565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061214d82611a96565b915061215883611a96565b92508261216857612167612113565b5b828204905092915050565b600061217e82611a96565b915061218983611a96565b92508282039050818111156121a1576121a0611ffd565b5b92915050565b60006060820190506121bc6000830186611b7e565b6121c96020830185611b6f565b6121d66040830184611b6f565b949350505050565b7f46656520697320726571756972656420746f20696e6974696174652076616c6960008201527f646174696f6e20706f6f6c000000000000000000000000000000000000000000602082015250565b600061223a602b8361198c565b9150612245826121de565b604082019050919050565b600060208201905081810360008301526122698161222d565b9050919050565b7f54617267657420706f7374206e6f7420666f756e640000000000000000000000600082015250565b60006122a660158361198c565b91506122b182612270565b602082019050919050565b600060208201905081810360008301526122d581612299565b9050919050565b7f506f6f6c20656e642074696d6520686173207061737365640000000000000000600082015250565b600061231260188361198c565b915061231d826122dc565b602082019050919050565b6000602082019050818103600083015261234181612305565b905091905056fea26469706673582212205bf3734283409d3522253e6c0d8d80b9bbe048ca1eb009f5b29f5f5fecf1ec0b64736f6c63430008180033", + "bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280600a81526020017f52657075746174696f6e000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f524550000000000000000000000000000000000000000000000000000000000081525081600390816200008f919062000324565b508060049081620000a1919062000324565b5050506200040b565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200012c57607f821691505b602082108103620001425762000141620000e4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620001ac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200016d565b620001b886836200016d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000205620001ff620001f984620001d0565b620001da565b620001d0565b9050919050565b6000819050919050565b6200022183620001e4565b6200023962000230826200020c565b8484546200017a565b825550505050565b600090565b6200025062000241565b6200025d81848462000216565b505050565b5b8181101562000285576200027960008262000246565b60018101905062000263565b5050565b601f821115620002d4576200029e8162000148565b620002a9846200015d565b81016020851015620002b9578190505b620002d1620002c8856200015d565b83018262000262565b50505b505050565b600082821c905092915050565b6000620002f960001984600802620002d9565b1980831691505092915050565b6000620003148383620002e6565b9150826002028217905092915050565b6200032f82620000aa565b67ffffffffffffffff8111156200034b576200034a620000b5565b5b62000357825462000113565b6200036482828562000289565b600060209050601f8311600181146200039c576000841562000387578287015190505b62000393858262000306565b86555062000403565b601f198416620003ac8662000148565b60005b82811015620003d657848901518255600182019150602085019450602081019050620003af565b86831015620003f65784890151620003f2601f891682620002e6565b8355505b6001600288020188555050505b505050505050565b6123b5806200041b6000396000f3fe60806040526004361061012a5760003560e01c8063561b2463116100ab57806395d89b411161006f57806395d89b41146104445780639fcb294b1461046f578063a230c5241461049f578063a2336279146104dc578063a9059cbb14610522578063dd62ed3e1461055f5761012a565b8063561b2463146103395780635daf08ca14610362578063642b5bfb1461039f57806370a08231146103ca57806388380274146104075761012a565b806317c18217116100f257806317c182171461022c57806318160ddd1461026957806323b872dd14610294578063313ce567146102d15780633ff75442146102fc5761012a565b806306fdde031461012f578063095ea7b31461015a5780630b1e7f831461019757806311aee380146101d657806317906c2e14610201575b600080fd5b34801561013b57600080fd5b5061014461059c565b6040516101519190611a48565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c9190611b03565b61062e565b60405161018e9190611b5e565b60405180910390f35b3480156101a357600080fd5b506101be60048036038101906101b99190611b79565b610651565b6040516101cd93929190611bc4565b60405180910390f35b3480156101e257600080fd5b506101eb6106bb565b6040516101f89190611bfb565b60405180910390f35b34801561020d57600080fd5b506102166106c1565b6040516102239190611bfb565b60405180910390f35b34801561023857600080fd5b50610253600480360381019061024e9190611b79565b6106c7565b6040516102609190611b5e565b60405180910390f35b34801561027557600080fd5b5061027e610c1b565b60405161028b9190611bfb565b60405180910390f35b3480156102a057600080fd5b506102bb60048036038101906102b69190611c16565b610c25565b6040516102c89190611b5e565b60405180910390f35b3480156102dd57600080fd5b506102e6610c54565b6040516102f39190611c85565b60405180910390f35b34801561030857600080fd5b50610323600480360381019061031e9190611ca0565b610c5d565b6040516103309190611bfb565b60405180910390f35b34801561034557600080fd5b50610360600480360381019061035b9190611cf9565b610d5b565b005b34801561036e57600080fd5b5061038960048036038101906103849190611b79565b610d84565b6040516103969190611d4c565b60405180910390f35b3480156103ab57600080fd5b506103b4610db7565b6040516103c19190611bfb565b60405180910390f35b3480156103d657600080fd5b506103f160048036038101906103ec9190611ca0565b610dbd565b6040516103fe9190611bfb565b60405180910390f35b34801561041357600080fd5b5061042e60048036038101906104299190611d67565b610e05565b60405161043b9190611b5e565b60405180910390f35b34801561045057600080fd5b50610459610e90565b6040516104669190611a48565b60405180910390f35b61048960048036038101906104849190611dba565b610f22565b6040516104969190611bfb565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c19190611ca0565b61115f565b6040516104d39190611b5e565b60405180910390f35b3480156104e857600080fd5b5061050360048036038101906104fe9190611b79565b61117f565b6040516105199a99989796959493929190611dfa565b60405180910390f35b34801561052e57600080fd5b5061054960048036038101906105449190611b03565b6111ed565b6040516105569190611b5e565b60405180910390f35b34801561056b57600080fd5b5061058660048036038101906105819190611e96565b611210565b6040516105939190611bfb565b60405180910390f35b6060600380546105ab90611f05565b80601f01602080910402602001604051908101604052809291908181526020018280546105d790611f05565b80156106245780601f106105f957610100808354040283529160200191610624565b820191906000526020600020905b81548152906001019060200180831161060757829003601f168201915b5050505050905090565b600080610639611297565b905061064681858561129f565b600191505092915050565b600a6020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b60065481565b600b5481565b6000806008600084815260200190815260200160002090506000600a600083600101548152602001908152602001600020905081600801544211610740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073790611fa8565b60405180910390fd5b600015158260090160009054906101000a900460ff16151514610798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078f90612014565b60405180910390fd5b600080600080600090505b85600301548110156108145785600201600082815260200190815260200160002091508160010160009054906101000a900460ff16156107f4578160020154846107ed9190612063565b9350610807565b8160020154836108049190612063565b92505b80806001019150506107a3565b508183101595508580156108965750600760008560020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156109a4578360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660056000600660008154809291906108d790612097565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008660020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60018560090160006101000a81548160ff021916908315150217905550858560090160016101000a81548160ff0219169083151502179055507f926ee3a021d24f18cfab444988fa0338bcaa0f1e0d7c2211c07d10cbad6772948787604051610a0e9291906120df565b60405180910390a1600086610a235782610a25565b835b9050600087610a345784610a36565b835b9050600080600090505b8860030154811015610af95788600201600082815260200190815260200160002094508460010160009054906101000a900460ff1615158a151503610aec57600084866002015485610a929190612108565b610a9c9190612179565b9050610adc308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838960020154610ad79190612063565b6112b1565b8083610ae89190612063565b9250505b8080600101915050610a40565b5060008183610b0891906121aa565b90506000811115610b4357610b42308960020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836112b1565b5b60005b600654811015610c0c5760006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610b92610c1b565b610b9b83610dbd565b8d60040154610baa9190612108565b610bb49190612179565b90508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610bfc573d6000803e3d6000fd5b5050508080600101915050610b46565b50505050505050505050919050565b6000600254905090565b600080610c30611297565b9050610c3d8582856113a5565b610c488585856112b1565b60019150509392505050565b60006012905090565b6000600b6000815480929190610c7290612097565b9190505590506000600a60008381526020019081526020016000209050828160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550338160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508181600001819055507f60b94e7764708712b927071922e2d834b79011347c7b80aed74caeeece2eed4c82604051610d4d9190611bfb565b60405180910390a150919050565b6000600860008581526020019081526020016000209050610d7e81338585611439565b50505050565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610e1184846111ed565b90508015610e89578373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b8152600401610e56939291906121de565b600060405180830381600087803b158015610e7057600080fd5b505af1158015610e84573d6000803e3d6000fd5b505050505b9392505050565b606060048054610e9f90611f05565b80601f0160208091040260200160405190810160405280929190818152602001828054610ecb90611f05565b8015610f185780601f10610eed57610100808354040283529160200191610f18565b820191906000526020600020905b815481529060010190602001808311610efb57829003601f168201915b5050505050905090565b6000803411610f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5d90612287565b60405180910390fd5b6000600a60008581526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611010576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611007906122f3565b60405180910390fd5b6009600081548092919061102390612097565b919050559150600060086000848152602001908152602001600020905084816001018190555034816004018190555083816007018190555083426110679190612063565b81600801819055508281600001819055506110a68260020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163461153a565b6110e3818360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002346110dc9190612179565b6001611439565b611120818360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002346111199190612179565b6000611439565b7f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a8360405161114f9190611bfb565b60405180910390a1505092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b60086020528060005260406000206000915090508060000154908060010154908060030154908060040154908060050154908060060154908060070154908060080154908060090160009054906101000a900460ff16908060090160019054906101000a900460ff1690508a565b6000806111f8611297565b90506112058185856112b1565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b6112ac83838360016115bc565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113235760006040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161131a9190611d4c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113955760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161138c9190611d4c565b60405180910390fd5b6113a0838383611793565b505050565b60006113b18484611210565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146114335781811015611423578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161141a939291906121de565b60405180910390fd5b611432848484840360006115bc565b5b50505050565b8360080154421115611480576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114779061235f565b60405180910390fd5b61148b8330846112b1565b60008460030160008154809291906114a290612097565b91905055905060008560020160008381526020019081526020016000209050848160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010160006101000a81548160ff021916908315150217905550838160020181905550818160000181905550505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115ac5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016115a39190611d4c565b60405180910390fd5b6115b860008383611793565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361162e5760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016116259190611d4c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116a05760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016116979190611d4c565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550801561178d578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516117849190611bfb565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117e55780600260008282546117d99190612063565b925050819055506118b8565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611871578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611868939291906121de565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611901578060026000828254039250508190555061194e565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119ab9190611bfb565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156119f25780820151818401526020810190506119d7565b60008484015250505050565b6000601f19601f8301169050919050565b6000611a1a826119b8565b611a2481856119c3565b9350611a348185602086016119d4565b611a3d816119fe565b840191505092915050565b60006020820190508181036000830152611a628184611a0f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611a9a82611a6f565b9050919050565b611aaa81611a8f565b8114611ab557600080fd5b50565b600081359050611ac781611aa1565b92915050565b6000819050919050565b611ae081611acd565b8114611aeb57600080fd5b50565b600081359050611afd81611ad7565b92915050565b60008060408385031215611b1a57611b19611a6a565b5b6000611b2885828601611ab8565b9250506020611b3985828601611aee565b9150509250929050565b60008115159050919050565b611b5881611b43565b82525050565b6000602082019050611b736000830184611b4f565b92915050565b600060208284031215611b8f57611b8e611a6a565b5b6000611b9d84828501611aee565b91505092915050565b611baf81611acd565b82525050565b611bbe81611a8f565b82525050565b6000606082019050611bd96000830186611ba6565b611be66020830185611bb5565b611bf36040830184611bb5565b949350505050565b6000602082019050611c106000830184611ba6565b92915050565b600080600060608486031215611c2f57611c2e611a6a565b5b6000611c3d86828701611ab8565b9350506020611c4e86828701611ab8565b9250506040611c5f86828701611aee565b9150509250925092565b600060ff82169050919050565b611c7f81611c69565b82525050565b6000602082019050611c9a6000830184611c76565b92915050565b600060208284031215611cb657611cb5611a6a565b5b6000611cc484828501611ab8565b91505092915050565b611cd681611b43565b8114611ce157600080fd5b50565b600081359050611cf381611ccd565b92915050565b600080600060608486031215611d1257611d11611a6a565b5b6000611d2086828701611aee565b9350506020611d3186828701611aee565b9250506040611d4286828701611ce4565b9150509250925092565b6000602082019050611d616000830184611bb5565b92915050565b600080600060608486031215611d8057611d7f611a6a565b5b6000611d8e86828701611ab8565b9350506020611d9f86828701611aee565b9250506040611db086828701611aee565b9150509250925092565b60008060408385031215611dd157611dd0611a6a565b5b6000611ddf85828601611aee565b9250506020611df085828601611aee565b9150509250929050565b600061014082019050611e10600083018d611ba6565b611e1d602083018c611ba6565b611e2a604083018b611ba6565b611e37606083018a611ba6565b611e446080830189611ba6565b611e5160a0830188611ba6565b611e5e60c0830187611ba6565b611e6b60e0830186611ba6565b611e79610100830185611b4f565b611e87610120830184611b4f565b9b9a5050505050505050505050565b60008060408385031215611ead57611eac611a6a565b5b6000611ebb85828601611ab8565b9250506020611ecc85828601611ab8565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611f1d57607f821691505b602082108103611f3057611f2f611ed6565b5b50919050565b7f506f6f6c20656e642074696d6520686173206e6f74207965742061727269766560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000611f926021836119c3565b9150611f9d82611f36565b604082019050919050565b60006020820190508181036000830152611fc181611f85565b9050919050565b7f506f6f6c20697320616c7265616479207265736f6c7665640000000000000000600082015250565b6000611ffe6018836119c3565b915061200982611fc8565b602082019050919050565b6000602082019050818103600083015261202d81611ff1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061206e82611acd565b915061207983611acd565b925082820190508082111561209157612090612034565b5b92915050565b60006120a282611acd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036120d4576120d3612034565b5b600182019050919050565b60006040820190506120f46000830185611ba6565b6121016020830184611b4f565b9392505050565b600061211382611acd565b915061211e83611acd565b925082820261212c81611acd565b9150828204841483151761214357612142612034565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061218482611acd565b915061218f83611acd565b92508261219f5761219e61214a565b5b828204905092915050565b60006121b582611acd565b91506121c083611acd565b92508282039050818111156121d8576121d7612034565b5b92915050565b60006060820190506121f36000830186611bb5565b6122006020830185611ba6565b61220d6040830184611ba6565b949350505050565b7f46656520697320726571756972656420746f20696e6974696174652076616c6960008201527f646174696f6e20706f6f6c000000000000000000000000000000000000000000602082015250565b6000612271602b836119c3565b915061227c82612215565b604082019050919050565b600060208201905081810360008301526122a081612264565b9050919050565b7f54617267657420706f7374206e6f7420666f756e640000000000000000000000600082015250565b60006122dd6015836119c3565b91506122e8826122a7565b602082019050919050565b6000602082019050818103600083015261230c816122d0565b9050919050565b7f506f6f6c20656e642074696d6520686173207061737365640000000000000000600082015250565b60006123496018836119c3565b915061235482612313565b602082019050919050565b600060208201905081810360008301526123788161233c565b905091905056fea26469706673582212201b7e7724a56b153974bc7c0e3d5c3baba28823e71fb4a6c5b27cd818a08cd49464736f6c63430008180033", + "deployedBytecode": "0x60806040526004361061012a5760003560e01c8063561b2463116100ab57806395d89b411161006f57806395d89b41146104445780639fcb294b1461046f578063a230c5241461049f578063a2336279146104dc578063a9059cbb14610522578063dd62ed3e1461055f5761012a565b8063561b2463146103395780635daf08ca14610362578063642b5bfb1461039f57806370a08231146103ca57806388380274146104075761012a565b806317c18217116100f257806317c182171461022c57806318160ddd1461026957806323b872dd14610294578063313ce567146102d15780633ff75442146102fc5761012a565b806306fdde031461012f578063095ea7b31461015a5780630b1e7f831461019757806311aee380146101d657806317906c2e14610201575b600080fd5b34801561013b57600080fd5b5061014461059c565b6040516101519190611a48565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c9190611b03565b61062e565b60405161018e9190611b5e565b60405180910390f35b3480156101a357600080fd5b506101be60048036038101906101b99190611b79565b610651565b6040516101cd93929190611bc4565b60405180910390f35b3480156101e257600080fd5b506101eb6106bb565b6040516101f89190611bfb565b60405180910390f35b34801561020d57600080fd5b506102166106c1565b6040516102239190611bfb565b60405180910390f35b34801561023857600080fd5b50610253600480360381019061024e9190611b79565b6106c7565b6040516102609190611b5e565b60405180910390f35b34801561027557600080fd5b5061027e610c1b565b60405161028b9190611bfb565b60405180910390f35b3480156102a057600080fd5b506102bb60048036038101906102b69190611c16565b610c25565b6040516102c89190611b5e565b60405180910390f35b3480156102dd57600080fd5b506102e6610c54565b6040516102f39190611c85565b60405180910390f35b34801561030857600080fd5b50610323600480360381019061031e9190611ca0565b610c5d565b6040516103309190611bfb565b60405180910390f35b34801561034557600080fd5b50610360600480360381019061035b9190611cf9565b610d5b565b005b34801561036e57600080fd5b5061038960048036038101906103849190611b79565b610d84565b6040516103969190611d4c565b60405180910390f35b3480156103ab57600080fd5b506103b4610db7565b6040516103c19190611bfb565b60405180910390f35b3480156103d657600080fd5b506103f160048036038101906103ec9190611ca0565b610dbd565b6040516103fe9190611bfb565b60405180910390f35b34801561041357600080fd5b5061042e60048036038101906104299190611d67565b610e05565b60405161043b9190611b5e565b60405180910390f35b34801561045057600080fd5b50610459610e90565b6040516104669190611a48565b60405180910390f35b61048960048036038101906104849190611dba565b610f22565b6040516104969190611bfb565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c19190611ca0565b61115f565b6040516104d39190611b5e565b60405180910390f35b3480156104e857600080fd5b5061050360048036038101906104fe9190611b79565b61117f565b6040516105199a99989796959493929190611dfa565b60405180910390f35b34801561052e57600080fd5b5061054960048036038101906105449190611b03565b6111ed565b6040516105569190611b5e565b60405180910390f35b34801561056b57600080fd5b5061058660048036038101906105819190611e96565b611210565b6040516105939190611bfb565b60405180910390f35b6060600380546105ab90611f05565b80601f01602080910402602001604051908101604052809291908181526020018280546105d790611f05565b80156106245780601f106105f957610100808354040283529160200191610624565b820191906000526020600020905b81548152906001019060200180831161060757829003601f168201915b5050505050905090565b600080610639611297565b905061064681858561129f565b600191505092915050565b600a6020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b60065481565b600b5481565b6000806008600084815260200190815260200160002090506000600a600083600101548152602001908152602001600020905081600801544211610740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073790611fa8565b60405180910390fd5b600015158260090160009054906101000a900460ff16151514610798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078f90612014565b60405180910390fd5b600080600080600090505b85600301548110156108145785600201600082815260200190815260200160002091508160010160009054906101000a900460ff16156107f4578160020154846107ed9190612063565b9350610807565b8160020154836108049190612063565b92505b80806001019150506107a3565b508183101595508580156108965750600760008560020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156109a4578360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660056000600660008154809291906108d790612097565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008660020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60018560090160006101000a81548160ff021916908315150217905550858560090160016101000a81548160ff0219169083151502179055507f926ee3a021d24f18cfab444988fa0338bcaa0f1e0d7c2211c07d10cbad6772948787604051610a0e9291906120df565b60405180910390a1600086610a235782610a25565b835b9050600087610a345784610a36565b835b9050600080600090505b8860030154811015610af95788600201600082815260200190815260200160002094508460010160009054906101000a900460ff1615158a151503610aec57600084866002015485610a929190612108565b610a9c9190612179565b9050610adc308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838960020154610ad79190612063565b6112b1565b8083610ae89190612063565b9250505b8080600101915050610a40565b5060008183610b0891906121aa565b90506000811115610b4357610b42308960020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836112b1565b5b60005b600654811015610c0c5760006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610b92610c1b565b610b9b83610dbd565b8d60040154610baa9190612108565b610bb49190612179565b90508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610bfc573d6000803e3d6000fd5b5050508080600101915050610b46565b50505050505050505050919050565b6000600254905090565b600080610c30611297565b9050610c3d8582856113a5565b610c488585856112b1565b60019150509392505050565b60006012905090565b6000600b6000815480929190610c7290612097565b9190505590506000600a60008381526020019081526020016000209050828160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550338160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508181600001819055507f60b94e7764708712b927071922e2d834b79011347c7b80aed74caeeece2eed4c82604051610d4d9190611bfb565b60405180910390a150919050565b6000600860008581526020019081526020016000209050610d7e81338585611439565b50505050565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610e1184846111ed565b90508015610e89578373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b8152600401610e56939291906121de565b600060405180830381600087803b158015610e7057600080fd5b505af1158015610e84573d6000803e3d6000fd5b505050505b9392505050565b606060048054610e9f90611f05565b80601f0160208091040260200160405190810160405280929190818152602001828054610ecb90611f05565b8015610f185780601f10610eed57610100808354040283529160200191610f18565b820191906000526020600020905b815481529060010190602001808311610efb57829003601f168201915b5050505050905090565b6000803411610f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5d90612287565b60405180910390fd5b6000600a60008581526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611010576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611007906122f3565b60405180910390fd5b6009600081548092919061102390612097565b919050559150600060086000848152602001908152602001600020905084816001018190555034816004018190555083816007018190555083426110679190612063565b81600801819055508281600001819055506110a68260020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163461153a565b6110e3818360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002346110dc9190612179565b6001611439565b611120818360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002346111199190612179565b6000611439565b7f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a8360405161114f9190611bfb565b60405180910390a1505092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b60086020528060005260406000206000915090508060000154908060010154908060030154908060040154908060050154908060060154908060070154908060080154908060090160009054906101000a900460ff16908060090160019054906101000a900460ff1690508a565b6000806111f8611297565b90506112058185856112b1565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b6112ac83838360016115bc565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113235760006040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161131a9190611d4c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113955760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161138c9190611d4c565b60405180910390fd5b6113a0838383611793565b505050565b60006113b18484611210565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146114335781811015611423578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161141a939291906121de565b60405180910390fd5b611432848484840360006115bc565b5b50505050565b8360080154421115611480576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114779061235f565b60405180910390fd5b61148b8330846112b1565b60008460030160008154809291906114a290612097565b91905055905060008560020160008381526020019081526020016000209050848160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010160006101000a81548160ff021916908315150217905550838160020181905550818160000181905550505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115ac5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016115a39190611d4c565b60405180910390fd5b6115b860008383611793565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361162e5760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016116259190611d4c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116a05760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016116979190611d4c565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550801561178d578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516117849190611bfb565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117e55780600260008282546117d99190612063565b925050819055506118b8565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611871578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611868939291906121de565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611901578060026000828254039250508190555061194e565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119ab9190611bfb565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156119f25780820151818401526020810190506119d7565b60008484015250505050565b6000601f19601f8301169050919050565b6000611a1a826119b8565b611a2481856119c3565b9350611a348185602086016119d4565b611a3d816119fe565b840191505092915050565b60006020820190508181036000830152611a628184611a0f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611a9a82611a6f565b9050919050565b611aaa81611a8f565b8114611ab557600080fd5b50565b600081359050611ac781611aa1565b92915050565b6000819050919050565b611ae081611acd565b8114611aeb57600080fd5b50565b600081359050611afd81611ad7565b92915050565b60008060408385031215611b1a57611b19611a6a565b5b6000611b2885828601611ab8565b9250506020611b3985828601611aee565b9150509250929050565b60008115159050919050565b611b5881611b43565b82525050565b6000602082019050611b736000830184611b4f565b92915050565b600060208284031215611b8f57611b8e611a6a565b5b6000611b9d84828501611aee565b91505092915050565b611baf81611acd565b82525050565b611bbe81611a8f565b82525050565b6000606082019050611bd96000830186611ba6565b611be66020830185611bb5565b611bf36040830184611bb5565b949350505050565b6000602082019050611c106000830184611ba6565b92915050565b600080600060608486031215611c2f57611c2e611a6a565b5b6000611c3d86828701611ab8565b9350506020611c4e86828701611ab8565b9250506040611c5f86828701611aee565b9150509250925092565b600060ff82169050919050565b611c7f81611c69565b82525050565b6000602082019050611c9a6000830184611c76565b92915050565b600060208284031215611cb657611cb5611a6a565b5b6000611cc484828501611ab8565b91505092915050565b611cd681611b43565b8114611ce157600080fd5b50565b600081359050611cf381611ccd565b92915050565b600080600060608486031215611d1257611d11611a6a565b5b6000611d2086828701611aee565b9350506020611d3186828701611aee565b9250506040611d4286828701611ce4565b9150509250925092565b6000602082019050611d616000830184611bb5565b92915050565b600080600060608486031215611d8057611d7f611a6a565b5b6000611d8e86828701611ab8565b9350506020611d9f86828701611aee565b9250506040611db086828701611aee565b9150509250925092565b60008060408385031215611dd157611dd0611a6a565b5b6000611ddf85828601611aee565b9250506020611df085828601611aee565b9150509250929050565b600061014082019050611e10600083018d611ba6565b611e1d602083018c611ba6565b611e2a604083018b611ba6565b611e37606083018a611ba6565b611e446080830189611ba6565b611e5160a0830188611ba6565b611e5e60c0830187611ba6565b611e6b60e0830186611ba6565b611e79610100830185611b4f565b611e87610120830184611b4f565b9b9a5050505050505050505050565b60008060408385031215611ead57611eac611a6a565b5b6000611ebb85828601611ab8565b9250506020611ecc85828601611ab8565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611f1d57607f821691505b602082108103611f3057611f2f611ed6565b5b50919050565b7f506f6f6c20656e642074696d6520686173206e6f74207965742061727269766560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000611f926021836119c3565b9150611f9d82611f36565b604082019050919050565b60006020820190508181036000830152611fc181611f85565b9050919050565b7f506f6f6c20697320616c7265616479207265736f6c7665640000000000000000600082015250565b6000611ffe6018836119c3565b915061200982611fc8565b602082019050919050565b6000602082019050818103600083015261202d81611ff1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061206e82611acd565b915061207983611acd565b925082820190508082111561209157612090612034565b5b92915050565b60006120a282611acd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036120d4576120d3612034565b5b600182019050919050565b60006040820190506120f46000830185611ba6565b6121016020830184611b4f565b9392505050565b600061211382611acd565b915061211e83611acd565b925082820261212c81611acd565b9150828204841483151761214357612142612034565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061218482611acd565b915061218f83611acd565b92508261219f5761219e61214a565b5b828204905092915050565b60006121b582611acd565b91506121c083611acd565b92508282039050818111156121d8576121d7612034565b5b92915050565b60006060820190506121f36000830186611bb5565b6122006020830185611ba6565b61220d6040830184611ba6565b949350505050565b7f46656520697320726571756972656420746f20696e6974696174652076616c6960008201527f646174696f6e20706f6f6c000000000000000000000000000000000000000000602082015250565b6000612271602b836119c3565b915061227c82612215565b604082019050919050565b600060208201905081810360008301526122a081612264565b9050919050565b7f54617267657420706f7374206e6f7420666f756e640000000000000000000000600082015250565b60006122dd6015836119c3565b91506122e8826122a7565b602082019050919050565b6000602082019050818103600083015261230c816122d0565b9050919050565b7f506f6f6c20656e642074696d6520686173207061737365640000000000000000600082015250565b60006123496018836119c3565b915061235482612313565b602082019050919050565b600060208201905081810360008301526123788161233c565b905091905056fea26469706673582212201b7e7724a56b153974bc7c0e3d5c3baba28823e71fb4a6c5b27cd818a08cd49464736f6c63430008180033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/client/src/assets/Work1.json b/client/src/assets/Work1.json index 63761d1..36c8071 100644 --- a/client/src/assets/Work1.json +++ b/client/src/assets/Work1.json @@ -266,8 +266,8 @@ "type": "function" } ], - "bytecode": "0x60c06040523480156200001157600080fd5b50604051620019a6380380620019a6833981810160405281019062000037919062000134565b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508060a0818152505050506200017b565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000ad8262000080565b9050919050565b6000620000c182620000a0565b9050919050565b620000d381620000b4565b8114620000df57600080fd5b50565b600081519050620000f381620000c8565b92915050565b6000819050919050565b6200010e81620000f9565b81146200011a57600080fd5b50565b6000815190506200012e8162000103565b92915050565b600080604083850312156200014e576200014d6200007b565b5b60006200015e85828601620000e2565b925050602062000171858286016200011d565b9150509250929050565b60805160a0516117f0620001b66000396000818161031001526108f10152600081816105690152818161077a015261083c01526117f06000f3fe60806040526004361061009c5760003560e01c8063854b6a4f11610064578063854b6a4f1461016a578063a035b1fe14610193578063b5b20c00146101be578063c4a32591146101e7578063c4a9e11614610210578063d5a44f861461023b5761009c565b8063216ed6ad146100a15780634b8b194c146100ca5780635badbe4c146100d45780638150d507146100ff57806381d12c5814610128575b600080fd5b3480156100ad57600080fd5b506100c860048036038101906100c39190610e9e565b61027c565b005b6100d261030e565b005b3480156100e057600080fd5b506100e9610404565b6040516100f69190610f00565b60405180910390f35b34801561010b57600080fd5b5061012660048036038101906101219190610f1b565b61040a565b005b34801561013457600080fd5b5061014f600480360381019061014a9190610f1b565b61060e565b60405161016196959493929190610fe9565b60405180910390f35b34801561017657600080fd5b50610191600480360381019061018c9190611076565b610684565b005b34801561019f57600080fd5b506101a86108ef565b6040516101b59190610f00565b60405180910390f35b3480156101ca57600080fd5b506101e560048036038101906101e091906110b6565b610913565b005b3480156101f357600080fd5b5061020e60048036038101906102099190610f1b565b6109d4565b005b34801561021c57600080fd5b50610225610b78565b6040516102329190610f00565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190610f1b565b610b7e565b6040516102739594939291906110f6565b60405180910390f35b60008060006001600081548092919061029490611178565b9190505581526020019081526020016000209050838160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010181905550814261030091906111c0565b816002018190555050505050565b7f0000000000000000000000000000000000000000000000000000000000000000341015610371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036890611251565b60405180910390fd5b60006003600081548092919061038690611178565b9190505590506000600260008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503481600101819055506103f882610bee565b81600301819055505050565b60035481565b600080600083815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a9906112e3565b60405180910390fd5b806002015442116104f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ef90611375565b60405180910390fd5b8060030160019054906101000a900460ff161561054a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610541906113e1565b60405180910390fd5b60018160030160016101000a81548160ff0219169083151502179055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3383600101546040518363ffffffff1660e01b81526004016105c6929190611401565b6020604051808303816000875af11580156105e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610609919061143f565b505050565b60026020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff16908060030154908060040160009054906101000a900460ff16908060050154905086565b6000600260008481526020019081526020016000209050600160038111156106af576106ae610f57565b5b8160020160009054906101000a900460ff1660038111156106d3576106d2610f57565b5b14610713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070a906114b8565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561075557610754610f57565b5b0217905550828260040160006101000a81548160ff02191690831515021790555060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633ff754428360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016107f591906114d8565b6020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190611508565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fcb294b846001015483620151806040518463ffffffff1660e01b815260040161089d929190611535565b60206040518083038185885af11580156108bb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906108e09190611508565b83600501819055505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b2906115d0565b60405180910390fd5b81426109c791906111c0565b8160020181905550505050565b6000600260008381526020019081526020016000209050600060038111156109ff576109fe610f57565b5b8160020160009054906101000a900460ff166003811115610a2357610a22610f57565b5b14610a63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5a9061163c565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b06906116ce565b60405180910390fd5b60018260020160006101000a81548160ff02191690836003811115610b3757610b36610f57565b5b02179055507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc83604051610b6b9190610f00565b60405180910390a1505050565b60015481565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16908060030160019054906101000a900460ff16905085565b6000610bf8610c90565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055507f429f9327062651dbcecaca0d28b9929067489d32d2c1133ec207c965f1f0ab198160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684604051610c82929190611401565b60405180910390a150919050565b60008060005b600154811015610d145760008082815260200190815260200160002060030160009054906101000a900460ff16610d0757600080828152602001908152602001600020600201544211610d07576000808281526020019081526020016000206001015482610d0491906111c0565b91505b8080600101915050610c96565b5060008111610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f9061173a565b60405180910390fd5b60008144610d669190611789565b9050600080600090505b600154811015610dfe5760008082815260200190815260200160002060030160009054906101000a900460ff16610df157600080828152602001908152602001600020600201544211610df1576000808281526020019081526020016000206001015482610dde91906111c0565b915082821115610df057809450610dfe565b5b8080600101915050610d70565b5050505090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610e3582610e0a565b9050919050565b610e4581610e2a565b8114610e5057600080fd5b50565b600081359050610e6281610e3c565b92915050565b6000819050919050565b610e7b81610e68565b8114610e8657600080fd5b50565b600081359050610e9881610e72565b92915050565b600080600060608486031215610eb757610eb6610e05565b5b6000610ec586828701610e53565b9350506020610ed686828701610e89565b9250506040610ee786828701610e89565b9150509250925092565b610efa81610e68565b82525050565b6000602082019050610f156000830184610ef1565b92915050565b600060208284031215610f3157610f30610e05565b5b6000610f3f84828501610e89565b91505092915050565b610f5181610e2a565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110610f9757610f96610f57565b5b50565b6000819050610fa882610f86565b919050565b6000610fb882610f9a565b9050919050565b610fc881610fad565b82525050565b60008115159050919050565b610fe381610fce565b82525050565b600060c082019050610ffe6000830189610f48565b61100b6020830188610ef1565b6110186040830187610fbf565b6110256060830186610ef1565b6110326080830185610fda565b61103f60a0830184610ef1565b979650505050505050565b61105381610fce565b811461105e57600080fd5b50565b6000813590506110708161104a565b92915050565b6000806040838503121561108d5761108c610e05565b5b600061109b85828601610e89565b92505060206110ac85828601611061565b9150509250929050565b600080604083850312156110cd576110cc610e05565b5b60006110db85828601610e89565b92505060206110ec85828601610e89565b9150509250929050565b600060a08201905061110b6000830188610f48565b6111186020830187610ef1565b6111256040830186610ef1565b6111326060830185610fda565b61113f6080830184610fda565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061118382610e68565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036111b5576111b4611149565b5b600182019050919050565b60006111cb82610e68565b91506111d683610e68565b92508282019050808211156111ee576111ed611149565b5b92915050565b600082825260208201905092915050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b600061123b6010836111f4565b915061124682611205565b602082019050919050565b6000602082019050818103600083015261126a8161122e565b9050919050565b7f576f726b65722063616e206f6e6c79207265636c61696d207468656972206f7760008201527f6e20617661696c6162696c697479207374616b65000000000000000000000000602082015250565b60006112cd6034836111f4565b91506112d882611271565b604082019050919050565b600060208201905081810360008301526112fc816112c0565b9050919050565b7f5374616b65206475726174696f6e20686173206e6f742079657420656c61707360008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b600061135f6022836111f4565b915061136a82611303565b604082019050919050565b6000602082019050818103600083015261138e81611352565b9050919050565b7f5374616b652068617320616c7265616479206265656e207265636c61696d6564600082015250565b60006113cb6020836111f4565b91506113d682611395565b602082019050919050565b600060208201905081810360008301526113fa816113be565b9050919050565b60006040820190506114166000830185610f48565b6114236020830184610ef1565b9392505050565b6000815190506114398161104a565b92915050565b60006020828403121561145557611454610e05565b5b60006114638482850161142a565b91505092915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b60006114a26020836111f4565b91506114ad8261146c565b602082019050919050565b600060208201905081810360008301526114d181611495565b9050919050565b60006020820190506114ed6000830184610f48565b92915050565b60008151905061150281610e72565b92915050565b60006020828403121561151e5761151d610e05565b5b600061152c848285016114f3565b91505092915050565b600060408201905061154a6000830185610ef1565b6115576020830184610ef1565b9392505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006115ba6033836111f4565b91506115c58261155e565b604082019050919050565b600060208201905081810360008301526115e9816115ad565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006116266018836111f4565b9150611631826115f0565b602082019050919050565b6000602082019050818103600083015261165581611619565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b60006116b8603a836111f4565b91506116c38261165c565b604082019050919050565b600060208201905081810360008301526116e7816116ab565b9050919050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000611724601a836111f4565b915061172f826116ee565b602082019050919050565b6000602082019050818103600083015261175381611717565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061179482610e68565b915061179f83610e68565b9250826117af576117ae61175a565b5b82820690509291505056fea2646970667358221220222921ff67786706a1b0d1108e8562ef2151aa425705261c72af54655338018764736f6c63430008180033", - "deployedBytecode": "0x60806040526004361061009c5760003560e01c8063854b6a4f11610064578063854b6a4f1461016a578063a035b1fe14610193578063b5b20c00146101be578063c4a32591146101e7578063c4a9e11614610210578063d5a44f861461023b5761009c565b8063216ed6ad146100a15780634b8b194c146100ca5780635badbe4c146100d45780638150d507146100ff57806381d12c5814610128575b600080fd5b3480156100ad57600080fd5b506100c860048036038101906100c39190610e9e565b61027c565b005b6100d261030e565b005b3480156100e057600080fd5b506100e9610404565b6040516100f69190610f00565b60405180910390f35b34801561010b57600080fd5b5061012660048036038101906101219190610f1b565b61040a565b005b34801561013457600080fd5b5061014f600480360381019061014a9190610f1b565b61060e565b60405161016196959493929190610fe9565b60405180910390f35b34801561017657600080fd5b50610191600480360381019061018c9190611076565b610684565b005b34801561019f57600080fd5b506101a86108ef565b6040516101b59190610f00565b60405180910390f35b3480156101ca57600080fd5b506101e560048036038101906101e091906110b6565b610913565b005b3480156101f357600080fd5b5061020e60048036038101906102099190610f1b565b6109d4565b005b34801561021c57600080fd5b50610225610b78565b6040516102329190610f00565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190610f1b565b610b7e565b6040516102739594939291906110f6565b60405180910390f35b60008060006001600081548092919061029490611178565b9190505581526020019081526020016000209050838160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010181905550814261030091906111c0565b816002018190555050505050565b7f0000000000000000000000000000000000000000000000000000000000000000341015610371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036890611251565b60405180910390fd5b60006003600081548092919061038690611178565b9190505590506000600260008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503481600101819055506103f882610bee565b81600301819055505050565b60035481565b600080600083815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a9906112e3565b60405180910390fd5b806002015442116104f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ef90611375565b60405180910390fd5b8060030160019054906101000a900460ff161561054a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610541906113e1565b60405180910390fd5b60018160030160016101000a81548160ff0219169083151502179055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3383600101546040518363ffffffff1660e01b81526004016105c6929190611401565b6020604051808303816000875af11580156105e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610609919061143f565b505050565b60026020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff16908060030154908060040160009054906101000a900460ff16908060050154905086565b6000600260008481526020019081526020016000209050600160038111156106af576106ae610f57565b5b8160020160009054906101000a900460ff1660038111156106d3576106d2610f57565b5b14610713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070a906114b8565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561075557610754610f57565b5b0217905550828260040160006101000a81548160ff02191690831515021790555060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633ff754428360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016107f591906114d8565b6020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190611508565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fcb294b846001015483620151806040518463ffffffff1660e01b815260040161089d929190611535565b60206040518083038185885af11580156108bb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906108e09190611508565b83600501819055505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b2906115d0565b60405180910390fd5b81426109c791906111c0565b8160020181905550505050565b6000600260008381526020019081526020016000209050600060038111156109ff576109fe610f57565b5b8160020160009054906101000a900460ff166003811115610a2357610a22610f57565b5b14610a63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5a9061163c565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b06906116ce565b60405180910390fd5b60018260020160006101000a81548160ff02191690836003811115610b3757610b36610f57565b5b02179055507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc83604051610b6b9190610f00565b60405180910390a1505050565b60015481565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16908060030160019054906101000a900460ff16905085565b6000610bf8610c90565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055507f429f9327062651dbcecaca0d28b9929067489d32d2c1133ec207c965f1f0ab198160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684604051610c82929190611401565b60405180910390a150919050565b60008060005b600154811015610d145760008082815260200190815260200160002060030160009054906101000a900460ff16610d0757600080828152602001908152602001600020600201544211610d07576000808281526020019081526020016000206001015482610d0491906111c0565b91505b8080600101915050610c96565b5060008111610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f9061173a565b60405180910390fd5b60008144610d669190611789565b9050600080600090505b600154811015610dfe5760008082815260200190815260200160002060030160009054906101000a900460ff16610df157600080828152602001908152602001600020600201544211610df1576000808281526020019081526020016000206001015482610dde91906111c0565b915082821115610df057809450610dfe565b5b8080600101915050610d70565b5050505090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610e3582610e0a565b9050919050565b610e4581610e2a565b8114610e5057600080fd5b50565b600081359050610e6281610e3c565b92915050565b6000819050919050565b610e7b81610e68565b8114610e8657600080fd5b50565b600081359050610e9881610e72565b92915050565b600080600060608486031215610eb757610eb6610e05565b5b6000610ec586828701610e53565b9350506020610ed686828701610e89565b9250506040610ee786828701610e89565b9150509250925092565b610efa81610e68565b82525050565b6000602082019050610f156000830184610ef1565b92915050565b600060208284031215610f3157610f30610e05565b5b6000610f3f84828501610e89565b91505092915050565b610f5181610e2a565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110610f9757610f96610f57565b5b50565b6000819050610fa882610f86565b919050565b6000610fb882610f9a565b9050919050565b610fc881610fad565b82525050565b60008115159050919050565b610fe381610fce565b82525050565b600060c082019050610ffe6000830189610f48565b61100b6020830188610ef1565b6110186040830187610fbf565b6110256060830186610ef1565b6110326080830185610fda565b61103f60a0830184610ef1565b979650505050505050565b61105381610fce565b811461105e57600080fd5b50565b6000813590506110708161104a565b92915050565b6000806040838503121561108d5761108c610e05565b5b600061109b85828601610e89565b92505060206110ac85828601611061565b9150509250929050565b600080604083850312156110cd576110cc610e05565b5b60006110db85828601610e89565b92505060206110ec85828601610e89565b9150509250929050565b600060a08201905061110b6000830188610f48565b6111186020830187610ef1565b6111256040830186610ef1565b6111326060830185610fda565b61113f6080830184610fda565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061118382610e68565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036111b5576111b4611149565b5b600182019050919050565b60006111cb82610e68565b91506111d683610e68565b92508282019050808211156111ee576111ed611149565b5b92915050565b600082825260208201905092915050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b600061123b6010836111f4565b915061124682611205565b602082019050919050565b6000602082019050818103600083015261126a8161122e565b9050919050565b7f576f726b65722063616e206f6e6c79207265636c61696d207468656972206f7760008201527f6e20617661696c6162696c697479207374616b65000000000000000000000000602082015250565b60006112cd6034836111f4565b91506112d882611271565b604082019050919050565b600060208201905081810360008301526112fc816112c0565b9050919050565b7f5374616b65206475726174696f6e20686173206e6f742079657420656c61707360008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b600061135f6022836111f4565b915061136a82611303565b604082019050919050565b6000602082019050818103600083015261138e81611352565b9050919050565b7f5374616b652068617320616c7265616479206265656e207265636c61696d6564600082015250565b60006113cb6020836111f4565b91506113d682611395565b602082019050919050565b600060208201905081810360008301526113fa816113be565b9050919050565b60006040820190506114166000830185610f48565b6114236020830184610ef1565b9392505050565b6000815190506114398161104a565b92915050565b60006020828403121561145557611454610e05565b5b60006114638482850161142a565b91505092915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b60006114a26020836111f4565b91506114ad8261146c565b602082019050919050565b600060208201905081810360008301526114d181611495565b9050919050565b60006020820190506114ed6000830184610f48565b92915050565b60008151905061150281610e72565b92915050565b60006020828403121561151e5761151d610e05565b5b600061152c848285016114f3565b91505092915050565b600060408201905061154a6000830185610ef1565b6115576020830184610ef1565b9392505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006115ba6033836111f4565b91506115c58261155e565b604082019050919050565b600060208201905081810360008301526115e9816115ad565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006116266018836111f4565b9150611631826115f0565b602082019050919050565b6000602082019050818103600083015261165581611619565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b60006116b8603a836111f4565b91506116c38261165c565b604082019050919050565b600060208201905081810360008301526116e7816116ab565b9050919050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000611724601a836111f4565b915061172f826116ee565b602082019050919050565b6000602082019050818103600083015261175381611717565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061179482610e68565b915061179f83610e68565b9250826117af576117ae61175a565b5b82820690509291505056fea2646970667358221220222921ff67786706a1b0d1108e8562ef2151aa425705261c72af54655338018764736f6c63430008180033", + "bytecode": "0x60c06040523480156200001157600080fd5b50604051620019a6380380620019a6833981810160405281019062000037919062000134565b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508060a0818152505050506200017b565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000ad8262000080565b9050919050565b6000620000c182620000a0565b9050919050565b620000d381620000b4565b8114620000df57600080fd5b50565b600081519050620000f381620000c8565b92915050565b6000819050919050565b6200010e81620000f9565b81146200011a57600080fd5b50565b6000815190506200012e8162000103565b92915050565b600080604083850312156200014e576200014d6200007b565b5b60006200015e85828601620000e2565b925050602062000171858286016200011d565b9150509250929050565b60805160a0516117f0620001b66000396000818161031001526108f10152600081816105690152818161077a015261083c01526117f06000f3fe60806040526004361061009c5760003560e01c8063854b6a4f11610064578063854b6a4f1461016a578063a035b1fe14610193578063b5b20c00146101be578063c4a32591146101e7578063c4a9e11614610210578063d5a44f861461023b5761009c565b8063216ed6ad146100a15780634b8b194c146100ca5780635badbe4c146100d45780638150d507146100ff57806381d12c5814610128575b600080fd5b3480156100ad57600080fd5b506100c860048036038101906100c39190610e9e565b61027c565b005b6100d261030e565b005b3480156100e057600080fd5b506100e9610404565b6040516100f69190610f00565b60405180910390f35b34801561010b57600080fd5b5061012660048036038101906101219190610f1b565b61040a565b005b34801561013457600080fd5b5061014f600480360381019061014a9190610f1b565b61060e565b60405161016196959493929190610fe9565b60405180910390f35b34801561017657600080fd5b50610191600480360381019061018c9190611076565b610684565b005b34801561019f57600080fd5b506101a86108ef565b6040516101b59190610f00565b60405180910390f35b3480156101ca57600080fd5b506101e560048036038101906101e091906110b6565b610913565b005b3480156101f357600080fd5b5061020e60048036038101906102099190610f1b565b6109d4565b005b34801561021c57600080fd5b50610225610b78565b6040516102329190610f00565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190610f1b565b610b7e565b6040516102739594939291906110f6565b60405180910390f35b60008060006001600081548092919061029490611178565b9190505581526020019081526020016000209050838160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010181905550814261030091906111c0565b816002018190555050505050565b7f0000000000000000000000000000000000000000000000000000000000000000341015610371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036890611251565b60405180910390fd5b60006003600081548092919061038690611178565b9190505590506000600260008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503481600101819055506103f882610bee565b81600301819055505050565b60035481565b600080600083815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a9906112e3565b60405180910390fd5b806002015442116104f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ef90611375565b60405180910390fd5b8060030160019054906101000a900460ff161561054a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610541906113e1565b60405180910390fd5b60018160030160016101000a81548160ff0219169083151502179055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3383600101546040518363ffffffff1660e01b81526004016105c6929190611401565b6020604051808303816000875af11580156105e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610609919061143f565b505050565b60026020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff16908060030154908060040160009054906101000a900460ff16908060050154905086565b6000600260008481526020019081526020016000209050600160038111156106af576106ae610f57565b5b8160020160009054906101000a900460ff1660038111156106d3576106d2610f57565b5b14610713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070a906114b8565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561075557610754610f57565b5b0217905550828260040160006101000a81548160ff02191690831515021790555060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633ff754428360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016107f591906114d8565b6020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190611508565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fcb294b846001015483620151806040518463ffffffff1660e01b815260040161089d929190611535565b60206040518083038185885af11580156108bb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906108e09190611508565b83600501819055505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b2906115d0565b60405180910390fd5b81426109c791906111c0565b8160020181905550505050565b6000600260008381526020019081526020016000209050600060038111156109ff576109fe610f57565b5b8160020160009054906101000a900460ff166003811115610a2357610a22610f57565b5b14610a63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5a9061163c565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b06906116ce565b60405180910390fd5b60018260020160006101000a81548160ff02191690836003811115610b3757610b36610f57565b5b02179055507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc83604051610b6b9190610f00565b60405180910390a1505050565b60015481565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16908060030160019054906101000a900460ff16905085565b6000610bf8610c90565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055507f429f9327062651dbcecaca0d28b9929067489d32d2c1133ec207c965f1f0ab198160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684604051610c82929190611401565b60405180910390a150919050565b60008060005b600154811015610d145760008082815260200190815260200160002060030160009054906101000a900460ff16610d0757600080828152602001908152602001600020600201544211610d07576000808281526020019081526020016000206001015482610d0491906111c0565b91505b8080600101915050610c96565b5060008111610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f9061173a565b60405180910390fd5b60008144610d669190611789565b9050600080600090505b600154811015610dfe5760008082815260200190815260200160002060030160009054906101000a900460ff16610df157600080828152602001908152602001600020600201544211610df1576000808281526020019081526020016000206001015482610dde91906111c0565b915082821115610df057809450610dfe565b5b8080600101915050610d70565b5050505090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610e3582610e0a565b9050919050565b610e4581610e2a565b8114610e5057600080fd5b50565b600081359050610e6281610e3c565b92915050565b6000819050919050565b610e7b81610e68565b8114610e8657600080fd5b50565b600081359050610e9881610e72565b92915050565b600080600060608486031215610eb757610eb6610e05565b5b6000610ec586828701610e53565b9350506020610ed686828701610e89565b9250506040610ee786828701610e89565b9150509250925092565b610efa81610e68565b82525050565b6000602082019050610f156000830184610ef1565b92915050565b600060208284031215610f3157610f30610e05565b5b6000610f3f84828501610e89565b91505092915050565b610f5181610e2a565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110610f9757610f96610f57565b5b50565b6000819050610fa882610f86565b919050565b6000610fb882610f9a565b9050919050565b610fc881610fad565b82525050565b60008115159050919050565b610fe381610fce565b82525050565b600060c082019050610ffe6000830189610f48565b61100b6020830188610ef1565b6110186040830187610fbf565b6110256060830186610ef1565b6110326080830185610fda565b61103f60a0830184610ef1565b979650505050505050565b61105381610fce565b811461105e57600080fd5b50565b6000813590506110708161104a565b92915050565b6000806040838503121561108d5761108c610e05565b5b600061109b85828601610e89565b92505060206110ac85828601611061565b9150509250929050565b600080604083850312156110cd576110cc610e05565b5b60006110db85828601610e89565b92505060206110ec85828601610e89565b9150509250929050565b600060a08201905061110b6000830188610f48565b6111186020830187610ef1565b6111256040830186610ef1565b6111326060830185610fda565b61113f6080830184610fda565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061118382610e68565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036111b5576111b4611149565b5b600182019050919050565b60006111cb82610e68565b91506111d683610e68565b92508282019050808211156111ee576111ed611149565b5b92915050565b600082825260208201905092915050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b600061123b6010836111f4565b915061124682611205565b602082019050919050565b6000602082019050818103600083015261126a8161122e565b9050919050565b7f576f726b65722063616e206f6e6c79207265636c61696d207468656972206f7760008201527f6e20617661696c6162696c697479207374616b65000000000000000000000000602082015250565b60006112cd6034836111f4565b91506112d882611271565b604082019050919050565b600060208201905081810360008301526112fc816112c0565b9050919050565b7f5374616b65206475726174696f6e20686173206e6f742079657420656c61707360008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b600061135f6022836111f4565b915061136a82611303565b604082019050919050565b6000602082019050818103600083015261138e81611352565b9050919050565b7f5374616b652068617320616c7265616479206265656e207265636c61696d6564600082015250565b60006113cb6020836111f4565b91506113d682611395565b602082019050919050565b600060208201905081810360008301526113fa816113be565b9050919050565b60006040820190506114166000830185610f48565b6114236020830184610ef1565b9392505050565b6000815190506114398161104a565b92915050565b60006020828403121561145557611454610e05565b5b60006114638482850161142a565b91505092915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b60006114a26020836111f4565b91506114ad8261146c565b602082019050919050565b600060208201905081810360008301526114d181611495565b9050919050565b60006020820190506114ed6000830184610f48565b92915050565b60008151905061150281610e72565b92915050565b60006020828403121561151e5761151d610e05565b5b600061152c848285016114f3565b91505092915050565b600060408201905061154a6000830185610ef1565b6115576020830184610ef1565b9392505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006115ba6033836111f4565b91506115c58261155e565b604082019050919050565b600060208201905081810360008301526115e9816115ad565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006116266018836111f4565b9150611631826115f0565b602082019050919050565b6000602082019050818103600083015261165581611619565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b60006116b8603a836111f4565b91506116c38261165c565b604082019050919050565b600060208201905081810360008301526116e7816116ab565b9050919050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000611724601a836111f4565b915061172f826116ee565b602082019050919050565b6000602082019050818103600083015261175381611717565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061179482610e68565b915061179f83610e68565b9250826117af576117ae61175a565b5b82820690509291505056fea2646970667358221220698ef292a92e83917907ccdb19af1053f13041c8e0599e2c8a8ca3a48d1d604464736f6c63430008180033", + "deployedBytecode": "0x60806040526004361061009c5760003560e01c8063854b6a4f11610064578063854b6a4f1461016a578063a035b1fe14610193578063b5b20c00146101be578063c4a32591146101e7578063c4a9e11614610210578063d5a44f861461023b5761009c565b8063216ed6ad146100a15780634b8b194c146100ca5780635badbe4c146100d45780638150d507146100ff57806381d12c5814610128575b600080fd5b3480156100ad57600080fd5b506100c860048036038101906100c39190610e9e565b61027c565b005b6100d261030e565b005b3480156100e057600080fd5b506100e9610404565b6040516100f69190610f00565b60405180910390f35b34801561010b57600080fd5b5061012660048036038101906101219190610f1b565b61040a565b005b34801561013457600080fd5b5061014f600480360381019061014a9190610f1b565b61060e565b60405161016196959493929190610fe9565b60405180910390f35b34801561017657600080fd5b50610191600480360381019061018c9190611076565b610684565b005b34801561019f57600080fd5b506101a86108ef565b6040516101b59190610f00565b60405180910390f35b3480156101ca57600080fd5b506101e560048036038101906101e091906110b6565b610913565b005b3480156101f357600080fd5b5061020e60048036038101906102099190610f1b565b6109d4565b005b34801561021c57600080fd5b50610225610b78565b6040516102329190610f00565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190610f1b565b610b7e565b6040516102739594939291906110f6565b60405180910390f35b60008060006001600081548092919061029490611178565b9190505581526020019081526020016000209050838160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010181905550814261030091906111c0565b816002018190555050505050565b7f0000000000000000000000000000000000000000000000000000000000000000341015610371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036890611251565b60405180910390fd5b60006003600081548092919061038690611178565b9190505590506000600260008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503481600101819055506103f882610bee565b81600301819055505050565b60035481565b600080600083815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a9906112e3565b60405180910390fd5b806002015442116104f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ef90611375565b60405180910390fd5b8060030160019054906101000a900460ff161561054a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610541906113e1565b60405180910390fd5b60018160030160016101000a81548160ff0219169083151502179055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3383600101546040518363ffffffff1660e01b81526004016105c6929190611401565b6020604051808303816000875af11580156105e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610609919061143f565b505050565b60026020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff16908060030154908060040160009054906101000a900460ff16908060050154905086565b6000600260008481526020019081526020016000209050600160038111156106af576106ae610f57565b5b8160020160009054906101000a900460ff1660038111156106d3576106d2610f57565b5b14610713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070a906114b8565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561075557610754610f57565b5b0217905550828260040160006101000a81548160ff02191690831515021790555060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633ff754428360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016107f591906114d8565b6020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190611508565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fcb294b846001015483620151806040518463ffffffff1660e01b815260040161089d929190611535565b60206040518083038185885af11580156108bb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906108e09190611508565b83600501819055505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b2906115d0565b60405180910390fd5b81426109c791906111c0565b8160020181905550505050565b6000600260008381526020019081526020016000209050600060038111156109ff576109fe610f57565b5b8160020160009054906101000a900460ff166003811115610a2357610a22610f57565b5b14610a63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5a9061163c565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b06906116ce565b60405180910390fd5b60018260020160006101000a81548160ff02191690836003811115610b3757610b36610f57565b5b02179055507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc83604051610b6b9190610f00565b60405180910390a1505050565b60015481565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16908060030160019054906101000a900460ff16905085565b6000610bf8610c90565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055507f429f9327062651dbcecaca0d28b9929067489d32d2c1133ec207c965f1f0ab198160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684604051610c82929190611401565b60405180910390a150919050565b60008060005b600154811015610d145760008082815260200190815260200160002060030160009054906101000a900460ff16610d0757600080828152602001908152602001600020600201544211610d07576000808281526020019081526020016000206001015482610d0491906111c0565b91505b8080600101915050610c96565b5060008111610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f9061173a565b60405180910390fd5b60008144610d669190611789565b9050600080600090505b600154811015610dfe5760008082815260200190815260200160002060030160009054906101000a900460ff16610df157600080828152602001908152602001600020600201544211610df1576000808281526020019081526020016000206001015482610dde91906111c0565b915082821115610df057809450610dfe565b5b8080600101915050610d70565b5050505090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610e3582610e0a565b9050919050565b610e4581610e2a565b8114610e5057600080fd5b50565b600081359050610e6281610e3c565b92915050565b6000819050919050565b610e7b81610e68565b8114610e8657600080fd5b50565b600081359050610e9881610e72565b92915050565b600080600060608486031215610eb757610eb6610e05565b5b6000610ec586828701610e53565b9350506020610ed686828701610e89565b9250506040610ee786828701610e89565b9150509250925092565b610efa81610e68565b82525050565b6000602082019050610f156000830184610ef1565b92915050565b600060208284031215610f3157610f30610e05565b5b6000610f3f84828501610e89565b91505092915050565b610f5181610e2a565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110610f9757610f96610f57565b5b50565b6000819050610fa882610f86565b919050565b6000610fb882610f9a565b9050919050565b610fc881610fad565b82525050565b60008115159050919050565b610fe381610fce565b82525050565b600060c082019050610ffe6000830189610f48565b61100b6020830188610ef1565b6110186040830187610fbf565b6110256060830186610ef1565b6110326080830185610fda565b61103f60a0830184610ef1565b979650505050505050565b61105381610fce565b811461105e57600080fd5b50565b6000813590506110708161104a565b92915050565b6000806040838503121561108d5761108c610e05565b5b600061109b85828601610e89565b92505060206110ac85828601611061565b9150509250929050565b600080604083850312156110cd576110cc610e05565b5b60006110db85828601610e89565b92505060206110ec85828601610e89565b9150509250929050565b600060a08201905061110b6000830188610f48565b6111186020830187610ef1565b6111256040830186610ef1565b6111326060830185610fda565b61113f6080830184610fda565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061118382610e68565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036111b5576111b4611149565b5b600182019050919050565b60006111cb82610e68565b91506111d683610e68565b92508282019050808211156111ee576111ed611149565b5b92915050565b600082825260208201905092915050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b600061123b6010836111f4565b915061124682611205565b602082019050919050565b6000602082019050818103600083015261126a8161122e565b9050919050565b7f576f726b65722063616e206f6e6c79207265636c61696d207468656972206f7760008201527f6e20617661696c6162696c697479207374616b65000000000000000000000000602082015250565b60006112cd6034836111f4565b91506112d882611271565b604082019050919050565b600060208201905081810360008301526112fc816112c0565b9050919050565b7f5374616b65206475726174696f6e20686173206e6f742079657420656c61707360008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b600061135f6022836111f4565b915061136a82611303565b604082019050919050565b6000602082019050818103600083015261138e81611352565b9050919050565b7f5374616b652068617320616c7265616479206265656e207265636c61696d6564600082015250565b60006113cb6020836111f4565b91506113d682611395565b602082019050919050565b600060208201905081810360008301526113fa816113be565b9050919050565b60006040820190506114166000830185610f48565b6114236020830184610ef1565b9392505050565b6000815190506114398161104a565b92915050565b60006020828403121561145557611454610e05565b5b60006114638482850161142a565b91505092915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b60006114a26020836111f4565b91506114ad8261146c565b602082019050919050565b600060208201905081810360008301526114d181611495565b9050919050565b60006020820190506114ed6000830184610f48565b92915050565b60008151905061150281610e72565b92915050565b60006020828403121561151e5761151d610e05565b5b600061152c848285016114f3565b91505092915050565b600060408201905061154a6000830185610ef1565b6115576020830184610ef1565b9392505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006115ba6033836111f4565b91506115c58261155e565b604082019050919050565b600060208201905081810360008301526115e9816115ad565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006116266018836111f4565b9150611631826115f0565b602082019050919050565b6000602082019050818103600083015261165581611619565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b60006116b8603a836111f4565b91506116c38261165c565b604082019050919050565b600060208201905081810360008301526116e7816116ab565b9050919050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000611724601a836111f4565b915061172f826116ee565b602082019050919050565b6000602082019050818103600083015261175381611717565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061179482610e68565b915061179f83610e68565b9250826117af576117ae61175a565b5b82820690509291505056fea2646970667358221220698ef292a92e83917907ccdb19af1053f13041c8e0599e2c8a8ca3a48d1d604464736f6c63430008180033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/ethereum/contracts/DAO.sol b/ethereum/contracts/DAO.sol index 337e63b..d67bcfc 100644 --- a/ethereum/contracts/DAO.sol +++ b/ethereum/contracts/DAO.sol @@ -57,6 +57,7 @@ contract DAO is ERC20("Reputation", "REP") { // TODO: Make parameters adjustable // TODO: Add forum parameters + event PostAdded(uint postIndex); event ValidationPoolInitiated(uint poolIndex); event ValidationPoolResolved(uint poolIndex, bool votePasses); @@ -66,6 +67,7 @@ contract DAO is ERC20("Reputation", "REP") { post.author = author; post.sender = msg.sender; post.id = postIndex; + emit PostAdded(postIndex); } /// Accept fee to initiate a validation pool diff --git a/ethereum/test/DAO.js b/ethereum/test/DAO.js index 71ac9f1..0215684 100644 --- a/ethereum/test/DAO.js +++ b/ethereum/test/DAO.js @@ -22,7 +22,7 @@ describe('DAO', () => { describe('Post', () => { it('should be able to add a post', async () => { const { dao, account1 } = await loadFixture(deploy); - await dao.addPost(account1); + await expect(dao.addPost(account1)).to.emit(dao, 'PostAdded').withArgs(0); const post = await dao.posts(0); expect(post.author).to.equal(account1); expect(post.sender).to.equal(account1);