@reality.eth/contracts 4.0.0-rc.1 → 4.0.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ [{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"TheArbitratorMustHaveSetANonZeroFeeForTheQuestion","type":"error"},{"inputs":[],"name":"TheQuestionMustNotHaveBeenFinalized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"question_id","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"fee_paid","type":"uint256"},{"indexed":false,"internalType":"address","name":"requester","type":"address"},{"indexed":false,"internalType":"uint256","name":"remaining","type":"uint256"}],"name":"LogRequestArbitration","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"question_id","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"LogSetCustomDisputeFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"LogSetDisputeFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"LogSetQuestionFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"realitio","type":"address"}],"name":"LogSetRealitio","type":"event"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"arbitration_bounties","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"question_id","type":"bytes32"},{"internalType":"bytes32","name":"answer","type":"bytes32"},{"internalType":"address","name":"payee_if_wrong","type":"address"},{"internalType":"bytes32","name":"last_history_hash","type":"bytes32"},{"internalType":"bytes32","name":"last_answer_or_commitment_id","type":"bytes32"},{"internalType":"address","name":"last_answerer","type":"address"}],"name":"assignWinnerAndSubmitAnswerByArbitrator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"callWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"question_id","type":"bytes32"}],"name":"cancelArbitration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"question_id","type":"bytes32"}],"name":"getDisputeFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metadata","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"realitio","outputs":[{"internalType":"contract IRealityETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"realitycheck","outputs":[{"internalType":"contract IRealityETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"question_id","type":"bytes32"},{"internalType":"uint256","name":"max_previous","type":"uint256"}],"name":"requestArbitration","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"question_id","type":"bytes32"},{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setCustomDisputeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setDisputeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_metadata","type":"string"}],"name":"setMetaData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setQuestionFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setRealitio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"question_id","type":"bytes32"},{"internalType":"bytes32","name":"answer","type":"bytes32"},{"internalType":"address","name":"answerer","type":"address"}],"name":"submitAnswerByArbitrator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"address","name":"addr","type":"address"}],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
@@ -1 +1 @@
1
- 608060405234801561000f575f80fd5b505f80546001600160a01b0319338181169190921617179055610fed806100355f395ff3fe608060405260043610610113575f3560e01c8063a20dd43b1161009d578063d821f81a11610062578063d821f81a14610308578063dad901be14610327578063ebbdd2b01461033b578063f2fde38b1461035a578063fe92049d14610379575f80fd5b8063a20dd43b1461024f578063a22352e214610288578063a829c3d1146102a7578063bc8802a2146102ca578063d44e293c146102e9575f80fd5b80634df6ca2a116100e35780634df6ca2a146101b557806351cff8d9146101d457806379ca21a2146101f35780638da5cb5b146102125780639456fbcc14610230575f80fd5b80630c2a48e21461011e57806317299c0414610154578063392f37e9146101755780634381a07b14610196575f80fd5b3661011a57005b5f80fd5b348015610129575f80fd5b506001546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b34801561015f575f80fd5b5061017361016e366004610bc4565b610398565b005b348015610180575f80fd5b506101896103e9565b60405161014b9190610bdb565b3480156101a1575f80fd5b506101736101b0366004610c26565b610475565b3480156101c0575f80fd5b506101736101cf366004610bc4565b6104da565b3480156101df575f80fd5b506101736101ee366004610c5d565b610579565b3480156101fe575f80fd5b5061017361020d366004610c5d565b6105c4565b34801561021d575f80fd5b505f54610137906001600160a01b031681565b34801561023b575f80fd5b5061017361024a366004610c7f565b610627565b34801561025a575f80fd5b5061027a610269366004610bc4565b60026020525f908152604090205481565b60405190815260200161014b565b348015610293575f80fd5b5061027a6102a2366004610bc4565b61071e565b6102ba6102b5366004610c26565b61074d565b604051901515815260200161014b565b3480156102d5575f80fd5b50600154610137906001600160a01b031681565b3480156102f4575f80fd5b50610173610303366004610cb6565b61094a565b348015610313575f80fd5b50610173610322366004610d24565b6109f6565b348015610332575f80fd5b50610173610a17565b348015610346575f80fd5b50610173610355366004610bc4565b610a8a565b348015610365575f80fd5b50610173610374366004610c5d565b610afb565b348015610384575f80fd5b50610173610393366004610dcf565b610b31565b5f546001600160a01b031633146103ad575f80fd5b60038190556040518181527fbc1292d8ca346c1397b1176ce2935afd34c4365fece415b14e3a9242eae388f5906020015b60405180910390a150565b600580546103f690610e05565b80601f016020809104026020016040519081016040528092919081815260200182805461042290610e05565b801561046d5780601f106104445761010080835404028352916020019161046d565b820191905f5260205f20905b81548152906001019060200180831161045057829003601f168201915b505050505081565b5f546001600160a01b0316331461048a575f80fd5b5f82815260046020526040908190208290555182907fe4887440991624b147d2129ab0befa8c1df4cff87b22513c8eea7cb16ed2aaf2906104ce9084815260200190565b60405180910390a25050565b5f546001600160a01b031633146104ef575f80fd5b6001546040516326fb651560e11b8152600481018390526001600160a01b0390911690634df6ca2a906024015f604051808303815f87803b158015610532575f80fd5b505af1158015610544573d5f803e3d5ffd5b505050507f173ec7037500587e8ac3402cac8426c5c2bac605eabd93f790422e621633d711816040516103de91815260200190565b5f546001600160a01b0316331461058e575f80fd5b6040516001600160a01b038216904780156108fc02915f818181858888f193505050501580156105c0573d5f803e3d5ffd5b5050565b5f546001600160a01b031633146105d9575f80fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f568b4ce4fc4d09c939362effe33053025b93088cab521fc476f469966c7efdd5906020016103de565b5f546001600160a01b0316331461063c575f80fd5b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610680573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106a49190610e3d565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303815f875af11580156106f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107189190610e54565b50505050565b5f8181526004602052604081205461073857600354610747565b5f828152600460205260409020545b92915050565b5f806107588461071e565b9050805f0361077a57604051630248a25160e11b815260040160405180910390fd5b5f8481526002602052604081208054349290610797908490610e87565b90915550505f848152600260205260409020548181106108635760015460405163f6a94ecb60e01b815260048101879052336024820152604481018690526001600160a01b039091169063f6a94ecb906064015f604051808303815f87803b158015610801575f80fd5b505af1158015610813573d5f803e3d5ffd5b5050604080513481523360208201525f8183015290518893507fdf8a830581aa05b0b824a0c184007c33a1ad9100a41751c9ded9f2b4fefb16ba92509081900360600190a2600192505050610747565b600154604051633fc6a14f60e11b8152600481018790526001600160a01b0390911690637f8d429e90602401602060405180830381865afa1580156108aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ce9190610e54565b156108ec57604051635911c13f60e01b815260040160405180910390fd5b847fdf8a830581aa05b0b824a0c184007c33a1ad9100a41751c9ded9f2b4fefb16ba343361091a8587610e9a565b604080519384526001600160a01b0390921660208401529082015260600160405180910390a2505f949350505050565b5f546001600160a01b0316331461095f575f80fd5b5f868152600260205260408082209190915560015490516335138a4f60e21b815260048101889052602481018790526001600160a01b038681166044830152606482018690526084820185905283811660a48301529091169063d44e293c9060c4015f604051808303815f87803b1580156109d8575f80fd5b505af11580156109ea573d5f803e3d5ffd5b50505050505050505050565b5f546001600160a01b03163314610a0b575f80fd5b60056105c08282610efb565b5f546001600160a01b03163314610a2c575f80fd5b60015f9054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610a78575f80fd5b505af1158015610718573d5f803e3d5ffd5b5f546001600160a01b03163314610a9f575f80fd5b600154604051630ebbdd2b60e41b8152600481018390526001600160a01b039091169063ebbdd2b0906024015f604051808303815f87803b158015610ae2575f80fd5b505af1158015610af4573d5f803e3d5ffd5b5050505050565b5f546001600160a01b03163314610b10575f80fd5b5f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610b46575f80fd5b5f8381526002602052604080822091909155600154905163fe92049d60e01b815260048101859052602481018490526001600160a01b0383811660448301529091169063fe92049d906064015f604051808303815f87803b158015610ba9575f80fd5b505af1158015610bbb573d5f803e3d5ffd5b50505050505050565b5f60208284031215610bd4575f80fd5b5035919050565b5f6020808352835180828501525f5b81811015610c0657858101830151858201604001528201610bea565b505f604082860101526040601f19601f8301168501019250505092915050565b5f8060408385031215610c37575f80fd5b50508035926020909101359150565b6001600160a01b0381168114610c5a575f80fd5b50565b5f60208284031215610c6d575f80fd5b8135610c7881610c46565b9392505050565b5f8060408385031215610c90575f80fd5b8235610c9b81610c46565b91506020830135610cab81610c46565b809150509250929050565b5f805f805f8060c08789031215610ccb575f80fd5b86359550602087013594506040870135610ce481610c46565b9350606087013592506080870135915060a0870135610d0281610c46565b809150509295509295509295565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215610d34575f80fd5b813567ffffffffffffffff80821115610d4b575f80fd5b818401915084601f830112610d5e575f80fd5b813581811115610d7057610d70610d10565b604051601f8201601f19908116603f01168101908382118183101715610d9857610d98610d10565b81604052828152876020848701011115610db0575f80fd5b826020860160208301375f928101602001929092525095945050505050565b5f805f60608486031215610de1575f80fd5b83359250602084013591506040840135610dfa81610c46565b809150509250925092565b600181811c90821680610e1957607f821691505b602082108103610e3757634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215610e4d575f80fd5b5051919050565b5f60208284031215610e64575f80fd5b81518015158114610c78575f80fd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561074757610747610e73565b8181038181111561074757610747610e73565b601f821115610ef6575f81815260208120601f850160051c81016020861015610ed35750805b601f850160051c820191505b81811015610ef257828155600101610edf565b5050505b505050565b815167ffffffffffffffff811115610f1557610f15610d10565b610f2981610f238454610e05565b84610ead565b602080601f831160018114610f5c575f8415610f455750858301515b5f19600386901b1c1916600185901b178555610ef2565b5f85815260208120601f198616915b82811015610f8a57888601518255948401946001909101908401610f6b565b5085821015610fa757878501515f19600388901b60f8161c191681555b5050505050600190811b0190555056fea2646970667358221220b89b5830f209f6c0466f4801c1f66e78f39f3d4f20523736f09e161f7c3c33f964736f6c63430008140033
1
+ 608060405234801561000f575f80fd5b505f80546001600160a01b0319338181169190921617179055610fed806100355f395ff3fe608060405260043610610113575f3560e01c8063a20dd43b1161009d578063d821f81a11610062578063d821f81a14610308578063dad901be14610327578063ebbdd2b01461033b578063f2fde38b1461035a578063fe92049d14610379575f80fd5b8063a20dd43b1461024f578063a22352e214610288578063a829c3d1146102a7578063bc8802a2146102ca578063d44e293c146102e9575f80fd5b80634df6ca2a116100e35780634df6ca2a146101b557806351cff8d9146101d457806379ca21a2146101f35780638da5cb5b146102125780639456fbcc14610230575f80fd5b80630c2a48e21461011e57806317299c0414610154578063392f37e9146101755780634381a07b14610196575f80fd5b3661011a57005b5f80fd5b348015610129575f80fd5b506001546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b34801561015f575f80fd5b5061017361016e366004610bc4565b610398565b005b348015610180575f80fd5b506101896103e9565b60405161014b9190610bdb565b3480156101a1575f80fd5b506101736101b0366004610c26565b610475565b3480156101c0575f80fd5b506101736101cf366004610bc4565b6104da565b3480156101df575f80fd5b506101736101ee366004610c5d565b610579565b3480156101fe575f80fd5b5061017361020d366004610c5d565b6105c4565b34801561021d575f80fd5b505f54610137906001600160a01b031681565b34801561023b575f80fd5b5061017361024a366004610c7f565b610627565b34801561025a575f80fd5b5061027a610269366004610bc4565b60026020525f908152604090205481565b60405190815260200161014b565b348015610293575f80fd5b5061027a6102a2366004610bc4565b61071e565b6102ba6102b5366004610c26565b61074d565b604051901515815260200161014b565b3480156102d5575f80fd5b50600154610137906001600160a01b031681565b3480156102f4575f80fd5b50610173610303366004610cb6565b61094a565b348015610313575f80fd5b50610173610322366004610d24565b6109f6565b348015610332575f80fd5b50610173610a17565b348015610346575f80fd5b50610173610355366004610bc4565b610a8a565b348015610365575f80fd5b50610173610374366004610c5d565b610afb565b348015610384575f80fd5b50610173610393366004610dcf565b610b31565b5f546001600160a01b031633146103ad575f80fd5b60038190556040518181527fbc1292d8ca346c1397b1176ce2935afd34c4365fece415b14e3a9242eae388f5906020015b60405180910390a150565b600580546103f690610e05565b80601f016020809104026020016040519081016040528092919081815260200182805461042290610e05565b801561046d5780601f106104445761010080835404028352916020019161046d565b820191905f5260205f20905b81548152906001019060200180831161045057829003601f168201915b505050505081565b5f546001600160a01b0316331461048a575f80fd5b5f82815260046020526040908190208290555182907fe4887440991624b147d2129ab0befa8c1df4cff87b22513c8eea7cb16ed2aaf2906104ce9084815260200190565b60405180910390a25050565b5f546001600160a01b031633146104ef575f80fd5b6001546040516326fb651560e11b8152600481018390526001600160a01b0390911690634df6ca2a906024015f604051808303815f87803b158015610532575f80fd5b505af1158015610544573d5f803e3d5ffd5b505050507f173ec7037500587e8ac3402cac8426c5c2bac605eabd93f790422e621633d711816040516103de91815260200190565b5f546001600160a01b0316331461058e575f80fd5b6040516001600160a01b038216904780156108fc02915f818181858888f193505050501580156105c0573d5f803e3d5ffd5b5050565b5f546001600160a01b031633146105d9575f80fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f568b4ce4fc4d09c939362effe33053025b93088cab521fc476f469966c7efdd5906020016103de565b5f546001600160a01b0316331461063c575f80fd5b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610680573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106a49190610e3d565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303815f875af11580156106f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107189190610e54565b50505050565b5f8181526004602052604081205461073857600354610747565b5f828152600460205260409020545b92915050565b5f806107588461071e565b9050805f0361077a57604051630248a25160e11b815260040160405180910390fd5b5f8481526002602052604081208054349290610797908490610e87565b90915550505f848152600260205260409020548181106108635760015460405163f6a94ecb60e01b815260048101879052336024820152604481018690526001600160a01b039091169063f6a94ecb906064015f604051808303815f87803b158015610801575f80fd5b505af1158015610813573d5f803e3d5ffd5b5050604080513481523360208201525f8183015290518893507fdf8a830581aa05b0b824a0c184007c33a1ad9100a41751c9ded9f2b4fefb16ba92509081900360600190a2600192505050610747565b600154604051633fc6a14f60e11b8152600481018790526001600160a01b0390911690637f8d429e90602401602060405180830381865afa1580156108aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ce9190610e54565b156108ec57604051635911c13f60e01b815260040160405180910390fd5b847fdf8a830581aa05b0b824a0c184007c33a1ad9100a41751c9ded9f2b4fefb16ba343361091a8587610e9a565b604080519384526001600160a01b0390921660208401529082015260600160405180910390a2505f949350505050565b5f546001600160a01b0316331461095f575f80fd5b5f868152600260205260408082209190915560015490516335138a4f60e21b815260048101889052602481018790526001600160a01b038681166044830152606482018690526084820185905283811660a48301529091169063d44e293c9060c4015f604051808303815f87803b1580156109d8575f80fd5b505af11580156109ea573d5f803e3d5ffd5b50505050505050505050565b5f546001600160a01b03163314610a0b575f80fd5b60056105c08282610efb565b5f546001600160a01b03163314610a2c575f80fd5b60015f9054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610a78575f80fd5b505af1158015610718573d5f803e3d5ffd5b5f546001600160a01b03163314610a9f575f80fd5b600154604051630ebbdd2b60e41b8152600481018390526001600160a01b039091169063ebbdd2b0906024015f604051808303815f87803b158015610ae2575f80fd5b505af1158015610af4573d5f803e3d5ffd5b5050505050565b5f546001600160a01b03163314610b10575f80fd5b5f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610b46575f80fd5b5f8381526002602052604080822091909155600154905163fe92049d60e01b815260048101859052602481018490526001600160a01b0383811660448301529091169063fe92049d906064015f604051808303815f87803b158015610ba9575f80fd5b505af1158015610bbb573d5f803e3d5ffd5b50505050505050565b5f60208284031215610bd4575f80fd5b5035919050565b5f6020808352835180828501525f5b81811015610c0657858101830151858201604001528201610bea565b505f604082860101526040601f19601f8301168501019250505092915050565b5f8060408385031215610c37575f80fd5b50508035926020909101359150565b6001600160a01b0381168114610c5a575f80fd5b50565b5f60208284031215610c6d575f80fd5b8135610c7881610c46565b9392505050565b5f8060408385031215610c90575f80fd5b8235610c9b81610c46565b91506020830135610cab81610c46565b809150509250929050565b5f805f805f8060c08789031215610ccb575f80fd5b86359550602087013594506040870135610ce481610c46565b9350606087013592506080870135915060a0870135610d0281610c46565b809150509295509295509295565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215610d34575f80fd5b813567ffffffffffffffff80821115610d4b575f80fd5b818401915084601f830112610d5e575f80fd5b813581811115610d7057610d70610d10565b604051601f8201601f19908116603f01168101908382118183101715610d9857610d98610d10565b81604052828152876020848701011115610db0575f80fd5b826020860160208301375f928101602001929092525095945050505050565b5f805f60608486031215610de1575f80fd5b83359250602084013591506040840135610dfa81610c46565b809150509250925092565b600181811c90821680610e1957607f821691505b602082108103610e3757634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215610e4d575f80fd5b5051919050565b5f60208284031215610e64575f80fd5b81518015158114610c78575f80fd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561074757610747610e73565b8181038181111561074757610747610e73565b601f821115610ef6575f81815260208120601f850160051c81016020861015610ed35750805b601f850160051c820191505b81811015610ef257828155600101610edf565b5050505b505050565b815167ffffffffffffffff811115610f1557610f15610d10565b610f2981610f238454610e05565b84610ead565b602080601f831160018114610f5c575f8415610f455750858301515b5f19600386901b1c1916600185901b178555610ef2565b5f85815260208120601f198616915b82811015610f8a57888601518255948401946001909101908401610f6b565b5085821015610fa757878501515f19600388901b60f8161c191681555b5050505050600190811b0190555056fea26469706673582212207e0ba0bcb8425d532dc465fc0eefc65da049648519e54e6e7e2b0969b435767464736f6c63430008140033
@@ -1 +1 @@
1
- 60806040525f805534801562000013575f80fd5b50620000386040518060600160405280603f815260200162002f5d603f9139620000d3565b506200005d6040518060800160405280604f815260200162003039604f9139620000d3565b50620000826040518060800160405280605a815260200162002fdf605a9139620000d3565b50620000a76040518060800160405280605c815260200162002f01605c9139620000d3565b50620000cc60405180608001604052806043815260200162002f9c60439139620000d3565b5062000207565b5f805480825260016020908152604080842043905551620000f79185910162000190565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906200014f908790620001ad565b60405180910390a362000164816001620001e1565b5f5592915050565b5f5b83811015620001885781810151838201526020016200016e565b50505f910152565b5f8251620001a38184602087016200016c565b9190910192915050565b602081525f8251806020840152620001cd8160408501602087016200016c565b601f01601f19169190910160400192915050565b808201808211156200020157634e487b7160e01b5f52601160045260245ffd5b92915050565b612cec80620002155f395ff3fe608060405260043610610207575f3560e01c806377f325df11610113578063a462fb7b1161009d578063d44e293c1161006d578063d44e293c146107dd578063e12891d4146107fc578063ebbdd2b01461081b578063f6a94ecb1461083a578063fe92049d14610859575f80fd5b8063a462fb7b14610758578063acae8f4e14610777578063bc525652146107b2578063d09cc57e14610758575f80fd5b80638d552d46116100e35780638d552d461461057a578063924532fb146105a857806395addb90146105d95780639e63fa6a146106cd5780639f1025c61461071d575f80fd5b806377f325df146104eb5780637f8d429e146104fe57806382ffa9f71461052d57806383bf46091461055b575f80fd5b8063484c071411610194578063590158a711610164578063590158a71461040657806359245ff31461046f5780636fa427421461048257806370a08231146104ad578063762c38fd146104d8575f80fd5b8063484c0714146103635780634df6ca2a146103915780634e60f883146103b057806351577ea9146103db575f80fd5b80632518904c116101da5780632518904c146102a057806326d6c97b146102ef57806328828b1e1461031d5780633ccfd60b1461033c578063484b93c414610350575f80fd5b80631101a0fd1461020b578063111ec1381461022c57806312a203c31461023f5780632417395c14610271575b5f80fd5b348015610216575f80fd5b5061022a61022536600461256f565b610878565b005b61022a61023a36600461261e565b610b1a565b34801561024a575f80fd5b5061025e61025936600461266d565b610d59565b6040519081526020015b60405180910390f35b34801561027c575f80fd5b5061025e61028b3660046126b7565b5f908152600360208190526040909120015490565b3480156102ab575f80fd5b506102d76102ba3660046126b7565b5f908152600360205260409020600101546001600160a01b031690565b6040516001600160a01b039091168152602001610268565b3480156102fa575f80fd5b5061025e6103093660046126b7565b5f9081526003602052604090206006015490565b348015610328575f80fd5b5061022a6103373660046126ce565b610e77565b348015610347575f80fd5b5061022a61112b565b61025e61035e366004612825565b6111a2565b34801561036e575f80fd5b5061025e61037d3660046126b7565b5f9081526003602052604090206007015490565b34801561039c575f80fd5b5061022a6103ab3660046126b7565b61129e565b3480156103bb575f80fd5b5061025e6103ca3660046126b7565b60026020525f908152604090205481565b3480156103e6575f80fd5b5061025e6103f53660046126b7565b5f9081526003602052604090205490565b348015610411575f80fd5b5061044a6104203660046126b7565b60046020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b039094168452602084019290925290820152606001610268565b61022a61047d3660046126b7565b6112eb565b34801561048d575f80fd5b5061025e61049c3660046128ab565b60056020525f908152604090205481565b3480156104b8575f80fd5b5061025e6104c73660046128ab565b60066020525f908152604090205481565b61025e6104e63660046128c4565b611486565b61022a6104f9366004612940565b611581565b348015610509575f80fd5b5061051d6105183660046126b7565b611798565b6040519015158152602001610268565b348015610538575f80fd5b5061025e6105473660046126b7565b5f9081526003602052604090206005015490565b348015610566575f80fd5b5061025e610575366004612969565b6117f3565b348015610585575f80fd5b5061025e6105943660046126b7565b5f9081526003602052604090206004015490565b3480156105b3575f80fd5b5061051d6105c23660046126b7565b5f9081526003602052604090206002015460ff1690565b3480156105e4575f80fd5b506106666105f33660046126b7565b600360208190525f91825260409091208054600182015460028301549383015460048401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff90931694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e085015261010084019190915261012083015261014082015261016001610268565b3480156106d8575f80fd5b506107086106e73660046126b7565b5f90815260036020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff9091168152602001610268565b348015610728575f80fd5b506107086107373660046126b7565b5f90815260036020526040902060010154600160c01b900463ffffffff1690565b348015610763575f80fd5b5061025e6107723660046126b7565b611888565b348015610782575f80fd5b506107086107913660046126b7565b5f90815260036020526040902060010154600160e01b900463ffffffff1690565b3480156107bd575f80fd5b5061025e6107cc3660046126b7565b60016020525f908152604090205481565b3480156107e8575f80fd5b5061022a6107f73660046129a3565b6118c6565b348015610807575f80fd5b5061051d61081636600461256f565b61193f565b348015610826575f80fd5b5061022a6108353660046126b7565b611adc565b348015610845575f80fd5b5061022a6108543660046129f7565b611bde565b348015610864575f80fd5b5061022a610873366004612a29565b611e05565b8461088281611798565b61089f57604051636030e5f560e11b815260040160405180910390fd5b84515f036108c0576040516312fdb46960e31b815260040160405180910390fd5b5f8681526004602081815260408084208054600190910154600390935290842060058101549301546001600160a01b0390911693919290825b8a51811015610a7c57610973838c838151811061091857610918612a5b565b60200260200101518a848151811061093257610932612a5b565b60200260200101518c858151811061094c5761094c612a5b565b60200260200101518e868151811061096657610966612a5b565b6020026020010151611f26565b610990576040516303a479f160e11b815260040160405180910390fd5b61099a8585612a83565b93506109f68c8386898e86815181106109b5576109b5612a5b565b60200260200101518e87815181106109cf576109cf612a5b565b60200260200101518e88815181106109e9576109e9612a5b565b6020026020010151611f63565b8097508195505050888181518110610a1057610a10612a5b565b6020026020010151945060035f8d81526020019081526020015f20600601548514610a4d57610a40602886612a9c565b610a4a9086612abb565b94505b8a8181518110610a5f57610a5f612a5b565b602002602001015192508080610a7490612ace565b9150506108f9565b8215610abe57610a8d8c878661202b565b5f8c815260046020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610af9565b610ad28c87610acd8888612a83565b61202b565b5f8c815260046020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260036020526040909920600501989098555050505050505050565b5f848152600360205260408120600101548591600160c01b90910463ffffffff169003610b5a5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615610b8c576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590610bc557504263ffffffff168163ffffffff1611155b15610be35760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590610c1b57504263ffffffff168163ffffffff16115b15610c395760405163079994c560e31b815260040160405180910390fd5b8634805f03610c5b57604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003610caa575f83815260036020526040902060070154821015610ca55760405163291784d560e01b815260040160405180910390fd5b610cd5565b610cb5816002612ae6565b821015610cd5576040516328eecafb60e21b815260040160405180910390fd5b89888015610d0e575f82815260036020526040902060060154811015610d0e5760405163f6631e6760e01b815260040160405180910390fd5b6001600160a01b038916610d3557604051630ca6549f60e11b815260040160405180910390fd5b610d418c8c8b346120ab565b610d4b8c8c61217c565b505050505050505050505050565b5f85610d6481611798565b610d8157604051636030e5f560e11b815260040160405180910390fd5b5f878152600360205260409020548614610dae57604051630763e45d60e41b815260040160405180910390fd5b5f878152600360205260409020600101546001600160a01b03868116911614610dea5760405163f089a18560e01b815260040160405180910390fd5b5f8781526003602052604090206001015463ffffffff600160c01b90910481169085161115610e2c57604051633f61762b60e01b815260040160405180910390fd5b5f87815260036020526040902060060154831115610e5d57604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600360205250604090206004015490565b5f805b8751821015611119575f888381518110610e9657610e96612a5b565b602002602001015190505f888481518110610eb357610eb3612a5b565b602002602001015190505f8167ffffffffffffffff811115610ed757610ed761242a565b604051908082528060200260200182016040528015610f00578160200160208202803683370190505b5090505f8267ffffffffffffffff811115610f1d57610f1d61242a565b604051908082528060200260200182016040528015610f46578160200160208202803683370190505b5090505f8367ffffffffffffffff811115610f6357610f6361242a565b604051908082528060200260200182016040528015610f8c578160200160208202803683370190505b5090505f8467ffffffffffffffff811115610fa957610fa961242a565b604051908082528060200260200182016040528015610fd2578160200160208202803683370190505b5090505f5b858110156110f2578c8881518110610ff157610ff1612a5b565b602002602001015185828151811061100b5761100b612a5b565b6020026020010181815250508b888151811061102957611029612a5b565b602002602001015184828151811061104357611043612a5b565b60200260200101906001600160a01b031690816001600160a01b0316815250508a888151811061107557611075612a5b565b602002602001015183828151811061108f5761108f612a5b565b6020026020010181815250508988815181106110ad576110ad612a5b565b60200260200101518282815181106110c7576110c7612a5b565b6020908102919091010152876110dc81612ace565b98505080806110ea90612ace565b915050610fd7565b6110ff8786868686610878565b50505050505050818061111190612ace565b925050610e7a565b61112161112b565b5050505050505050565b335f81815260066020526040808220805490839055905190929183156108fc02918491818181858888f19350505050158015611169573d5f803e3d5ffd5b5060405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b5f8781526001602052604081205481036111cf5760405163bbbf712b60e01b815260040160405180910390fd5b5f8885896040516020016111e593929190612b1f565b6040516020818303038152906040528051906020012090505f8188888630338a60405160200161121b9796959493929190612b57565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d4260405161127a9796959493929190612bdb565b60405180910390a461129181838a8a8a89346121e2565b9998505050505050505050565b335f81815260056020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f818152600360205260408120600101548291600160c01b90910463ffffffff16900361132b5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff161561135d576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061139657504263ffffffff168163ffffffff1611155b156113b45760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff1680158015906113ec57504263ffffffff168163ffffffff16115b1561140a5760405163079994c560e31b815260040160405180910390fd5b5f8481526003602081905260409091200154611427903490612a83565b5f858152600360208190526040918290200182905551339186917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab669161147891349190918252602082015260400190565b60405180910390a350505050565b5f8681526001602052604081205481036114b35760405163bbbf712b60e01b815260040160405180910390fd5b5f8784886040516020016114c993929190612b1f565b6040516020818303038152906040528051906020012090505f8187875f3033896040516020016114ff9796959493929190612b57565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c4260405161155e9796959493929190612bdb565b60405180910390a461157581838989895f346121e2565b98975050505050505050565b5f838152600360205260408120600101548491600160c01b90910463ffffffff1690036115c15760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff16156115f3576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061162c57504263ffffffff168163ffffffff1611155b1561164a5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061168257504263ffffffff168163ffffffff16115b156116a05760405163079994c560e31b815260040160405180910390fd5b8534805f036116c257604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611711575f8381526003602052604090206007015482101561170c5760405163291784d560e01b815260040160405180910390fd5b61173c565b61171c816002612ae6565b82101561173c576040516328eecafb60e21b815260040160405180910390fd5b88878015611775575f828152600360205260409020600601548110156117755760405163f6631e6760e01b815260040160405180910390fd5b6117818b8b33346120ab565b61178b8b8b61217c565b5050505050505050505050565b5f8181526003602052604081206001810154600290910154600160e01b90910463ffffffff169060ff161580156117d457505f8163ffffffff16115b80156117ec57504263ffffffff168163ffffffff1611155b9392505050565b5f80548082526001602090815260408084204390555161181591859101612c2a565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e49061186b908790612c45565b60405180910390a361187e816001612a83565b5f5590505b919050565b5f8161189381611798565b6118b057604051636030e5f560e11b815260040160405180910390fd5b50505f9081526003602052604090206004015490565b5f86815260036020526040902060058101546006909101546118ed91908590859085611f26565b61190a576040516303a479f160e11b815260040160405180910390fd5b5f8681526003602052604081206004015486146119275784611929565b815b9050611936878783611e05565b50505050505050565b5f858152600360205260408120600101548690600160c01b900463ffffffff16820361197e5760405163a42db76b60e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff1680158015906119b757504263ffffffff168163ffffffff1611155b156119d55760405163372900d560e21b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611a0d57504263ffffffff168163ffffffff16115b15611a2b5760405163079994c560e31b815260040160405180910390fd5b5f898152600360205260409020600501548851885181141580611a4f575080885114155b80611a5b575080875114155b15611a6a575f95505050611ad0565b5f5b81811015611ac857611a8a838c838151811061091857610918612a5b565b611a99575f9650505050611ad0565b8a8181518110611aab57611aab612a5b565b602002602001015192508080611ac090612ace565b915050611a6c565b506001955050505b50505095945050505050565b5f8181526003602052604090206001015481906001600160a01b03163314611b1757604051634361661f60e11b815260040160405180910390fd5b5f82815260036020526040902060020154829060ff16611b4a5760405163f476ed1160e01b815260040160405180910390fd5b5f83815260036020526040902060028101805460ff1916905560010154611b7e90600160c01b900463ffffffff1642612c57565b5f84815260036020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526003602052604090206001015483906001600160a01b03163314611c1957604051634361661f60e11b815260040160405180910390fd5b5f848152600360205260408120600101548591600160c01b90910463ffffffff169003611c595760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611c8b576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611cc457504263ffffffff168163ffffffff1611155b15611ce25760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611d1a57504263ffffffff168163ffffffff16115b15611d385760405163079994c560e31b815260040160405180910390fd5b86858015611d71575f82815260036020526040902060060154811015611d715760405163f6631e6760e01b815260040160405180910390fd5b5f89815260036020526040902060010154600160e01b900463ffffffff16611dac576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260036020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526003602052604090206001015483906001600160a01b03163314611e4057604051634361661f60e11b815260040160405180910390fd5b5f84815260036020526040902060020154849060ff16611e735760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b038316611e9a576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600360205260408120600201805460ff19169055611eed908690869086906120ab565b5f8581526003602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f604051602001611f40959493929190612c7b565b604051602081830303815290604052805190602001208614905095945050505050565b5f8087830361201c576001600160a01b038616611fd9578495505f60035f8b81526020019081526020015f2060030154118015611f9e575060015b15611fd457611fc2898760035f8d81526020019081526020015f206003015461202b565b5f898152600360208190526040822001555b61201c565b856001600160a01b0316856001600160a01b03161461201c575f848810156120015787612003565b845b90506120148a88610acd848c612abb565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f9081526006602052604090205461204e908290612a83565b6001600160a01b0383165f818152600660205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a69061209e9085815260200190565b60405180910390a3505050565b5f8481526003602090815260408083206005015490516120d392879186918891879101612c7b565b6040516020818303038152906040528051906020012090505f821115612107575f8581526003602052604090206006018290555b5f8581526003602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a00160405180910390a35050505050565b5f82815260036020526040902060048101829055600101546121ab90600160c01b900463ffffffff1642612c57565b5f92835260036020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600360205260409020600101548790600160c01b900463ffffffff1615612223576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036122495760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061227357604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b038716158015906122955750336001600160a01b03881614155b1561231d576001600160a01b0387165f90815260056020526040902054808210156122d35760405163d72564c760e01b815260040160405180910390fd5b6122dd8183612abb565b6001600160a01b0389165f90815260066020526040902054909250612303908290612a83565b6001600160a01b0389165f90815260066020526040902055505b5f898152600360205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c1617929092171617905580156123c9575f89815260036020818152604092839020909101839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b831561241f575f89815260036020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906124169087815260200190565b60405180910390a25b505050505050505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156124675761246761242a565b604052919050565b5f67ffffffffffffffff8211156124885761248861242a565b5060051b60200190565b5f82601f8301126124a1575f80fd5b813560206124b66124b18361246f565b61243e565b82815260059290921b840181019181810190868411156124d4575f80fd5b8286015b848110156124ef57803583529183019183016124d8565b509695505050505050565b80356001600160a01b0381168114611883575f80fd5b5f82601f83011261251f575f80fd5b8135602061252f6124b18361246f565b82815260059290921b8401810191818101908684111561254d575f80fd5b8286015b848110156124ef57612562816124fa565b8352918301918301612551565b5f805f805f60a08688031215612583575f80fd5b85359450602086013567ffffffffffffffff808211156125a1575f80fd5b6125ad89838a01612492565b955060408801359150808211156125c2575f80fd5b6125ce89838a01612510565b945060608801359150808211156125e3575f80fd5b6125ef89838a01612492565b93506080880135915080821115612604575f80fd5b5061261188828901612492565b9150509295509295909350565b5f805f8060808587031215612631575f80fd5b84359350602085013592506040850135915061264f606086016124fa565b905092959194509250565b803563ffffffff81168114611883575f80fd5b5f805f805f60a08688031215612681575f80fd5b8535945060208601359350612698604087016124fa565b92506126a66060870161265a565b949793965091946080013592915050565b5f602082840312156126c7575f80fd5b5035919050565b5f805f805f8060c087890312156126e3575f80fd5b863567ffffffffffffffff808211156126fa575f80fd5b6127068a838b01612492565b9750602089013591508082111561271b575f80fd5b6127278a838b01612492565b9650604089013591508082111561273c575f80fd5b6127488a838b01612492565b9550606089013591508082111561275d575f80fd5b6127698a838b01612510565b9450608089013591508082111561277e575f80fd5b61278a8a838b01612492565b935060a089013591508082111561279f575f80fd5b506127ac89828a01612492565b9150509295509295509295565b5f82601f8301126127c8575f80fd5b813567ffffffffffffffff8111156127e2576127e261242a565b6127f5601f8201601f191660200161243e565b818152846020838601011115612809575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f60e0888a03121561283b575f80fd5b87359650602088013567ffffffffffffffff811115612858575f80fd5b6128648a828b016127b9565b965050612873604089016124fa565b94506128816060890161265a565b935061288f6080890161265a565b925060a0880135915060c0880135905092959891949750929550565b5f602082840312156128bb575f80fd5b6117ec826124fa565b5f805f805f8060c087890312156128d9575f80fd5b86359550602087013567ffffffffffffffff8111156128f6575f80fd5b61290289828a016127b9565b955050612911604088016124fa565b935061291f6060880161265a565b925061292d6080880161265a565b915060a087013590509295509295509295565b5f805f60608486031215612952575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215612979575f80fd5b813567ffffffffffffffff81111561298f575f80fd5b61299b848285016127b9565b949350505050565b5f805f805f8060c087890312156129b8575f80fd5b86359550602087013594506129cf604088016124fa565b935060608701359250608087013591506129eb60a088016124fa565b90509295509295509295565b5f805f60608486031215612a09575f80fd5b83359250612a19602085016124fa565b9150604084013590509250925092565b5f805f60608486031215612a3b575f80fd5b8335925060208401359150612a52604085016124fa565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115612a9657612a96612a6f565b92915050565b5f82612ab657634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115612a9657612a96612a6f565b5f60018201612adf57612adf612a6f565b5060010190565b8082028115828204841417612a9657612a96612a6f565b5f5b83811015612b17578181015183820152602001612aff565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f8251612b48816024850160208701612afd565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f8151808452612bc7816020860160208601612afd565b601f01601f19169290920160200192915050565b87815260e060208201525f612bf360e0830189612bb0565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f8251612c3b818460208701612afd565b9190910192915050565b602081525f6117ec6020830184612bb0565b63ffffffff818116838216019080821115612c7457612c74612a6f565b5092915050565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea2646970667358221220552271d1a2a5768b24fc174d4cab37dbbec32119faabe09b6f6e360e34f9f23464736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
1
+ 60806040525f805534801562000013575f80fd5b50620000386040518060600160405280603f815260200162002f5d603f9139620000d3565b506200005d6040518060800160405280604f815260200162003039604f9139620000d3565b50620000826040518060800160405280605a815260200162002fdf605a9139620000d3565b50620000a76040518060800160405280605c815260200162002f01605c9139620000d3565b50620000cc60405180608001604052806043815260200162002f9c60439139620000d3565b5062000207565b5f805480825260016020908152604080842043905551620000f79185910162000190565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906200014f908790620001ad565b60405180910390a362000164816001620001e1565b5f5592915050565b5f5b83811015620001885781810151838201526020016200016e565b50505f910152565b5f8251620001a38184602087016200016c565b9190910192915050565b602081525f8251806020840152620001cd8160408501602087016200016c565b601f01601f19169190910160400192915050565b808201808211156200020157634e487b7160e01b5f52601160045260245ffd5b92915050565b612cec80620002155f395ff3fe608060405260043610610207575f3560e01c806377f325df11610113578063a462fb7b1161009d578063d44e293c1161006d578063d44e293c146107dd578063e12891d4146107fc578063ebbdd2b01461081b578063f6a94ecb1461083a578063fe92049d14610859575f80fd5b8063a462fb7b14610758578063acae8f4e14610777578063bc525652146107b2578063d09cc57e14610758575f80fd5b80638d552d46116100e35780638d552d461461057a578063924532fb146105a857806395addb90146105d95780639e63fa6a146106cd5780639f1025c61461071d575f80fd5b806377f325df146104eb5780637f8d429e146104fe57806382ffa9f71461052d57806383bf46091461055b575f80fd5b8063484c071411610194578063590158a711610164578063590158a71461040657806359245ff31461046f5780636fa427421461048257806370a08231146104ad578063762c38fd146104d8575f80fd5b8063484c0714146103635780634df6ca2a146103915780634e60f883146103b057806351577ea9146103db575f80fd5b80632518904c116101da5780632518904c146102a057806326d6c97b146102ef57806328828b1e1461031d5780633ccfd60b1461033c578063484b93c414610350575f80fd5b80631101a0fd1461020b578063111ec1381461022c57806312a203c31461023f5780632417395c14610271575b5f80fd5b348015610216575f80fd5b5061022a61022536600461256f565b610878565b005b61022a61023a36600461261e565b610b1a565b34801561024a575f80fd5b5061025e61025936600461266d565b610d59565b6040519081526020015b60405180910390f35b34801561027c575f80fd5b5061025e61028b3660046126b7565b5f908152600360208190526040909120015490565b3480156102ab575f80fd5b506102d76102ba3660046126b7565b5f908152600360205260409020600101546001600160a01b031690565b6040516001600160a01b039091168152602001610268565b3480156102fa575f80fd5b5061025e6103093660046126b7565b5f9081526003602052604090206006015490565b348015610328575f80fd5b5061022a6103373660046126ce565b610e77565b348015610347575f80fd5b5061022a61112b565b61025e61035e366004612825565b6111a2565b34801561036e575f80fd5b5061025e61037d3660046126b7565b5f9081526003602052604090206007015490565b34801561039c575f80fd5b5061022a6103ab3660046126b7565b61129e565b3480156103bb575f80fd5b5061025e6103ca3660046126b7565b60026020525f908152604090205481565b3480156103e6575f80fd5b5061025e6103f53660046126b7565b5f9081526003602052604090205490565b348015610411575f80fd5b5061044a6104203660046126b7565b60046020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b039094168452602084019290925290820152606001610268565b61022a61047d3660046126b7565b6112eb565b34801561048d575f80fd5b5061025e61049c3660046128ab565b60056020525f908152604090205481565b3480156104b8575f80fd5b5061025e6104c73660046128ab565b60066020525f908152604090205481565b61025e6104e63660046128c4565b611486565b61022a6104f9366004612940565b611581565b348015610509575f80fd5b5061051d6105183660046126b7565b611798565b6040519015158152602001610268565b348015610538575f80fd5b5061025e6105473660046126b7565b5f9081526003602052604090206005015490565b348015610566575f80fd5b5061025e610575366004612969565b6117f3565b348015610585575f80fd5b5061025e6105943660046126b7565b5f9081526003602052604090206004015490565b3480156105b3575f80fd5b5061051d6105c23660046126b7565b5f9081526003602052604090206002015460ff1690565b3480156105e4575f80fd5b506106666105f33660046126b7565b600360208190525f91825260409091208054600182015460028301549383015460048401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff90931694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e085015261010084019190915261012083015261014082015261016001610268565b3480156106d8575f80fd5b506107086106e73660046126b7565b5f90815260036020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff9091168152602001610268565b348015610728575f80fd5b506107086107373660046126b7565b5f90815260036020526040902060010154600160c01b900463ffffffff1690565b348015610763575f80fd5b5061025e6107723660046126b7565b611888565b348015610782575f80fd5b506107086107913660046126b7565b5f90815260036020526040902060010154600160e01b900463ffffffff1690565b3480156107bd575f80fd5b5061025e6107cc3660046126b7565b60016020525f908152604090205481565b3480156107e8575f80fd5b5061022a6107f73660046129a3565b6118c6565b348015610807575f80fd5b5061051d61081636600461256f565b61193f565b348015610826575f80fd5b5061022a6108353660046126b7565b611adc565b348015610845575f80fd5b5061022a6108543660046129f7565b611bde565b348015610864575f80fd5b5061022a610873366004612a29565b611e05565b8461088281611798565b61089f57604051636030e5f560e11b815260040160405180910390fd5b84515f036108c0576040516312fdb46960e31b815260040160405180910390fd5b5f8681526004602081815260408084208054600190910154600390935290842060058101549301546001600160a01b0390911693919290825b8a51811015610a7c57610973838c838151811061091857610918612a5b565b60200260200101518a848151811061093257610932612a5b565b60200260200101518c858151811061094c5761094c612a5b565b60200260200101518e868151811061096657610966612a5b565b6020026020010151611f26565b610990576040516303a479f160e11b815260040160405180910390fd5b61099a8585612a83565b93506109f68c8386898e86815181106109b5576109b5612a5b565b60200260200101518e87815181106109cf576109cf612a5b565b60200260200101518e88815181106109e9576109e9612a5b565b6020026020010151611f63565b8097508195505050888181518110610a1057610a10612a5b565b6020026020010151945060035f8d81526020019081526020015f20600601548514610a4d57610a40602886612a9c565b610a4a9086612abb565b94505b8a8181518110610a5f57610a5f612a5b565b602002602001015192508080610a7490612ace565b9150506108f9565b8215610abe57610a8d8c878661202b565b5f8c815260046020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610af9565b610ad28c87610acd8888612a83565b61202b565b5f8c815260046020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260036020526040909920600501989098555050505050505050565b5f848152600360205260408120600101548591600160c01b90910463ffffffff169003610b5a5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615610b8c576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590610bc557504263ffffffff168163ffffffff1611155b15610be35760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590610c1b57504263ffffffff168163ffffffff16115b15610c395760405163079994c560e31b815260040160405180910390fd5b8634805f03610c5b57604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003610caa575f83815260036020526040902060070154821015610ca55760405163291784d560e01b815260040160405180910390fd5b610cd5565b610cb5816002612ae6565b821015610cd5576040516328eecafb60e21b815260040160405180910390fd5b89888015610d0e575f82815260036020526040902060060154811015610d0e5760405163f6631e6760e01b815260040160405180910390fd5b6001600160a01b038916610d3557604051630ca6549f60e11b815260040160405180910390fd5b610d418c8c8b346120ab565b610d4b8c8c61217c565b505050505050505050505050565b5f85610d6481611798565b610d8157604051636030e5f560e11b815260040160405180910390fd5b5f878152600360205260409020548614610dae57604051630763e45d60e41b815260040160405180910390fd5b5f878152600360205260409020600101546001600160a01b03868116911614610dea5760405163f089a18560e01b815260040160405180910390fd5b5f8781526003602052604090206001015463ffffffff600160c01b90910481169085161115610e2c57604051633f61762b60e01b815260040160405180910390fd5b5f87815260036020526040902060060154831115610e5d57604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600360205250604090206004015490565b5f805b8751821015611119575f888381518110610e9657610e96612a5b565b602002602001015190505f888481518110610eb357610eb3612a5b565b602002602001015190505f8167ffffffffffffffff811115610ed757610ed761242a565b604051908082528060200260200182016040528015610f00578160200160208202803683370190505b5090505f8267ffffffffffffffff811115610f1d57610f1d61242a565b604051908082528060200260200182016040528015610f46578160200160208202803683370190505b5090505f8367ffffffffffffffff811115610f6357610f6361242a565b604051908082528060200260200182016040528015610f8c578160200160208202803683370190505b5090505f8467ffffffffffffffff811115610fa957610fa961242a565b604051908082528060200260200182016040528015610fd2578160200160208202803683370190505b5090505f5b858110156110f2578c8881518110610ff157610ff1612a5b565b602002602001015185828151811061100b5761100b612a5b565b6020026020010181815250508b888151811061102957611029612a5b565b602002602001015184828151811061104357611043612a5b565b60200260200101906001600160a01b031690816001600160a01b0316815250508a888151811061107557611075612a5b565b602002602001015183828151811061108f5761108f612a5b565b6020026020010181815250508988815181106110ad576110ad612a5b565b60200260200101518282815181106110c7576110c7612a5b565b6020908102919091010152876110dc81612ace565b98505080806110ea90612ace565b915050610fd7565b6110ff8786868686610878565b50505050505050818061111190612ace565b925050610e7a565b61112161112b565b5050505050505050565b335f81815260066020526040808220805490839055905190929183156108fc02918491818181858888f19350505050158015611169573d5f803e3d5ffd5b5060405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b5f8781526001602052604081205481036111cf5760405163bbbf712b60e01b815260040160405180910390fd5b5f8885896040516020016111e593929190612b1f565b6040516020818303038152906040528051906020012090505f8188888630338a60405160200161121b9796959493929190612b57565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d4260405161127a9796959493929190612bdb565b60405180910390a461129181838a8a8a89346121e2565b9998505050505050505050565b335f81815260056020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f818152600360205260408120600101548291600160c01b90910463ffffffff16900361132b5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff161561135d576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061139657504263ffffffff168163ffffffff1611155b156113b45760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff1680158015906113ec57504263ffffffff168163ffffffff16115b1561140a5760405163079994c560e31b815260040160405180910390fd5b5f8481526003602081905260409091200154611427903490612a83565b5f858152600360208190526040918290200182905551339186917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab669161147891349190918252602082015260400190565b60405180910390a350505050565b5f8681526001602052604081205481036114b35760405163bbbf712b60e01b815260040160405180910390fd5b5f8784886040516020016114c993929190612b1f565b6040516020818303038152906040528051906020012090505f8187875f3033896040516020016114ff9796959493929190612b57565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c4260405161155e9796959493929190612bdb565b60405180910390a461157581838989895f346121e2565b98975050505050505050565b5f838152600360205260408120600101548491600160c01b90910463ffffffff1690036115c15760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff16156115f3576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061162c57504263ffffffff168163ffffffff1611155b1561164a5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061168257504263ffffffff168163ffffffff16115b156116a05760405163079994c560e31b815260040160405180910390fd5b8534805f036116c257604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611711575f8381526003602052604090206007015482101561170c5760405163291784d560e01b815260040160405180910390fd5b61173c565b61171c816002612ae6565b82101561173c576040516328eecafb60e21b815260040160405180910390fd5b88878015611775575f828152600360205260409020600601548110156117755760405163f6631e6760e01b815260040160405180910390fd5b6117818b8b33346120ab565b61178b8b8b61217c565b5050505050505050505050565b5f8181526003602052604081206001810154600290910154600160e01b90910463ffffffff169060ff161580156117d457505f8163ffffffff16115b80156117ec57504263ffffffff168163ffffffff1611155b9392505050565b5f80548082526001602090815260408084204390555161181591859101612c2a565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e49061186b908790612c45565b60405180910390a361187e816001612a83565b5f5590505b919050565b5f8161189381611798565b6118b057604051636030e5f560e11b815260040160405180910390fd5b50505f9081526003602052604090206004015490565b5f86815260036020526040902060058101546006909101546118ed91908590859085611f26565b61190a576040516303a479f160e11b815260040160405180910390fd5b5f8681526003602052604081206004015486146119275784611929565b815b9050611936878783611e05565b50505050505050565b5f858152600360205260408120600101548690600160c01b900463ffffffff16820361197e5760405163a42db76b60e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff1680158015906119b757504263ffffffff168163ffffffff1611155b156119d55760405163372900d560e21b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611a0d57504263ffffffff168163ffffffff16115b15611a2b5760405163079994c560e31b815260040160405180910390fd5b5f898152600360205260409020600501548851885181141580611a4f575080885114155b80611a5b575080875114155b15611a6a575f95505050611ad0565b5f5b81811015611ac857611a8a838c838151811061091857610918612a5b565b611a99575f9650505050611ad0565b8a8181518110611aab57611aab612a5b565b602002602001015192508080611ac090612ace565b915050611a6c565b506001955050505b50505095945050505050565b5f8181526003602052604090206001015481906001600160a01b03163314611b1757604051634361661f60e11b815260040160405180910390fd5b5f82815260036020526040902060020154829060ff16611b4a5760405163f476ed1160e01b815260040160405180910390fd5b5f83815260036020526040902060028101805460ff1916905560010154611b7e90600160c01b900463ffffffff1642612c57565b5f84815260036020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526003602052604090206001015483906001600160a01b03163314611c1957604051634361661f60e11b815260040160405180910390fd5b5f848152600360205260408120600101548591600160c01b90910463ffffffff169003611c595760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611c8b576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611cc457504263ffffffff168163ffffffff1611155b15611ce25760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611d1a57504263ffffffff168163ffffffff16115b15611d385760405163079994c560e31b815260040160405180910390fd5b86858015611d71575f82815260036020526040902060060154811015611d715760405163f6631e6760e01b815260040160405180910390fd5b5f89815260036020526040902060010154600160e01b900463ffffffff16611dac576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260036020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526003602052604090206001015483906001600160a01b03163314611e4057604051634361661f60e11b815260040160405180910390fd5b5f84815260036020526040902060020154849060ff16611e735760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b038316611e9a576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600360205260408120600201805460ff19169055611eed908690869086906120ab565b5f8581526003602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f604051602001611f40959493929190612c7b565b604051602081830303815290604052805190602001208614905095945050505050565b5f8087830361201c576001600160a01b038616611fd9578495505f60035f8b81526020019081526020015f2060030154118015611f9e575060015b15611fd457611fc2898760035f8d81526020019081526020015f206003015461202b565b5f898152600360208190526040822001555b61201c565b856001600160a01b0316856001600160a01b03161461201c575f848810156120015787612003565b845b90506120148a88610acd848c612abb565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f9081526006602052604090205461204e908290612a83565b6001600160a01b0383165f818152600660205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a69061209e9085815260200190565b60405180910390a3505050565b5f8481526003602090815260408083206005015490516120d392879186918891879101612c7b565b6040516020818303038152906040528051906020012090505f821115612107575f8581526003602052604090206006018290555b5f8581526003602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a00160405180910390a35050505050565b5f82815260036020526040902060048101829055600101546121ab90600160c01b900463ffffffff1642612c57565b5f92835260036020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600360205260409020600101548790600160c01b900463ffffffff1615612223576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036122495760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061227357604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b038716158015906122955750336001600160a01b03881614155b1561231d576001600160a01b0387165f90815260056020526040902054808210156122d35760405163d72564c760e01b815260040160405180910390fd5b6122dd8183612abb565b6001600160a01b0389165f90815260066020526040902054909250612303908290612a83565b6001600160a01b0389165f90815260066020526040902055505b5f898152600360205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c1617929092171617905580156123c9575f89815260036020818152604092839020909101839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b831561241f575f89815260036020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906124169087815260200190565b60405180910390a25b505050505050505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156124675761246761242a565b604052919050565b5f67ffffffffffffffff8211156124885761248861242a565b5060051b60200190565b5f82601f8301126124a1575f80fd5b813560206124b66124b18361246f565b61243e565b82815260059290921b840181019181810190868411156124d4575f80fd5b8286015b848110156124ef57803583529183019183016124d8565b509695505050505050565b80356001600160a01b0381168114611883575f80fd5b5f82601f83011261251f575f80fd5b8135602061252f6124b18361246f565b82815260059290921b8401810191818101908684111561254d575f80fd5b8286015b848110156124ef57612562816124fa565b8352918301918301612551565b5f805f805f60a08688031215612583575f80fd5b85359450602086013567ffffffffffffffff808211156125a1575f80fd5b6125ad89838a01612492565b955060408801359150808211156125c2575f80fd5b6125ce89838a01612510565b945060608801359150808211156125e3575f80fd5b6125ef89838a01612492565b93506080880135915080821115612604575f80fd5b5061261188828901612492565b9150509295509295909350565b5f805f8060808587031215612631575f80fd5b84359350602085013592506040850135915061264f606086016124fa565b905092959194509250565b803563ffffffff81168114611883575f80fd5b5f805f805f60a08688031215612681575f80fd5b8535945060208601359350612698604087016124fa565b92506126a66060870161265a565b949793965091946080013592915050565b5f602082840312156126c7575f80fd5b5035919050565b5f805f805f8060c087890312156126e3575f80fd5b863567ffffffffffffffff808211156126fa575f80fd5b6127068a838b01612492565b9750602089013591508082111561271b575f80fd5b6127278a838b01612492565b9650604089013591508082111561273c575f80fd5b6127488a838b01612492565b9550606089013591508082111561275d575f80fd5b6127698a838b01612510565b9450608089013591508082111561277e575f80fd5b61278a8a838b01612492565b935060a089013591508082111561279f575f80fd5b506127ac89828a01612492565b9150509295509295509295565b5f82601f8301126127c8575f80fd5b813567ffffffffffffffff8111156127e2576127e261242a565b6127f5601f8201601f191660200161243e565b818152846020838601011115612809575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f60e0888a03121561283b575f80fd5b87359650602088013567ffffffffffffffff811115612858575f80fd5b6128648a828b016127b9565b965050612873604089016124fa565b94506128816060890161265a565b935061288f6080890161265a565b925060a0880135915060c0880135905092959891949750929550565b5f602082840312156128bb575f80fd5b6117ec826124fa565b5f805f805f8060c087890312156128d9575f80fd5b86359550602087013567ffffffffffffffff8111156128f6575f80fd5b61290289828a016127b9565b955050612911604088016124fa565b935061291f6060880161265a565b925061292d6080880161265a565b915060a087013590509295509295509295565b5f805f60608486031215612952575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215612979575f80fd5b813567ffffffffffffffff81111561298f575f80fd5b61299b848285016127b9565b949350505050565b5f805f805f8060c087890312156129b8575f80fd5b86359550602087013594506129cf604088016124fa565b935060608701359250608087013591506129eb60a088016124fa565b90509295509295509295565b5f805f60608486031215612a09575f80fd5b83359250612a19602085016124fa565b9150604084013590509250925092565b5f805f60608486031215612a3b575f80fd5b8335925060208401359150612a52604085016124fa565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115612a9657612a96612a6f565b92915050565b5f82612ab657634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115612a9657612a96612a6f565b5f60018201612adf57612adf612a6f565b5060010190565b8082028115828204841417612a9657612a96612a6f565b5f5b83811015612b17578181015183820152602001612aff565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f8251612b48816024850160208701612afd565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f8151808452612bc7816020860160208601612afd565b601f01601f19169290920160200192915050565b87815260e060208201525f612bf360e0830189612bb0565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f8251612c3b818460208701612afd565b9190910192915050565b602081525f6117ec6020830184612bb0565b63ffffffff818116838216019080821115612c7457612c74612a6f565b5092915050565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea26469706673582212202e56d4c2ea1ecfb96bbae412bd974b6427a065ffa939f7c773b91be17968b46864736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
@@ -1 +1 @@
1
- 60806040525f805534801562000013575f80fd5b50620000386040518060600160405280603f8152602001620034fd603f9139620000d3565b506200005d6040518060800160405280604f8152602001620035d9604f9139620000d3565b50620000826040518060800160405280605a81526020016200357f605a9139620000d3565b50620000a76040518060800160405280605c8152602001620034a1605c9139620000d3565b50620000cc6040518060800160405280604381526020016200353c60439139620000d3565b506200023c565b6007545f90600160a01b900463ffffffff1615620001045760405163379dfc6360e01b815260040160405180910390fd5b5f805480825260016020908152604092839020439055915190916200012c91859101620001c5565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e49062000184908790620001e2565b60405180910390a36200019981600162000216565b5f5592915050565b5f5b83811015620001bd578181015183820152602001620001a3565b50505f910152565b5f8251620001d8818460208701620001a1565b9190910192915050565b602081525f825180602084015262000202816040850160208701620001a1565b601f01601f19169190910160400192915050565b808201808211156200023657634e487b7160e01b5f52601160045260245ffd5b92915050565b613257806200024a5f395ff3fe608060405234801561000f575f80fd5b506004361061024a575f3560e01c80637f8d429e11610140578063b8eaa980116100bf578063dbc7214411610084578063dbc7214414610744578063e12891d414610778578063ebbdd2b01461078b578063f6a94ecb1461079e578063fc0c546a146107b1578063fe92049d146107c4575f80fd5b8063b8eaa980146106ec578063bc525652146106ff578063d09cc57e146106aa578063d44e293c1461071e578063d4876b9f14610731575f80fd5b806395addb901161010557806395addb90146105645780639e63fa6a1461064c5780639f1025c61461067b578063a462fb7b146106aa578063acae8f4e146106bd575f80fd5b80637f8d429e146104c557806382ffa9f7146104e857806383bf46091461050a5780638d552d461461051d578063924532fb1461053f575f80fd5b8063420dfdd9116101cc57806352debac31161019157806352debac314610404578063590158a7146104175780636fa427421461047457806370a0823114610493578063762c38fd146104b2575f80fd5b8063420dfdd914610365578063484c0714146103915780634df6ca2a146103b35780634e60f883146103c657806351577ea9146103e5575f80fd5b80632518904c116102125780632518904c146102d257806326d6c97b1461031557806328828b1e146103375780632f998a6f1461034a5780633ccfd60b1461035d575f80fd5b80631101a0fd1461024e578063128b7a471461026357806312a203c314610276578063144fa6d71461029c5780632417395c146102af575b5f80fd5b61026161025c3660046129ec565b6107d7565b005b610261610271366004612a9a565b610a79565b610289610284366004612acd565b610c4c565b6040519081526020015b60405180910390f35b6102616102aa366004612b19565b610d6a565b6102896102bd366004612b34565b5f908152600360208190526040909120015490565b6102fd6102e0366004612b34565b5f908152600360205260409020600101546001600160a01b031690565b6040516001600160a01b039091168152602001610293565b610289610323366004612b34565b5f9081526003602052604090206006015490565b610261610345366004612b4b565b610db6565b610261610358366004612c35565b611094565b6102616112e3565b60075461037c90600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610293565b61028961039f366004612b34565b5f9081526003602052604090206007015490565b6102616103c1366004612b34565b6113da565b6102896103d4366004612b34565b60026020525f908152604090205481565b6102896103f3366004612b34565b5f9081526003602052604090205490565b610289610412366004612ccf565b611455565b61044f610425366004612b34565b60046020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b039094168452602084019290925290820152606001610293565b610289610482366004612b19565b60056020525f908152604090205481565b6102896104a1366004612b19565b60066020525f908152604090205481565b6102896104c0366004612d5e565b61155c565b6104d86104d3366004612b34565b611657565b6040519015158152602001610293565b6102896104f6366004612b34565b5f9081526003602052604090206005015490565b610289610518366004612ddb565b6116bd565b61028961052b366004612b34565b5f9081526003602052604090206004015490565b6104d861054d366004612b34565b5f9081526003602052604090206002015460ff1690565b6105e5610572366004612b34565b600360208190525f91825260409091208054600182015460028301549383015460048401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff90931694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e085015261010084019190915261012083015261014082015261016001610293565b61037c61065a366004612b34565b5f90815260036020526040902060010154600160a01b900463ffffffff1690565b61037c610689366004612b34565b5f90815260036020526040902060010154600160c01b900463ffffffff1690565b6102896106b8366004612b34565b611786565b61037c6106cb366004612b34565b5f90815260036020526040902060010154600160e01b900463ffffffff1690565b6102616106fa366004612e14565b6117c4565b61028961070d366004612b34565b60016020525f908152604090205481565b61026161072c366004612e48565b611a3b565b61028961073f366004612ea2565b611ab4565b610261610752366004612f29565b6007805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6104d86107863660046129ec565b611bba565b610261610799366004612b34565b611d57565b6102616107ac366004612f42565b611e87565b6007546102fd906001600160a01b031681565b6102616107d2366004612f77565b6120dc565b846107e181611657565b6107fe57604051636030e5f560e11b815260040160405180910390fd5b84515f0361081f576040516312fdb46960e31b815260040160405180910390fd5b5f8681526004602081815260408084208054600190910154600390935290842060058101549301546001600160a01b0390911693919290825b8a518110156109db576108d2838c838151811061087757610877612fad565b60200260200101518a848151811061089157610891612fad565b60200260200101518c85815181106108ab576108ab612fad565b60200260200101518e86815181106108c5576108c5612fad565b602002602001015161222b565b6108ef576040516303a479f160e11b815260040160405180910390fd5b6108f98585612fd5565b93506109558c8386898e868151811061091457610914612fad565b60200260200101518e878151811061092e5761092e612fad565b60200260200101518e888151811061094857610948612fad565b6020026020010151612268565b809750819550505088818151811061096f5761096f612fad565b6020026020010151945060035f8d81526020019081526020015f206006015485146109ac5761099f602886612fe8565b6109a99086613007565b94505b8a81815181106109be576109be612fad565b6020026020010151925080806109d39061301a565b915050610858565b8215610a1d576109ec8c8786612330565b5f8c815260046020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610a58565b610a318c87610a2c8888612fd5565b612330565b5f8c815260046020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260036020526040909920600501989098555050505050505050565b5f828152600360205260408120600101548391600160c01b90910463ffffffff169003610ab95760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615610aeb576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590610b2457504263ffffffff168163ffffffff1611155b15610b425760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590610b7a57504263ffffffff168163ffffffff16115b15610b985760405163079994c560e31b815260040160405180910390fd5b600754600160a01b900463ffffffff1615610bc65760405163379dfc6360e01b815260040160405180910390fd5b610bcf846123b0565b5f8581526003602081905260409091200154610bec908590612fd5565b5f868152600360208190526040918290200182905551339187917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab6691610c3d91899190918252602082015260400190565b60405180910390a35050505050565b5f85610c5781611657565b610c7457604051636030e5f560e11b815260040160405180910390fd5b5f878152600360205260409020548614610ca157604051630763e45d60e41b815260040160405180910390fd5b5f878152600360205260409020600101546001600160a01b03868116911614610cdd5760405163f089a18560e01b815260040160405180910390fd5b5f8781526003602052604090206001015463ffffffff600160c01b90910481169085161115610d1f57604051633f61762b60e01b815260040160405180910390fd5b5f87815260036020526040902060060154831115610d5057604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600360205250604090206004015490565b6007546001600160a01b031615610d9457604051635c4e8df160e11b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b600754600160a01b900463ffffffff1615610de45760405163379dfc6360e01b815260040160405180910390fd5b5f805b8751821015611082575f888381518110610e0357610e03612fad565b602002602001015190505f888481518110610e2057610e20612fad565b602002602001015190505f816001600160401b03811115610e4357610e436128a6565b604051908082528060200260200182016040528015610e6c578160200160208202803683370190505b5090505f826001600160401b03811115610e8857610e886128a6565b604051908082528060200260200182016040528015610eb1578160200160208202803683370190505b5090505f836001600160401b03811115610ecd57610ecd6128a6565b604051908082528060200260200182016040528015610ef6578160200160208202803683370190505b5090505f846001600160401b03811115610f1257610f126128a6565b604051908082528060200260200182016040528015610f3b578160200160208202803683370190505b5090505f5b8581101561105b578c8881518110610f5a57610f5a612fad565b6020026020010151858281518110610f7457610f74612fad565b6020026020010181815250508b8881518110610f9257610f92612fad565b6020026020010151848281518110610fac57610fac612fad565b60200260200101906001600160a01b031690816001600160a01b0316815250508a8881518110610fde57610fde612fad565b6020026020010151838281518110610ff857610ff8612fad565b60200260200101818152505089888151811061101657611016612fad565b602002602001015182828151811061103057611030612fad565b6020908102919091010152876110458161301a565b98505080806110539061301a565b915050610f40565b61106887868686866107d7565b50505050505050818061107a9061301a565b925050610de7565b61108a6112e3565b5050505050505050565b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036110d45760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611106576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061113f57504263ffffffff168163ffffffff1611155b1561115d5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061119557504263ffffffff168163ffffffff16115b156111b35760405163079994c560e31b815260040160405180910390fd5b8684805f036111d557604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611224575f8381526003602052604090206007015482101561121f5760405163291784d560e01b815260040160405180910390fd5b61124f565b61122f816002613032565b82101561124f576040516328eecafb60e21b815260040160405180910390fd5b89888015611288575f828152600360205260409020600601548110156112885760405163f6631e6760e01b815260040160405180910390fd5b600754600160a01b900463ffffffff16156112b65760405163379dfc6360e01b815260040160405180910390fd5b6112bf896123b0565b6112cb8c8c338c6124a8565b6112d58c8c61256f565b505050505050505050505050565b600754600160a01b900463ffffffff16156113115760405163379dfc6360e01b815260040160405180910390fd5b335f818152600660205260408082208054929055600754905163a9059cbb60e01b815260048101939093526024830182905290916001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015611376573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139a9190613049565b6113a2575f80fd5b60405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b600754600160a01b900463ffffffff16156114085760405163379dfc6360e01b815260040160405180910390fd5b335f81815260056020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f61145f826123b0565b5f89815260016020526040812054900361148c5760405163bbbf712b60e01b815260040160405180910390fd5b5f89868a6040516020016114a29392919061308a565b6040516020818303038152906040528051906020012090505f8189898730338b6040516020016114d897969594939291906130c2565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8e8e8e8e8e8e426040516115379796959493929190613146565b60405180910390a461154e81838b8b8b8a8a6125d5565b9a9950505050505050505050565b5f8681526001602052604081205481036115895760405163bbbf712b60e01b815260040160405180910390fd5b5f87848860405160200161159f9392919061308a565b6040516020818303038152906040528051906020012090505f8187875f3033896040516020016115d597969594939291906130c2565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516116349796959493929190613146565b60405180910390a461164b81838989895f806125d5565b98975050505050505050565b6007545f90600160a01b900463ffffffff16158015906116a257506007545f83815260036020526040902060010154600160a01b90910463ffffffff908116600160e01b9092041610155b156116ae57505f919050565b6116b78261284b565b92915050565b6007545f90600160a01b900463ffffffff16156116ed5760405163379dfc6360e01b815260040160405180910390fd5b5f8054808252600160209081526040928390204390559151909161171391859101613195565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906117699087906131b0565b60405180910390a361177c816001612fd5565b5f5590505b919050565b5f8161179181611657565b6117ae57604051636030e5f560e11b815260040160405180910390fd5b50505f9081526003602052604090206004015490565b5f858152600360205260408120600101548691600160c01b90910463ffffffff1690036118045760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611836576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061186f57504263ffffffff168163ffffffff1611155b1561188d5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff1680158015906118c557504263ffffffff168163ffffffff16115b156118e35760405163079994c560e31b815260040160405180910390fd5b8784805f0361190557604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611954575f8381526003602052604090206007015482101561194f5760405163291784d560e01b815260040160405180910390fd5b61197f565b61195f816002613032565b82101561197f576040516328eecafb60e21b815260040160405180910390fd5b8a8980156119b8575f828152600360205260409020600601548110156119b85760405163f6631e6760e01b815260040160405180910390fd5b600754600160a01b900463ffffffff16156119e65760405163379dfc6360e01b815260040160405180910390fd5b6119ef896123b0565b6001600160a01b038a16611a1657604051630ca6549f60e11b815260040160405180910390fd5b611a228d8d8c8c6124a8565b611a2c8d8d61256f565b50505050505050505050505050565b5f8681526003602052604090206005810154600690910154611a629190859085908561222b565b611a7f576040516303a479f160e11b815260040160405180910390fd5b5f868152600360205260408120600401548614611a9c5784611a9e565b815b9050611aab8787836120dc565b50505050505050565b5f611abe826123b0565b5f888152600160205260408120549003611aeb5760405163bbbf712b60e01b815260040160405180910390fd5b5f888589604051602001611b019392919061308a565b6040516020818303038152906040528051906020012090505f8188885f30338a604051602001611b3797969594939291906130c2565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d42604051611b969796959493929190613146565b60405180910390a4611bad81838a8a8a5f8a6125d5565b9998505050505050505050565b5f858152600360205260408120600101548690600160c01b900463ffffffff168203611bf95760405163a42db76b60e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611c3257504263ffffffff168163ffffffff1611155b15611c505760405163372900d560e21b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611c8857504263ffffffff168163ffffffff16115b15611ca65760405163079994c560e31b815260040160405180910390fd5b5f898152600360205260409020600501548851885181141580611cca575080885114155b80611cd6575080875114155b15611ce5575f95505050611d4b565b5f5b81811015611d4357611d05838c838151811061087757610877612fad565b611d14575f9650505050611d4b565b8a8181518110611d2657611d26612fad565b602002602001015192508080611d3b9061301a565b915050611ce7565b506001955050505b50505095945050505050565b5f8181526003602052604090206001015481906001600160a01b03163314611d9257604051634361661f60e11b815260040160405180910390fd5b5f82815260036020526040902060020154829060ff16611dc55760405163f476ed1160e01b815260040160405180910390fd5b600754600160a01b900463ffffffff1615611df35760405163379dfc6360e01b815260040160405180910390fd5b5f83815260036020526040902060028101805460ff1916905560010154611e2790600160c01b900463ffffffff16426131c2565b5f84815260036020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526003602052604090206001015483906001600160a01b03163314611ec257604051634361661f60e11b815260040160405180910390fd5b5f848152600360205260408120600101548591600160c01b90910463ffffffff169003611f025760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611f34576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611f6d57504263ffffffff168163ffffffff1611155b15611f8b5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611fc357504263ffffffff168163ffffffff16115b15611fe15760405163079994c560e31b815260040160405180910390fd5b8685801561201a575f8281526003602052604090206006015481101561201a5760405163f6631e6760e01b815260040160405180910390fd5b600754600160a01b900463ffffffff16156120485760405163379dfc6360e01b815260040160405180910390fd5b5f89815260036020526040902060010154600160e01b900463ffffffff16612083576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260036020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526003602052604090206001015483906001600160a01b0316331461211757604051634361661f60e11b815260040160405180910390fd5b5f84815260036020526040902060020154849060ff1661214a5760405163f476ed1160e01b815260040160405180910390fd5b600754600160a01b900463ffffffff16156121785760405163379dfc6360e01b815260040160405180910390fd5b6001600160a01b03831661219f576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600360205260408120600201805460ff191690556121f2908690869086906124a8565b5f8581526003602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f6040516020016122459594939291906131e6565b604051602081830303815290604052805190602001208614905095945050505050565b5f80878303612321576001600160a01b0386166122de578495505f60035f8b81526020019081526020015f20600301541180156122a3575060015b156122d9576122c7898760035f8d81526020019081526020015f2060030154612330565b5f898152600360208190526040822001555b612321565b856001600160a01b0316856001600160a01b031614612321575f848810156123065787612308565b845b90506123198a88610a2c848c613007565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f90815260066020526040902054612353908290612fd5565b6001600160a01b0383165f818152600660205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6906123a39085815260200190565b60405180910390a3505050565b805f036123ba5750565b335f90815260066020526040902054801561240f578181106123f3576123e08282613007565b335f908152600660205260409020555050565b6123fd8183613007565b335f9081526006602052604081205591505b6007546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015612463573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124879190613049565b6124a457604051637e3e710960e11b815260040160405180910390fd5b5050565b5f8481526003602090815260408083206005015490516124d0928791869188918791016131e6565b6040516020818303038152906040528051906020012090505f821115612504575f8581526003602052604090206006018290555b5f8581526003602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a001610c3d565b5f828152600360205260409020600481018290556001015461259e90600160c01b900463ffffffff16426131c2565b5f92835260036020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600360205260409020600101548790600160c01b900463ffffffff1615612616576040516001627a443360e01b0319815260040160405180910390fd5b600754600160a01b900463ffffffff16156126445760405163379dfc6360e01b815260040160405180910390fd5b8463ffffffff165f0361266a5760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061269457604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b038716158015906126b65750336001600160a01b03881614155b1561273e576001600160a01b0387165f90815260056020526040902054808210156126f45760405163d72564c760e01b815260040160405180910390fd5b6126fe8183613007565b6001600160a01b0389165f90815260066020526040902054909250612724908290612fd5565b6001600160a01b0389165f90815260066020526040902055505b5f898152600360205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c1617929092171617905580156127ea575f89815260036020818152604092839020909101839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b8315612840575f89815260036020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906128379087815260200190565b60405180910390a25b505050505050505050565b5f8181526003602052604081206001810154600290910154600160e01b90910463ffffffff169060ff1615801561288757505f8163ffffffff16115b801561289f57504263ffffffff168163ffffffff1611155b9392505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156128e2576128e26128a6565b604052919050565b5f6001600160401b03821115612902576129026128a6565b5060051b60200190565b5f82601f83011261291b575f80fd5b8135602061293061292b836128ea565b6128ba565b82815260059290921b8401810191818101908684111561294e575f80fd5b8286015b848110156129695780358352918301918301612952565b509695505050505050565b6001600160a01b0381168114612988575f80fd5b50565b5f82601f83011261299a575f80fd5b813560206129aa61292b836128ea565b82815260059290921b840181019181810190868411156129c8575f80fd5b8286015b848110156129695780356129df81612974565b83529183019183016129cc565b5f805f805f60a08688031215612a00575f80fd5b8535945060208601356001600160401b0380821115612a1d575f80fd5b612a2989838a0161290c565b95506040880135915080821115612a3e575f80fd5b612a4a89838a0161298b565b94506060880135915080821115612a5f575f80fd5b612a6b89838a0161290c565b93506080880135915080821115612a80575f80fd5b50612a8d8882890161290c565b9150509295509295909350565b5f8060408385031215612aab575f80fd5b50508035926020909101359150565b803563ffffffff81168114611781575f80fd5b5f805f805f60a08688031215612ae1575f80fd5b85359450602086013593506040860135612afa81612974565b9250612b0860608701612aba565b949793965091946080013592915050565b5f60208284031215612b29575f80fd5b813561289f81612974565b5f60208284031215612b44575f80fd5b5035919050565b5f805f805f8060c08789031215612b60575f80fd5b86356001600160401b0380821115612b76575f80fd5b612b828a838b0161290c565b97506020890135915080821115612b97575f80fd5b612ba38a838b0161290c565b96506040890135915080821115612bb8575f80fd5b612bc48a838b0161290c565b95506060890135915080821115612bd9575f80fd5b612be58a838b0161298b565b94506080890135915080821115612bfa575f80fd5b612c068a838b0161290c565b935060a0890135915080821115612c1b575f80fd5b50612c2889828a0161290c565b9150509295509295509295565b5f805f8060808587031215612c48575f80fd5b5050823594602084013594506040840135936060013592509050565b5f82601f830112612c73575f80fd5b81356001600160401b03811115612c8c57612c8c6128a6565b612c9f601f8201601f19166020016128ba565b818152846020838601011115612cb3575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f80610100898b031215612ce7575f80fd5b8835975060208901356001600160401b03811115612d03575f80fd5b612d0f8b828c01612c64565b9750506040890135612d2081612974565b9550612d2e60608a01612aba565b9450612d3c60808a01612aba565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f8060c08789031215612d73575f80fd5b8635955060208701356001600160401b03811115612d8f575f80fd5b612d9b89828a01612c64565b9550506040870135612dac81612974565b9350612dba60608801612aba565b9250612dc860808801612aba565b915060a087013590509295509295509295565b5f60208284031215612deb575f80fd5b81356001600160401b03811115612e00575f80fd5b612e0c84828501612c64565b949350505050565b5f805f805f60a08688031215612e28575f80fd5b8535945060208601359350604086013592506060860135612b0881612974565b5f805f805f8060c08789031215612e5d575f80fd5b86359550602087013594506040870135612e7681612974565b9350606087013592506080870135915060a0870135612e9481612974565b809150509295509295509295565b5f805f805f805f60e0888a031215612eb8575f80fd5b8735965060208801356001600160401b03811115612ed4575f80fd5b612ee08a828b01612c64565b9650506040880135612ef181612974565b9450612eff60608901612aba565b9350612f0d60808901612aba565b925060a0880135915060c0880135905092959891949750929550565b5f60208284031215612f39575f80fd5b61289f82612aba565b5f805f60608486031215612f54575f80fd5b833592506020840135612f6681612974565b929592945050506040919091013590565b5f805f60608486031215612f89575f80fd5b83359250602084013591506040840135612fa281612974565b809150509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156116b7576116b7612fc1565b5f8261300257634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156116b7576116b7612fc1565b5f6001820161302b5761302b612fc1565b5060010190565b80820281158282048414176116b7576116b7612fc1565b5f60208284031215613059575f80fd5b8151801515811461289f575f80fd5b5f5b8381101561308257818101518382015260200161306a565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f82516130b3816024850160208701613068565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f8151808452613132816020860160208601613068565b601f01601f19169290920160200192915050565b87815260e060208201525f61315e60e083018961311b565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f82516131a6818460208701613068565b9190910192915050565b602081525f61289f602083018461311b565b63ffffffff8181168382160190808211156131df576131df612fc1565b5092915050565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea264697066735822122013e66cb09f5714d62a4b22b0e9577236e6bc72b0ad1202b9cb1040d54d8c61f364736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
1
+ 60806040525f805534801562000013575f80fd5b50620000386040518060600160405280603f81526020016200352b603f9139620000d3565b506200005d6040518060800160405280604f815260200162003607604f9139620000d3565b50620000826040518060800160405280605a8152602001620035ad605a9139620000d3565b50620000a76040518060800160405280605c8152602001620034cf605c9139620000d3565b50620000cc6040518060800160405280604381526020016200356a60439139620000d3565b506200023c565b6007545f90600160a01b900463ffffffff1615620001045760405163379dfc6360e01b815260040160405180910390fd5b5f805480825260016020908152604092839020439055915190916200012c91859101620001c5565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e49062000184908790620001e2565b60405180910390a36200019981600162000216565b5f5592915050565b5f5b83811015620001bd578181015183820152602001620001a3565b50505f910152565b5f8251620001d8818460208701620001a1565b9190910192915050565b602081525f825180602084015262000202816040850160208701620001a1565b601f01601f19169190910160400192915050565b808201808211156200023657634e487b7160e01b5f52601160045260245ffd5b92915050565b613285806200024a5f395ff3fe608060405234801561000f575f80fd5b506004361061024a575f3560e01c80637f8d429e11610140578063b8eaa980116100bf578063dbc7214411610084578063dbc7214414610744578063e12891d414610778578063ebbdd2b01461078b578063f6a94ecb1461079e578063fc0c546a146107b1578063fe92049d146107c4575f80fd5b8063b8eaa980146106ec578063bc525652146106ff578063d09cc57e146106aa578063d44e293c1461071e578063d4876b9f14610731575f80fd5b806395addb901161010557806395addb90146105645780639e63fa6a1461064c5780639f1025c61461067b578063a462fb7b146106aa578063acae8f4e146106bd575f80fd5b80637f8d429e146104c557806382ffa9f7146104e857806383bf46091461050a5780638d552d461461051d578063924532fb1461053f575f80fd5b8063420dfdd9116101cc57806352debac31161019157806352debac314610404578063590158a7146104175780636fa427421461047457806370a0823114610493578063762c38fd146104b2575f80fd5b8063420dfdd914610365578063484c0714146103915780634df6ca2a146103b35780634e60f883146103c657806351577ea9146103e5575f80fd5b80632518904c116102125780632518904c146102d257806326d6c97b1461031557806328828b1e146103375780632f998a6f1461034a5780633ccfd60b1461035d575f80fd5b80631101a0fd1461024e578063128b7a471461026357806312a203c314610276578063144fa6d71461029c5780632417395c146102af575b5f80fd5b61026161025c366004612a1a565b6107d7565b005b610261610271366004612ac8565b610aa7565b610289610284366004612afb565b610c7a565b6040519081526020015b60405180910390f35b6102616102aa366004612b47565b610d98565b6102896102bd366004612b62565b5f908152600360208190526040909120015490565b6102fd6102e0366004612b62565b5f908152600360205260409020600101546001600160a01b031690565b6040516001600160a01b039091168152602001610293565b610289610323366004612b62565b5f9081526003602052604090206006015490565b610261610345366004612b79565b610de4565b610261610358366004612c63565b6110c2565b610261611311565b60075461037c90600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610293565b61028961039f366004612b62565b5f9081526003602052604090206007015490565b6102616103c1366004612b62565b611408565b6102896103d4366004612b62565b60026020525f908152604090205481565b6102896103f3366004612b62565b5f9081526003602052604090205490565b610289610412366004612cfd565b611483565b61044f610425366004612b62565b60046020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b039094168452602084019290925290820152606001610293565b610289610482366004612b47565b60056020525f908152604090205481565b6102896104a1366004612b47565b60066020525f908152604090205481565b6102896104c0366004612d8c565b61158a565b6104d86104d3366004612b62565b611685565b6040519015158152602001610293565b6102896104f6366004612b62565b5f9081526003602052604090206005015490565b610289610518366004612e09565b6116eb565b61028961052b366004612b62565b5f9081526003602052604090206004015490565b6104d861054d366004612b62565b5f9081526003602052604090206002015460ff1690565b6105e5610572366004612b62565b600360208190525f91825260409091208054600182015460028301549383015460048401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff90931694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e085015261010084019190915261012083015261014082015261016001610293565b61037c61065a366004612b62565b5f90815260036020526040902060010154600160a01b900463ffffffff1690565b61037c610689366004612b62565b5f90815260036020526040902060010154600160c01b900463ffffffff1690565b6102896106b8366004612b62565b6117b4565b61037c6106cb366004612b62565b5f90815260036020526040902060010154600160e01b900463ffffffff1690565b6102616106fa366004612e42565b6117f2565b61028961070d366004612b62565b60016020525f908152604090205481565b61026161072c366004612e76565b611a69565b61028961073f366004612ed0565b611ae2565b610261610752366004612f57565b6007805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6104d8610786366004612a1a565b611be8565b610261610799366004612b62565b611d85565b6102616107ac366004612f70565b611eb5565b6007546102fd906001600160a01b031681565b6102616107d2366004612fa5565b61210a565b846107e181611685565b6107fe57604051636030e5f560e11b815260040160405180910390fd5b600754600160a01b900463ffffffff161561082c5760405163379dfc6360e01b815260040160405180910390fd5b84515f0361084d576040516312fdb46960e31b815260040160405180910390fd5b5f8681526004602081815260408084208054600190910154600390935290842060058101549301546001600160a01b0390911693919290825b8a51811015610a0957610900838c83815181106108a5576108a5612fdb565b60200260200101518a84815181106108bf576108bf612fdb565b60200260200101518c85815181106108d9576108d9612fdb565b60200260200101518e86815181106108f3576108f3612fdb565b6020026020010151612259565b61091d576040516303a479f160e11b815260040160405180910390fd5b6109278585613003565b93506109838c8386898e868151811061094257610942612fdb565b60200260200101518e878151811061095c5761095c612fdb565b60200260200101518e888151811061097657610976612fdb565b6020026020010151612296565b809750819550505088818151811061099d5761099d612fdb565b6020026020010151945060035f8d81526020019081526020015f206006015485146109da576109cd602886613016565b6109d79086613035565b94505b8a81815181106109ec576109ec612fdb565b602002602001015192508080610a0190613048565b915050610886565b8215610a4b57610a1a8c878661235e565b5f8c815260046020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610a86565b610a5f8c87610a5a8888613003565b61235e565b5f8c815260046020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260036020526040909920600501989098555050505050505050565b5f828152600360205260408120600101548391600160c01b90910463ffffffff169003610ae75760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615610b19576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590610b5257504263ffffffff168163ffffffff1611155b15610b705760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590610ba857504263ffffffff168163ffffffff16115b15610bc65760405163079994c560e31b815260040160405180910390fd5b600754600160a01b900463ffffffff1615610bf45760405163379dfc6360e01b815260040160405180910390fd5b610bfd846123de565b5f8581526003602081905260409091200154610c1a908590613003565b5f868152600360208190526040918290200182905551339187917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab6691610c6b91899190918252602082015260400190565b60405180910390a35050505050565b5f85610c8581611685565b610ca257604051636030e5f560e11b815260040160405180910390fd5b5f878152600360205260409020548614610ccf57604051630763e45d60e41b815260040160405180910390fd5b5f878152600360205260409020600101546001600160a01b03868116911614610d0b5760405163f089a18560e01b815260040160405180910390fd5b5f8781526003602052604090206001015463ffffffff600160c01b90910481169085161115610d4d57604051633f61762b60e01b815260040160405180910390fd5b5f87815260036020526040902060060154831115610d7e57604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600360205250604090206004015490565b6007546001600160a01b031615610dc257604051635c4e8df160e11b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b600754600160a01b900463ffffffff1615610e125760405163379dfc6360e01b815260040160405180910390fd5b5f805b87518210156110b0575f888381518110610e3157610e31612fdb565b602002602001015190505f888481518110610e4e57610e4e612fdb565b602002602001015190505f816001600160401b03811115610e7157610e716128d4565b604051908082528060200260200182016040528015610e9a578160200160208202803683370190505b5090505f826001600160401b03811115610eb657610eb66128d4565b604051908082528060200260200182016040528015610edf578160200160208202803683370190505b5090505f836001600160401b03811115610efb57610efb6128d4565b604051908082528060200260200182016040528015610f24578160200160208202803683370190505b5090505f846001600160401b03811115610f4057610f406128d4565b604051908082528060200260200182016040528015610f69578160200160208202803683370190505b5090505f5b85811015611089578c8881518110610f8857610f88612fdb565b6020026020010151858281518110610fa257610fa2612fdb565b6020026020010181815250508b8881518110610fc057610fc0612fdb565b6020026020010151848281518110610fda57610fda612fdb565b60200260200101906001600160a01b031690816001600160a01b0316815250508a888151811061100c5761100c612fdb565b602002602001015183828151811061102657611026612fdb565b60200260200101818152505089888151811061104457611044612fdb565b602002602001015182828151811061105e5761105e612fdb565b60209081029190910101528761107381613048565b985050808061108190613048565b915050610f6e565b61109687868686866107d7565b5050505050505081806110a890613048565b925050610e15565b6110b8611311565b5050505050505050565b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036111025760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611134576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061116d57504263ffffffff168163ffffffff1611155b1561118b5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff1680158015906111c357504263ffffffff168163ffffffff16115b156111e15760405163079994c560e31b815260040160405180910390fd5b8684805f0361120357604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611252575f8381526003602052604090206007015482101561124d5760405163291784d560e01b815260040160405180910390fd5b61127d565b61125d816002613060565b82101561127d576040516328eecafb60e21b815260040160405180910390fd5b898880156112b6575f828152600360205260409020600601548110156112b65760405163f6631e6760e01b815260040160405180910390fd5b600754600160a01b900463ffffffff16156112e45760405163379dfc6360e01b815260040160405180910390fd5b6112ed896123de565b6112f98c8c338c6124d6565b6113038c8c61259d565b505050505050505050505050565b600754600160a01b900463ffffffff161561133f5760405163379dfc6360e01b815260040160405180910390fd5b335f818152600660205260408082208054929055600754905163a9059cbb60e01b815260048101939093526024830182905290916001600160a01b039091169063a9059cbb906044016020604051808303815f875af11580156113a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113c89190613077565b6113d0575f80fd5b60405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b600754600160a01b900463ffffffff16156114365760405163379dfc6360e01b815260040160405180910390fd5b335f81815260056020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f61148d826123de565b5f8981526001602052604081205490036114ba5760405163bbbf712b60e01b815260040160405180910390fd5b5f89868a6040516020016114d0939291906130b8565b6040516020818303038152906040528051906020012090505f8189898730338b60405160200161150697969594939291906130f0565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8e8e8e8e8e8e426040516115659796959493929190613174565b60405180910390a461157c81838b8b8b8a8a612603565b9a9950505050505050505050565b5f8681526001602052604081205481036115b75760405163bbbf712b60e01b815260040160405180910390fd5b5f8784886040516020016115cd939291906130b8565b6040516020818303038152906040528051906020012090505f8187875f30338960405160200161160397969594939291906130f0565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516116629796959493929190613174565b60405180910390a461167981838989895f80612603565b98975050505050505050565b6007545f90600160a01b900463ffffffff16158015906116d057506007545f83815260036020526040902060010154600160a01b90910463ffffffff908116600160e01b9092041610155b156116dc57505f919050565b6116e582612879565b92915050565b6007545f90600160a01b900463ffffffff161561171b5760405163379dfc6360e01b815260040160405180910390fd5b5f80548082526001602090815260409283902043905591519091611741918591016131c3565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906117979087906131de565b60405180910390a36117aa816001613003565b5f5590505b919050565b5f816117bf81611685565b6117dc57604051636030e5f560e11b815260040160405180910390fd5b50505f9081526003602052604090206004015490565b5f858152600360205260408120600101548691600160c01b90910463ffffffff1690036118325760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611864576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061189d57504263ffffffff168163ffffffff1611155b156118bb5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff1680158015906118f357504263ffffffff168163ffffffff16115b156119115760405163079994c560e31b815260040160405180910390fd5b8784805f0361193357604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611982575f8381526003602052604090206007015482101561197d5760405163291784d560e01b815260040160405180910390fd5b6119ad565b61198d816002613060565b8210156119ad576040516328eecafb60e21b815260040160405180910390fd5b8a8980156119e6575f828152600360205260409020600601548110156119e65760405163f6631e6760e01b815260040160405180910390fd5b600754600160a01b900463ffffffff1615611a145760405163379dfc6360e01b815260040160405180910390fd5b611a1d896123de565b6001600160a01b038a16611a4457604051630ca6549f60e11b815260040160405180910390fd5b611a508d8d8c8c6124d6565b611a5a8d8d61259d565b50505050505050505050505050565b5f8681526003602052604090206005810154600690910154611a9091908590859085612259565b611aad576040516303a479f160e11b815260040160405180910390fd5b5f868152600360205260408120600401548614611aca5784611acc565b815b9050611ad987878361210a565b50505050505050565b5f611aec826123de565b5f888152600160205260408120549003611b195760405163bbbf712b60e01b815260040160405180910390fd5b5f888589604051602001611b2f939291906130b8565b6040516020818303038152906040528051906020012090505f8188885f30338a604051602001611b6597969594939291906130f0565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d42604051611bc49796959493929190613174565b60405180910390a4611bdb81838a8a8a5f8a612603565b9998505050505050505050565b5f858152600360205260408120600101548690600160c01b900463ffffffff168203611c275760405163a42db76b60e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611c6057504263ffffffff168163ffffffff1611155b15611c7e5760405163372900d560e21b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611cb657504263ffffffff168163ffffffff16115b15611cd45760405163079994c560e31b815260040160405180910390fd5b5f898152600360205260409020600501548851885181141580611cf8575080885114155b80611d04575080875114155b15611d13575f95505050611d79565b5f5b81811015611d7157611d33838c83815181106108a5576108a5612fdb565b611d42575f9650505050611d79565b8a8181518110611d5457611d54612fdb565b602002602001015192508080611d6990613048565b915050611d15565b506001955050505b50505095945050505050565b5f8181526003602052604090206001015481906001600160a01b03163314611dc057604051634361661f60e11b815260040160405180910390fd5b5f82815260036020526040902060020154829060ff16611df35760405163f476ed1160e01b815260040160405180910390fd5b600754600160a01b900463ffffffff1615611e215760405163379dfc6360e01b815260040160405180910390fd5b5f83815260036020526040902060028101805460ff1916905560010154611e5590600160c01b900463ffffffff16426131f0565b5f84815260036020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526003602052604090206001015483906001600160a01b03163314611ef057604051634361661f60e11b815260040160405180910390fd5b5f848152600360205260408120600101548591600160c01b90910463ffffffff169003611f305760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611f62576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611f9b57504263ffffffff168163ffffffff1611155b15611fb95760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611ff157504263ffffffff168163ffffffff16115b1561200f5760405163079994c560e31b815260040160405180910390fd5b86858015612048575f828152600360205260409020600601548110156120485760405163f6631e6760e01b815260040160405180910390fd5b600754600160a01b900463ffffffff16156120765760405163379dfc6360e01b815260040160405180910390fd5b5f89815260036020526040902060010154600160e01b900463ffffffff166120b1576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260036020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526003602052604090206001015483906001600160a01b0316331461214557604051634361661f60e11b815260040160405180910390fd5b5f84815260036020526040902060020154849060ff166121785760405163f476ed1160e01b815260040160405180910390fd5b600754600160a01b900463ffffffff16156121a65760405163379dfc6360e01b815260040160405180910390fd5b6001600160a01b0383166121cd576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600360205260408120600201805460ff19169055612220908690869086906124d6565b5f8581526003602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f604051602001612273959493929190613214565b604051602081830303815290604052805190602001208614905095945050505050565b5f8087830361234f576001600160a01b03861661230c578495505f60035f8b81526020019081526020015f20600301541180156122d1575060015b15612307576122f5898760035f8d81526020019081526020015f206003015461235e565b5f898152600360208190526040822001555b61234f565b856001600160a01b0316856001600160a01b03161461234f575f848810156123345787612336565b845b90506123478a88610a5a848c613035565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f90815260066020526040902054612381908290613003565b6001600160a01b0383165f818152600660205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6906123d19085815260200190565b60405180910390a3505050565b805f036123e85750565b335f90815260066020526040902054801561243d578181106124215761240e8282613035565b335f908152600660205260409020555050565b61242b8183613035565b335f9081526006602052604081205591505b6007546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015612491573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124b59190613077565b6124d257604051637e3e710960e11b815260040160405180910390fd5b5050565b5f8481526003602090815260408083206005015490516124fe92879186918891879101613214565b6040516020818303038152906040528051906020012090505f821115612532575f8581526003602052604090206006018290555b5f8581526003602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a001610c6b565b5f82815260036020526040902060048101829055600101546125cc90600160c01b900463ffffffff16426131f0565b5f92835260036020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600360205260409020600101548790600160c01b900463ffffffff1615612644576040516001627a443360e01b0319815260040160405180910390fd5b600754600160a01b900463ffffffff16156126725760405163379dfc6360e01b815260040160405180910390fd5b8463ffffffff165f036126985760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff16106126c257604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b038716158015906126e45750336001600160a01b03881614155b1561276c576001600160a01b0387165f90815260056020526040902054808210156127225760405163d72564c760e01b815260040160405180910390fd5b61272c8183613035565b6001600160a01b0389165f90815260066020526040902054909250612752908290613003565b6001600160a01b0389165f90815260066020526040902055505b5f898152600360205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c161792909217161790558015612818575f89815260036020818152604092839020909101839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b831561286e575f89815260036020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906128659087815260200190565b60405180910390a25b505050505050505050565b5f8181526003602052604081206001810154600290910154600160e01b90910463ffffffff169060ff161580156128b557505f8163ffffffff16115b80156128cd57504263ffffffff168163ffffffff1611155b9392505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715612910576129106128d4565b604052919050565b5f6001600160401b03821115612930576129306128d4565b5060051b60200190565b5f82601f830112612949575f80fd5b8135602061295e61295983612918565b6128e8565b82815260059290921b8401810191818101908684111561297c575f80fd5b8286015b848110156129975780358352918301918301612980565b509695505050505050565b6001600160a01b03811681146129b6575f80fd5b50565b5f82601f8301126129c8575f80fd5b813560206129d861295983612918565b82815260059290921b840181019181810190868411156129f6575f80fd5b8286015b84811015612997578035612a0d816129a2565b83529183019183016129fa565b5f805f805f60a08688031215612a2e575f80fd5b8535945060208601356001600160401b0380821115612a4b575f80fd5b612a5789838a0161293a565b95506040880135915080821115612a6c575f80fd5b612a7889838a016129b9565b94506060880135915080821115612a8d575f80fd5b612a9989838a0161293a565b93506080880135915080821115612aae575f80fd5b50612abb8882890161293a565b9150509295509295909350565b5f8060408385031215612ad9575f80fd5b50508035926020909101359150565b803563ffffffff811681146117af575f80fd5b5f805f805f60a08688031215612b0f575f80fd5b85359450602086013593506040860135612b28816129a2565b9250612b3660608701612ae8565b949793965091946080013592915050565b5f60208284031215612b57575f80fd5b81356128cd816129a2565b5f60208284031215612b72575f80fd5b5035919050565b5f805f805f8060c08789031215612b8e575f80fd5b86356001600160401b0380821115612ba4575f80fd5b612bb08a838b0161293a565b97506020890135915080821115612bc5575f80fd5b612bd18a838b0161293a565b96506040890135915080821115612be6575f80fd5b612bf28a838b0161293a565b95506060890135915080821115612c07575f80fd5b612c138a838b016129b9565b94506080890135915080821115612c28575f80fd5b612c348a838b0161293a565b935060a0890135915080821115612c49575f80fd5b50612c5689828a0161293a565b9150509295509295509295565b5f805f8060808587031215612c76575f80fd5b5050823594602084013594506040840135936060013592509050565b5f82601f830112612ca1575f80fd5b81356001600160401b03811115612cba57612cba6128d4565b612ccd601f8201601f19166020016128e8565b818152846020838601011115612ce1575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f80610100898b031215612d15575f80fd5b8835975060208901356001600160401b03811115612d31575f80fd5b612d3d8b828c01612c92565b9750506040890135612d4e816129a2565b9550612d5c60608a01612ae8565b9450612d6a60808a01612ae8565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f8060c08789031215612da1575f80fd5b8635955060208701356001600160401b03811115612dbd575f80fd5b612dc989828a01612c92565b9550506040870135612dda816129a2565b9350612de860608801612ae8565b9250612df660808801612ae8565b915060a087013590509295509295509295565b5f60208284031215612e19575f80fd5b81356001600160401b03811115612e2e575f80fd5b612e3a84828501612c92565b949350505050565b5f805f805f60a08688031215612e56575f80fd5b8535945060208601359350604086013592506060860135612b36816129a2565b5f805f805f8060c08789031215612e8b575f80fd5b86359550602087013594506040870135612ea4816129a2565b9350606087013592506080870135915060a0870135612ec2816129a2565b809150509295509295509295565b5f805f805f805f60e0888a031215612ee6575f80fd5b8735965060208801356001600160401b03811115612f02575f80fd5b612f0e8a828b01612c92565b9650506040880135612f1f816129a2565b9450612f2d60608901612ae8565b9350612f3b60808901612ae8565b925060a0880135915060c0880135905092959891949750929550565b5f60208284031215612f67575f80fd5b6128cd82612ae8565b5f805f60608486031215612f82575f80fd5b833592506020840135612f94816129a2565b929592945050506040919091013590565b5f805f60608486031215612fb7575f80fd5b83359250602084013591506040840135612fd0816129a2565b809150509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156116e5576116e5612fef565b5f8261303057634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156116e5576116e5612fef565b5f6001820161305957613059612fef565b5060010190565b80820281158282048414176116e5576116e5612fef565b5f60208284031215613087575f80fd5b815180151581146128cd575f80fd5b5f5b838110156130b0578181015183820152602001613098565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f82516130e1816024850160208701613096565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f8151808452613160816020860160208601613096565b601f01601f19169290920160200192915050565b87815260e060208201525f61318c60e0830189613149565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f82516131d4818460208701613096565b9190910192915050565b602081525f6128cd6020830184613149565b63ffffffff81811683821601908082111561320d5761320d612fef565b5092915050565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea26469706673582212204c870f5a165d1c4b2d4a89b8731c03b8fb0f8090ac34cb51736a4d46c6e4232a64736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
@@ -1 +1 @@
1
- 60806040525f805534801562000013575f80fd5b50620000386040518060600160405280603f8152602001620033e0603f9139620000d3565b506200005d6040518060800160405280604f8152602001620034bc604f9139620000d3565b50620000826040518060800160405280605a815260200162003462605a9139620000d3565b50620000a76040518060800160405280605c815260200162003384605c9139620000d3565b50620000cc6040518060800160405280604381526020016200341f60439139620000d3565b5062000207565b5f805480825260016020908152604080842043905551620000f79185910162000190565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906200014f908790620001ad565b60405180910390a362000164816001620001e1565b5f5592915050565b5f5b83811015620001885781810151838201526020016200016e565b50505f910152565b5f8251620001a38184602087016200016c565b9190910192915050565b602081525f8251806020840152620001cd8160408501602087016200016c565b601f01601f19169190910160400192915050565b808201808211156200020157634e487b7160e01b5f52601160045260245ffd5b92915050565b61316f80620002155f395ff3fe60806040526004361061023e575f3560e01c806377f325df11610134578063ab5a4e35116100b3578063d44e293c11610078578063d44e293c14610890578063e12891d4146108af578063e83bfb58146108ce578063ebbdd2b0146108fc578063f6a94ecb1461091b578063fe92049d1461093a575f80fd5b8063ab5a4e35146107e0578063acae8f4e146107ff578063bc5256521461083a578063c081d8a314610865578063d09cc57e146107c1575f80fd5b8063924532fb116100f9578063924532fb1461061157806395addb90146106425780639e63fa6a146107365780639f1025c614610786578063a462fb7b146107c1575f80fd5b806377f325df146105645780637f8d429e1461057757806382ffa9f71461059657806383bf4609146105c45780638d552d46146105e3575f80fd5b8063484b93c4116101c0578063590158a711610185578063590158a71461047f57806359245ff3146104e85780636fa42742146104fb57806370a0823114610526578063762c38fd14610551575f80fd5b8063484b93c4146103c9578063484c0714146103dc5780634df6ca2a1461040a5780634e60f8831461042957806351577ea914610454575f80fd5b80632417395c116102065780632417395c146102ea5780632518904c1461031957806326d6c97b1461036857806328828b1e146103965780633ccfd60b146103b5575f80fd5b806306c3b67a146102425780631101a0fd14610276578063111ec138146102975780631126a9dc146102aa57806312a203c3146102cb575b5f80fd5b34801561024d575f80fd5b5061026161025c366004612835565b610959565b60405190151581526020015b60405180910390f35b348015610281575f80fd5b5061029561029036600461298f565b61096d565b005b6102956102a5366004612a3d565b610c0f565b6102bd6102b8366004612af7565b610e4e565b60405190815260200161026d565b3480156102d6575f80fd5b506102bd6102e5366004612b84565b6110f0565b3480156102f5575f80fd5b506102bd610304366004612835565b5f908152600360208190526040909120015490565b348015610324575f80fd5b50610350610333366004612835565b5f908152600360205260409020600101546001600160a01b031690565b6040516001600160a01b03909116815260200161026d565b348015610373575f80fd5b506102bd610382366004612835565b5f9081526003602052604090206006015490565b3480156103a1575f80fd5b506102956103b0366004612bce565b61120e565b3480156103c0575f80fd5b506102956114be565b6102bd6103d7366004612cb8565b611535565b3480156103e7575f80fd5b506102bd6103f6366004612835565b5f9081526003602052604090206007015490565b348015610415575f80fd5b50610295610424366004612835565b611631565b348015610434575f80fd5b506102bd610443366004612835565b60026020525f908152604090205481565b34801561045f575f80fd5b506102bd61046e366004612835565b5f9081526003602052604090205490565b34801561048a575f80fd5b506104c3610499366004612835565b60046020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b03909416845260208401929092529082015260600161026d565b6102956104f6366004612835565b61167e565b348015610506575f80fd5b506102bd610515366004612d3d565b60056020525f908152604090205481565b348015610531575f80fd5b506102bd610540366004612d3d565b60066020525f908152604090205481565b6102bd61055f366004612d56565b611819565b610295610572366004612dd1565b611914565b348015610582575f80fd5b50610261610591366004612835565b611b2b565b3480156105a1575f80fd5b506102bd6105b0366004612835565b5f9081526003602052604090206005015490565b3480156105cf575f80fd5b506102bd6105de366004612dfa565b611b86565b3480156105ee575f80fd5b506102bd6105fd366004612835565b5f9081526003602052604090206004015490565b34801561061c575f80fd5b5061026161062b366004612835565b5f9081526003602052604090206002015460ff1690565b34801561064d575f80fd5b506106cf61065c366004612835565b600360208190525f91825260409091208054600182015460028301549383015460048401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff90931694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e08501526101008401919091526101208301526101408201526101600161026d565b348015610741575f80fd5b50610771610750366004612835565b5f90815260036020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff909116815260200161026d565b348015610791575f80fd5b506107716107a0366004612835565b5f90815260036020526040902060010154600160c01b900463ffffffff1690565b3480156107cc575f80fd5b506102bd6107db366004612835565b611c1b565b3480156107eb575f80fd5b506102bd6107fa366004612835565b611c59565b34801561080a575f80fd5b50610771610819366004612835565b5f90815260036020526040902060010154600160e01b900463ffffffff1690565b348015610845575f80fd5b506102bd610854366004612835565b60016020525f908152604090205481565b348015610870575f80fd5b506102bd61087f366004612835565b60076020525f908152604090205481565b34801561089b575f80fd5b506102956108aa366004612e33565b611ccd565b3480156108ba575f80fd5b506102616108c936600461298f565b611d46565b3480156108d9575f80fd5b506102616108e8366004612835565b60086020525f908152604090205460ff1681565b348015610907575f80fd5b50610295610916366004612835565b611ee3565b348015610926575f80fd5b50610295610935366004612e87565b611fe5565b348015610945575f80fd5b50610295610954366004612eb9565b61220c565b5f60011961096683611c1b565b1492915050565b8461097781611b2b565b61099457604051636030e5f560e11b815260040160405180910390fd5b84515f036109b5576040516312fdb46960e31b815260040160405180910390fd5b5f8681526004602081815260408084208054600190910154600390935290842060058101549301546001600160a01b0390911693919290825b8a51811015610b7157610a68838c8381518110610a0d57610a0d612eeb565b60200260200101518a8481518110610a2757610a27612eeb565b60200260200101518c8581518110610a4157610a41612eeb565b60200260200101518e8681518110610a5b57610a5b612eeb565b602002602001015161232d565b610a85576040516303a479f160e11b815260040160405180910390fd5b610a8f8585612f13565b9350610aeb8c8386898e8681518110610aaa57610aaa612eeb565b60200260200101518e8781518110610ac457610ac4612eeb565b60200260200101518e8881518110610ade57610ade612eeb565b602002602001015161236a565b8097508195505050888181518110610b0557610b05612eeb565b6020026020010151945060035f8d81526020019081526020015f20600601548514610b4257610b35602886612f26565b610b3f9086612f45565b94505b8a8181518110610b5457610b54612eeb565b602002602001015192508080610b6990612f58565b9150506109ee565b8215610bb357610b828c8786612436565b5f8c815260046020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610bee565b610bc78c87610bc28888612f13565b612436565b5f8c815260046020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260036020526040909920600501989098555050505050505050565b5f848152600360205260408120600101548591600160c01b90910463ffffffff169003610c4f5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615610c81576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590610cba57504263ffffffff168163ffffffff1611155b15610cd85760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590610d1057504263ffffffff168163ffffffff16115b15610d2e5760405163079994c560e31b815260040160405180910390fd5b8634805f03610d5057604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003610d9f575f83815260036020526040902060070154821015610d9a5760405163291784d560e01b815260040160405180910390fd5b610dca565b610daa816002612f70565b821015610dca576040516328eecafb60e21b815260040160405180910390fd5b89888015610e03575f82815260036020526040902060060154811015610e035760405163f6631e6760e01b815260040160405180910390fd5b6001600160a01b038916610e2a57604051630ca6549f60e11b815260040160405180910390fd5b610e368c8c8b346124b6565b610e408c8c612587565b505050505050505050505050565b5f610e5882610959565b610e7557604051631f45e42760e11b815260040160405180910390fd5b5f89868a604051602001610e8b93929190612fa9565b60408051601f1981840301815291815281516020928301205f86815260039093529120549091508114610ed1576040516349923ed160e11b815260040160405180910390fd5b5f838152600360205260409020600101546001600160a01b03898116911614610f0d5760405163611876b160e01b815260040160405180910390fd5b5f8381526003602052604090206001015463ffffffff888116600160c01b9092041614610f4d57604051635f4c19f760e01b815260040160405180910390fd5b5f8381526003602052604090206001015463ffffffff878116600160a01b9092041614610f8d57604051630a5ab81d60e41b815260040160405180910390fd5b5f838152600360205260409020600701548414610fbd57604051633246892f60e01b815260040160405180910390fd5b5f8381526008602052604090205460ff1615610fec5760405163331c2c3f60e11b815260040160405180910390fd5b5f8381526007602052604090205483811561103f5761100a82610959565b61102757604051634ec30c8560e01b815260040160405180910390fd5b505f818152600860205260409020805460ff19169055805b5f61104f8d8d8d8d8d8d8d611535565b5f87815260076020908152604080832084905583835260088252808320805460ff191660011790556003918290528083208201548684529220015491925061109691612f13565b5f828152600360208190526040808320820193909355848252828220018190559051879183917f32e7d5617fb1be6bd0e7c3974d438d4514c4cf349e9330691d8abf6f6fd431219190a39c9b505050505050505050505050565b5f856110fb81611b2b565b61111857604051636030e5f560e11b815260040160405180910390fd5b5f87815260036020526040902054861461114557604051630763e45d60e41b815260040160405180910390fd5b5f878152600360205260409020600101546001600160a01b038681169116146111815760405163f089a18560e01b815260040160405180910390fd5b5f8781526003602052604090206001015463ffffffff600160c01b909104811690851611156111c357604051633f61762b60e01b815260040160405180910390fd5b5f878152600360205260409020600601548311156111f457604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600360205250604090206004015490565b5f805b87518210156114ac575f88838151811061122d5761122d612eeb565b602002602001015190505f88848151811061124a5761124a612eeb565b602002602001015190505f816001600160401b0381111561126d5761126d61284c565b604051908082528060200260200182016040528015611296578160200160208202803683370190505b5090505f826001600160401b038111156112b2576112b261284c565b6040519080825280602002602001820160405280156112db578160200160208202803683370190505b5090505f836001600160401b038111156112f7576112f761284c565b604051908082528060200260200182016040528015611320578160200160208202803683370190505b5090505f846001600160401b0381111561133c5761133c61284c565b604051908082528060200260200182016040528015611365578160200160208202803683370190505b5090505f5b85811015611485578c888151811061138457611384612eeb565b602002602001015185828151811061139e5761139e612eeb565b6020026020010181815250508b88815181106113bc576113bc612eeb565b60200260200101518482815181106113d6576113d6612eeb565b60200260200101906001600160a01b031690816001600160a01b0316815250508a888151811061140857611408612eeb565b602002602001015183828151811061142257611422612eeb565b60200260200101818152505089888151811061144057611440612eeb565b602002602001015182828151811061145a5761145a612eeb565b60209081029190910101528761146f81612f58565b985050808061147d90612f58565b91505061136a565b611492878686868661096d565b5050505050505081806114a490612f58565b925050611211565b6114b46114be565b5050505050505050565b335f81815260066020526040808220805490839055905190929183156108fc02918491818181858888f193505050501580156114fc573d5f803e3d5ffd5b5060405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b5f8781526001602052604081205481036115625760405163bbbf712b60e01b815260040160405180910390fd5b5f88858960405160200161157893929190612fa9565b6040516020818303038152906040528051906020012090505f8188888630338a6040516020016115ae9796959493929190612fe1565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d4260405161160d9796959493929190613065565b60405180910390a461162481838a8a8a89346125ed565b9998505050505050505050565b335f81815260056020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f818152600360205260408120600101548291600160c01b90910463ffffffff1690036116be5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff16156116f0576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061172957504263ffffffff168163ffffffff1611155b156117475760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061177f57504263ffffffff168163ffffffff16115b1561179d5760405163079994c560e31b815260040160405180910390fd5b5f84815260036020819052604090912001546117ba903490612f13565b5f858152600360208190526040918290200182905551339186917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab669161180b91349190918252602082015260400190565b60405180910390a350505050565b5f8681526001602052604081205481036118465760405163bbbf712b60e01b815260040160405180910390fd5b5f87848860405160200161185c93929190612fa9565b6040516020818303038152906040528051906020012090505f8187875f3033896040516020016118929796959493929190612fe1565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516118f19796959493929190613065565b60405180910390a461190881838989895f346125ed565b98975050505050505050565b5f838152600360205260408120600101548491600160c01b90910463ffffffff1690036119545760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611986576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff1680158015906119bf57504263ffffffff168163ffffffff1611155b156119dd5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611a1557504263ffffffff168163ffffffff16115b15611a335760405163079994c560e31b815260040160405180910390fd5b8534805f03611a5557604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611aa4575f83815260036020526040902060070154821015611a9f5760405163291784d560e01b815260040160405180910390fd5b611acf565b611aaf816002612f70565b821015611acf576040516328eecafb60e21b815260040160405180910390fd5b88878015611b08575f82815260036020526040902060060154811015611b085760405163f6631e6760e01b815260040160405180910390fd5b611b148b8b33346124b6565b611b1e8b8b612587565b5050505050505050505050565b5f8181526003602052604081206001810154600290910154600160e01b90910463ffffffff169060ff16158015611b6757505f8163ffffffff16115b8015611b7f57504263ffffffff168163ffffffff1611155b9392505050565b5f805480825260016020908152604080842043905551611ba8918591016130b4565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e490611bfe9087906130cf565b60405180910390a3611c11816001612f13565b5f5590505b919050565b5f81611c2681611b2b565b611c4357604051636030e5f560e11b815260040160405180910390fd5b50505f9081526003602052604090206004015490565b5f80611c6483611c1b565b905060028101611cc7575f8381526007602052604090205480611c9a5760405163079442c960e01b815260040160405180910390fd5b611ca381611c1b565b915060028201611cc55760405162a5c78160e11b815260040160405180910390fd5b505b92915050565b5f8681526003602052604090206005810154600690910154611cf49190859085908561232d565b611d11576040516303a479f160e11b815260040160405180910390fd5b5f868152600360205260408120600401548614611d2e5784611d30565b815b9050611d3d87878361220c565b50505050505050565b5f858152600360205260408120600101548690600160c01b900463ffffffff168203611d855760405163a42db76b60e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611dbe57504263ffffffff168163ffffffff1611155b15611ddc5760405163372900d560e21b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611e1457504263ffffffff168163ffffffff16115b15611e325760405163079994c560e31b815260040160405180910390fd5b5f898152600360205260409020600501548851885181141580611e56575080885114155b80611e62575080875114155b15611e71575f95505050611ed7565b5f5b81811015611ecf57611e91838c8381518110610a0d57610a0d612eeb565b611ea0575f9650505050611ed7565b8a8181518110611eb257611eb2612eeb565b602002602001015192508080611ec790612f58565b915050611e73565b506001955050505b50505095945050505050565b5f8181526003602052604090206001015481906001600160a01b03163314611f1e57604051634361661f60e11b815260040160405180910390fd5b5f82815260036020526040902060020154829060ff16611f515760405163f476ed1160e01b815260040160405180910390fd5b5f83815260036020526040902060028101805460ff1916905560010154611f8590600160c01b900463ffffffff16426130e1565b5f84815260036020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526003602052604090206001015483906001600160a01b0316331461202057604051634361661f60e11b815260040160405180910390fd5b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036120605760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615612092576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff1680158015906120cb57504263ffffffff168163ffffffff1611155b156120e95760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061212157504263ffffffff168163ffffffff16115b1561213f5760405163079994c560e31b815260040160405180910390fd5b86858015612178575f828152600360205260409020600601548110156121785760405163f6631e6760e01b815260040160405180910390fd5b5f89815260036020526040902060010154600160e01b900463ffffffff166121b3576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260036020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526003602052604090206001015483906001600160a01b0316331461224757604051634361661f60e11b815260040160405180910390fd5b5f84815260036020526040902060020154849060ff1661227a5760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b0383166122a1576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600360205260408120600201805460ff191690556122f4908690869086906124b6565b5f8581526003602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f6040516020016123479594939291906130fe565b604051602081830303815290604052805190602001208614905095945050505050565b5f80878303612427576001600160a01b0386166123e4578495505f60035f8b81526020019081526020015f20600301541180156123a957506001198814155b156123df576123cd898760035f8d81526020019081526020015f2060030154612436565b5f898152600360208190526040822001555b612427565b856001600160a01b0316856001600160a01b031614612427575f8488101561240c578761240e565b845b905061241f8a88610bc2848c612f45565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f90815260066020526040902054612459908290612f13565b6001600160a01b0383165f818152600660205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6906124a99085815260200190565b60405180910390a3505050565b5f8481526003602090815260408083206005015490516124de928791869188918791016130fe565b6040516020818303038152906040528051906020012090505f821115612512575f8581526003602052604090206006018290555b5f8581526003602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a00160405180910390a35050505050565b5f82815260036020526040902060048101829055600101546125b690600160c01b900463ffffffff16426130e1565b5f92835260036020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600360205260409020600101548790600160c01b900463ffffffff161561262e576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036126545760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061267e57604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b038716158015906126a05750336001600160a01b03881614155b15612728576001600160a01b0387165f90815260056020526040902054808210156126de5760405163d72564c760e01b815260040160405180910390fd5b6126e88183612f45565b6001600160a01b0389165f9081526006602052604090205490925061270e908290612f13565b6001600160a01b0389165f90815260066020526040902055505b5f898152600360205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c1617929092171617905580156127d4575f89815260036020818152604092839020909101839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b831561282a575f89815260036020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906128219087815260200190565b60405180910390a25b505050505050505050565b5f60208284031215612845575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156128885761288861284c565b604052919050565b5f6001600160401b038211156128a8576128a861284c565b5060051b60200190565b5f82601f8301126128c1575f80fd5b813560206128d66128d183612890565b612860565b82815260059290921b840181019181810190868411156128f4575f80fd5b8286015b8481101561290f57803583529183019183016128f8565b509695505050505050565b80356001600160a01b0381168114611c16575f80fd5b5f82601f83011261293f575f80fd5b8135602061294f6128d183612890565b82815260059290921b8401810191818101908684111561296d575f80fd5b8286015b8481101561290f576129828161291a565b8352918301918301612971565b5f805f805f60a086880312156129a3575f80fd5b8535945060208601356001600160401b03808211156129c0575f80fd5b6129cc89838a016128b2565b955060408801359150808211156129e1575f80fd5b6129ed89838a01612930565b94506060880135915080821115612a02575f80fd5b612a0e89838a016128b2565b93506080880135915080821115612a23575f80fd5b50612a30888289016128b2565b9150509295509295909350565b5f805f8060808587031215612a50575f80fd5b843593506020850135925060408501359150612a6e6060860161291a565b905092959194509250565b5f82601f830112612a88575f80fd5b81356001600160401b03811115612aa157612aa161284c565b612ab4601f8201601f1916602001612860565b818152846020838601011115612ac8575f80fd5b816020850160208301375f918101602001919091529392505050565b803563ffffffff81168114611c16575f80fd5b5f805f805f805f80610100898b031215612b0f575f80fd5b8835975060208901356001600160401b03811115612b2b575f80fd5b612b378b828c01612a79565b975050612b4660408a0161291a565b9550612b5460608a01612ae4565b9450612b6260808a01612ae4565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f60a08688031215612b98575f80fd5b8535945060208601359350612baf6040870161291a565b9250612bbd60608701612ae4565b949793965091946080013592915050565b5f805f805f8060c08789031215612be3575f80fd5b86356001600160401b0380821115612bf9575f80fd5b612c058a838b016128b2565b97506020890135915080821115612c1a575f80fd5b612c268a838b016128b2565b96506040890135915080821115612c3b575f80fd5b612c478a838b016128b2565b95506060890135915080821115612c5c575f80fd5b612c688a838b01612930565b94506080890135915080821115612c7d575f80fd5b612c898a838b016128b2565b935060a0890135915080821115612c9e575f80fd5b50612cab89828a016128b2565b9150509295509295509295565b5f805f805f805f60e0888a031215612cce575f80fd5b8735965060208801356001600160401b03811115612cea575f80fd5b612cf68a828b01612a79565b965050612d056040890161291a565b9450612d1360608901612ae4565b9350612d2160808901612ae4565b925060a0880135915060c0880135905092959891949750929550565b5f60208284031215612d4d575f80fd5b611b7f8261291a565b5f805f805f8060c08789031215612d6b575f80fd5b8635955060208701356001600160401b03811115612d87575f80fd5b612d9389828a01612a79565b955050612da26040880161291a565b9350612db060608801612ae4565b9250612dbe60808801612ae4565b915060a087013590509295509295509295565b5f805f60608486031215612de3575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215612e0a575f80fd5b81356001600160401b03811115612e1f575f80fd5b612e2b84828501612a79565b949350505050565b5f805f805f8060c08789031215612e48575f80fd5b8635955060208701359450612e5f6040880161291a565b93506060870135925060808701359150612e7b60a0880161291a565b90509295509295509295565b5f805f60608486031215612e99575f80fd5b83359250612ea96020850161291a565b9150604084013590509250925092565b5f805f60608486031215612ecb575f80fd5b8335925060208401359150612ee26040850161291a565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115611cc757611cc7612eff565b5f82612f4057634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115611cc757611cc7612eff565b5f60018201612f6957612f69612eff565b5060010190565b8082028115828204841417611cc757611cc7612eff565b5f5b83811015612fa1578181015183820152602001612f89565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f8251612fd2816024850160208701612f87565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f8151808452613051816020860160208601612f87565b601f01601f19169290920160200192915050565b87815260e060208201525f61307d60e083018961303a565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f82516130c5818460208701612f87565b9190910192915050565b602081525f611b7f602083018461303a565b63ffffffff818116838216019080821115611cc557611cc5612eff565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea2646970667358221220f95c8652d07779fc0de6ffc3e93f0d15630c13a205b8f9e65f2f68a0efbd12e464736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
1
+ 60806040525f805534801562000013575f80fd5b50620000386040518060600160405280603f8152602001620033e0603f9139620000d3565b506200005d6040518060800160405280604f8152602001620034bc604f9139620000d3565b50620000826040518060800160405280605a815260200162003462605a9139620000d3565b50620000a76040518060800160405280605c815260200162003384605c9139620000d3565b50620000cc6040518060800160405280604381526020016200341f60439139620000d3565b5062000207565b5f805480825260016020908152604080842043905551620000f79185910162000190565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906200014f908790620001ad565b60405180910390a362000164816001620001e1565b5f5592915050565b5f5b83811015620001885781810151838201526020016200016e565b50505f910152565b5f8251620001a38184602087016200016c565b9190910192915050565b602081525f8251806020840152620001cd8160408501602087016200016c565b601f01601f19169190910160400192915050565b808201808211156200020157634e487b7160e01b5f52601160045260245ffd5b92915050565b61316f80620002155f395ff3fe60806040526004361061023e575f3560e01c806377f325df11610134578063ab5a4e35116100b3578063d44e293c11610078578063d44e293c14610890578063e12891d4146108af578063e83bfb58146108ce578063ebbdd2b0146108fc578063f6a94ecb1461091b578063fe92049d1461093a575f80fd5b8063ab5a4e35146107e0578063acae8f4e146107ff578063bc5256521461083a578063c081d8a314610865578063d09cc57e146107c1575f80fd5b8063924532fb116100f9578063924532fb1461061157806395addb90146106425780639e63fa6a146107365780639f1025c614610786578063a462fb7b146107c1575f80fd5b806377f325df146105645780637f8d429e1461057757806382ffa9f71461059657806383bf4609146105c45780638d552d46146105e3575f80fd5b8063484b93c4116101c0578063590158a711610185578063590158a71461047f57806359245ff3146104e85780636fa42742146104fb57806370a0823114610526578063762c38fd14610551575f80fd5b8063484b93c4146103c9578063484c0714146103dc5780634df6ca2a1461040a5780634e60f8831461042957806351577ea914610454575f80fd5b80632417395c116102065780632417395c146102ea5780632518904c1461031957806326d6c97b1461036857806328828b1e146103965780633ccfd60b146103b5575f80fd5b806306c3b67a146102425780631101a0fd14610276578063111ec138146102975780631126a9dc146102aa57806312a203c3146102cb575b5f80fd5b34801561024d575f80fd5b5061026161025c366004612835565b610959565b60405190151581526020015b60405180910390f35b348015610281575f80fd5b5061029561029036600461298f565b61096d565b005b6102956102a5366004612a3d565b610c0f565b6102bd6102b8366004612af7565b610e4e565b60405190815260200161026d565b3480156102d6575f80fd5b506102bd6102e5366004612b84565b6110f0565b3480156102f5575f80fd5b506102bd610304366004612835565b5f908152600360208190526040909120015490565b348015610324575f80fd5b50610350610333366004612835565b5f908152600360205260409020600101546001600160a01b031690565b6040516001600160a01b03909116815260200161026d565b348015610373575f80fd5b506102bd610382366004612835565b5f9081526003602052604090206006015490565b3480156103a1575f80fd5b506102956103b0366004612bce565b61120e565b3480156103c0575f80fd5b506102956114be565b6102bd6103d7366004612cb8565b611535565b3480156103e7575f80fd5b506102bd6103f6366004612835565b5f9081526003602052604090206007015490565b348015610415575f80fd5b50610295610424366004612835565b611631565b348015610434575f80fd5b506102bd610443366004612835565b60026020525f908152604090205481565b34801561045f575f80fd5b506102bd61046e366004612835565b5f9081526003602052604090205490565b34801561048a575f80fd5b506104c3610499366004612835565b60046020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b03909416845260208401929092529082015260600161026d565b6102956104f6366004612835565b61167e565b348015610506575f80fd5b506102bd610515366004612d3d565b60056020525f908152604090205481565b348015610531575f80fd5b506102bd610540366004612d3d565b60066020525f908152604090205481565b6102bd61055f366004612d56565b611819565b610295610572366004612dd1565b611914565b348015610582575f80fd5b50610261610591366004612835565b611b2b565b3480156105a1575f80fd5b506102bd6105b0366004612835565b5f9081526003602052604090206005015490565b3480156105cf575f80fd5b506102bd6105de366004612dfa565b611b86565b3480156105ee575f80fd5b506102bd6105fd366004612835565b5f9081526003602052604090206004015490565b34801561061c575f80fd5b5061026161062b366004612835565b5f9081526003602052604090206002015460ff1690565b34801561064d575f80fd5b506106cf61065c366004612835565b600360208190525f91825260409091208054600182015460028301549383015460048401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff90931694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e08501526101008401919091526101208301526101408201526101600161026d565b348015610741575f80fd5b50610771610750366004612835565b5f90815260036020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff909116815260200161026d565b348015610791575f80fd5b506107716107a0366004612835565b5f90815260036020526040902060010154600160c01b900463ffffffff1690565b3480156107cc575f80fd5b506102bd6107db366004612835565b611c1b565b3480156107eb575f80fd5b506102bd6107fa366004612835565b611c59565b34801561080a575f80fd5b50610771610819366004612835565b5f90815260036020526040902060010154600160e01b900463ffffffff1690565b348015610845575f80fd5b506102bd610854366004612835565b60016020525f908152604090205481565b348015610870575f80fd5b506102bd61087f366004612835565b60076020525f908152604090205481565b34801561089b575f80fd5b506102956108aa366004612e33565b611ccd565b3480156108ba575f80fd5b506102616108c936600461298f565b611d46565b3480156108d9575f80fd5b506102616108e8366004612835565b60086020525f908152604090205460ff1681565b348015610907575f80fd5b50610295610916366004612835565b611ee3565b348015610926575f80fd5b50610295610935366004612e87565b611fe5565b348015610945575f80fd5b50610295610954366004612eb9565b61220c565b5f60011961096683611c1b565b1492915050565b8461097781611b2b565b61099457604051636030e5f560e11b815260040160405180910390fd5b84515f036109b5576040516312fdb46960e31b815260040160405180910390fd5b5f8681526004602081815260408084208054600190910154600390935290842060058101549301546001600160a01b0390911693919290825b8a51811015610b7157610a68838c8381518110610a0d57610a0d612eeb565b60200260200101518a8481518110610a2757610a27612eeb565b60200260200101518c8581518110610a4157610a41612eeb565b60200260200101518e8681518110610a5b57610a5b612eeb565b602002602001015161232d565b610a85576040516303a479f160e11b815260040160405180910390fd5b610a8f8585612f13565b9350610aeb8c8386898e8681518110610aaa57610aaa612eeb565b60200260200101518e8781518110610ac457610ac4612eeb565b60200260200101518e8881518110610ade57610ade612eeb565b602002602001015161236a565b8097508195505050888181518110610b0557610b05612eeb565b6020026020010151945060035f8d81526020019081526020015f20600601548514610b4257610b35602886612f26565b610b3f9086612f45565b94505b8a8181518110610b5457610b54612eeb565b602002602001015192508080610b6990612f58565b9150506109ee565b8215610bb357610b828c8786612436565b5f8c815260046020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610bee565b610bc78c87610bc28888612f13565b612436565b5f8c815260046020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260036020526040909920600501989098555050505050505050565b5f848152600360205260408120600101548591600160c01b90910463ffffffff169003610c4f5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615610c81576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590610cba57504263ffffffff168163ffffffff1611155b15610cd85760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590610d1057504263ffffffff168163ffffffff16115b15610d2e5760405163079994c560e31b815260040160405180910390fd5b8634805f03610d5057604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003610d9f575f83815260036020526040902060070154821015610d9a5760405163291784d560e01b815260040160405180910390fd5b610dca565b610daa816002612f70565b821015610dca576040516328eecafb60e21b815260040160405180910390fd5b89888015610e03575f82815260036020526040902060060154811015610e035760405163f6631e6760e01b815260040160405180910390fd5b6001600160a01b038916610e2a57604051630ca6549f60e11b815260040160405180910390fd5b610e368c8c8b346124b6565b610e408c8c612587565b505050505050505050505050565b5f610e5882610959565b610e7557604051631f45e42760e11b815260040160405180910390fd5b5f89868a604051602001610e8b93929190612fa9565b60408051601f1981840301815291815281516020928301205f86815260039093529120549091508114610ed1576040516349923ed160e11b815260040160405180910390fd5b5f838152600360205260409020600101546001600160a01b03898116911614610f0d5760405163611876b160e01b815260040160405180910390fd5b5f8381526003602052604090206001015463ffffffff888116600160c01b9092041614610f4d57604051635f4c19f760e01b815260040160405180910390fd5b5f8381526003602052604090206001015463ffffffff878116600160a01b9092041614610f8d57604051630a5ab81d60e41b815260040160405180910390fd5b5f838152600360205260409020600701548414610fbd57604051633246892f60e01b815260040160405180910390fd5b5f8381526008602052604090205460ff1615610fec5760405163331c2c3f60e11b815260040160405180910390fd5b5f8381526007602052604090205483811561103f5761100a82610959565b61102757604051634ec30c8560e01b815260040160405180910390fd5b505f818152600860205260409020805460ff19169055805b5f61104f8d8d8d8d8d8d8d611535565b5f87815260076020908152604080832084905583835260088252808320805460ff191660011790556003918290528083208201548684529220015491925061109691612f13565b5f828152600360208190526040808320820193909355848252828220018190559051879183917f32e7d5617fb1be6bd0e7c3974d438d4514c4cf349e9330691d8abf6f6fd431219190a39c9b505050505050505050505050565b5f856110fb81611b2b565b61111857604051636030e5f560e11b815260040160405180910390fd5b5f87815260036020526040902054861461114557604051630763e45d60e41b815260040160405180910390fd5b5f878152600360205260409020600101546001600160a01b038681169116146111815760405163f089a18560e01b815260040160405180910390fd5b5f8781526003602052604090206001015463ffffffff600160c01b909104811690851611156111c357604051633f61762b60e01b815260040160405180910390fd5b5f878152600360205260409020600601548311156111f457604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600360205250604090206004015490565b5f805b87518210156114ac575f88838151811061122d5761122d612eeb565b602002602001015190505f88848151811061124a5761124a612eeb565b602002602001015190505f816001600160401b0381111561126d5761126d61284c565b604051908082528060200260200182016040528015611296578160200160208202803683370190505b5090505f826001600160401b038111156112b2576112b261284c565b6040519080825280602002602001820160405280156112db578160200160208202803683370190505b5090505f836001600160401b038111156112f7576112f761284c565b604051908082528060200260200182016040528015611320578160200160208202803683370190505b5090505f846001600160401b0381111561133c5761133c61284c565b604051908082528060200260200182016040528015611365578160200160208202803683370190505b5090505f5b85811015611485578c888151811061138457611384612eeb565b602002602001015185828151811061139e5761139e612eeb565b6020026020010181815250508b88815181106113bc576113bc612eeb565b60200260200101518482815181106113d6576113d6612eeb565b60200260200101906001600160a01b031690816001600160a01b0316815250508a888151811061140857611408612eeb565b602002602001015183828151811061142257611422612eeb565b60200260200101818152505089888151811061144057611440612eeb565b602002602001015182828151811061145a5761145a612eeb565b60209081029190910101528761146f81612f58565b985050808061147d90612f58565b91505061136a565b611492878686868661096d565b5050505050505081806114a490612f58565b925050611211565b6114b46114be565b5050505050505050565b335f81815260066020526040808220805490839055905190929183156108fc02918491818181858888f193505050501580156114fc573d5f803e3d5ffd5b5060405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b5f8781526001602052604081205481036115625760405163bbbf712b60e01b815260040160405180910390fd5b5f88858960405160200161157893929190612fa9565b6040516020818303038152906040528051906020012090505f8188888630338a6040516020016115ae9796959493929190612fe1565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d4260405161160d9796959493929190613065565b60405180910390a461162481838a8a8a89346125ed565b9998505050505050505050565b335f81815260056020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f818152600360205260408120600101548291600160c01b90910463ffffffff1690036116be5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff16156116f0576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061172957504263ffffffff168163ffffffff1611155b156117475760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061177f57504263ffffffff168163ffffffff16115b1561179d5760405163079994c560e31b815260040160405180910390fd5b5f84815260036020819052604090912001546117ba903490612f13565b5f858152600360208190526040918290200182905551339186917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab669161180b91349190918252602082015260400190565b60405180910390a350505050565b5f8681526001602052604081205481036118465760405163bbbf712b60e01b815260040160405180910390fd5b5f87848860405160200161185c93929190612fa9565b6040516020818303038152906040528051906020012090505f8187875f3033896040516020016118929796959493929190612fe1565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516118f19796959493929190613065565b60405180910390a461190881838989895f346125ed565b98975050505050505050565b5f838152600360205260408120600101548491600160c01b90910463ffffffff1690036119545760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611986576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff1680158015906119bf57504263ffffffff168163ffffffff1611155b156119dd5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611a1557504263ffffffff168163ffffffff16115b15611a335760405163079994c560e31b815260040160405180910390fd5b8534805f03611a5557604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611aa4575f83815260036020526040902060070154821015611a9f5760405163291784d560e01b815260040160405180910390fd5b611acf565b611aaf816002612f70565b821015611acf576040516328eecafb60e21b815260040160405180910390fd5b88878015611b08575f82815260036020526040902060060154811015611b085760405163f6631e6760e01b815260040160405180910390fd5b611b148b8b33346124b6565b611b1e8b8b612587565b5050505050505050505050565b5f8181526003602052604081206001810154600290910154600160e01b90910463ffffffff169060ff16158015611b6757505f8163ffffffff16115b8015611b7f57504263ffffffff168163ffffffff1611155b9392505050565b5f805480825260016020908152604080842043905551611ba8918591016130b4565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e490611bfe9087906130cf565b60405180910390a3611c11816001612f13565b5f5590505b919050565b5f81611c2681611b2b565b611c4357604051636030e5f560e11b815260040160405180910390fd5b50505f9081526003602052604090206004015490565b5f80611c6483611c1b565b905060028101611cc7575f8381526007602052604090205480611c9a5760405163079442c960e01b815260040160405180910390fd5b611ca381611c1b565b915060028201611cc55760405162a5c78160e11b815260040160405180910390fd5b505b92915050565b5f8681526003602052604090206005810154600690910154611cf49190859085908561232d565b611d11576040516303a479f160e11b815260040160405180910390fd5b5f868152600360205260408120600401548614611d2e5784611d30565b815b9050611d3d87878361220c565b50505050505050565b5f858152600360205260408120600101548690600160c01b900463ffffffff168203611d855760405163a42db76b60e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611dbe57504263ffffffff168163ffffffff1611155b15611ddc5760405163372900d560e21b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611e1457504263ffffffff168163ffffffff16115b15611e325760405163079994c560e31b815260040160405180910390fd5b5f898152600360205260409020600501548851885181141580611e56575080885114155b80611e62575080875114155b15611e71575f95505050611ed7565b5f5b81811015611ecf57611e91838c8381518110610a0d57610a0d612eeb565b611ea0575f9650505050611ed7565b8a8181518110611eb257611eb2612eeb565b602002602001015192508080611ec790612f58565b915050611e73565b506001955050505b50505095945050505050565b5f8181526003602052604090206001015481906001600160a01b03163314611f1e57604051634361661f60e11b815260040160405180910390fd5b5f82815260036020526040902060020154829060ff16611f515760405163f476ed1160e01b815260040160405180910390fd5b5f83815260036020526040902060028101805460ff1916905560010154611f8590600160c01b900463ffffffff16426130e1565b5f84815260036020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526003602052604090206001015483906001600160a01b0316331461202057604051634361661f60e11b815260040160405180910390fd5b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036120605760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615612092576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff1680158015906120cb57504263ffffffff168163ffffffff1611155b156120e95760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061212157504263ffffffff168163ffffffff16115b1561213f5760405163079994c560e31b815260040160405180910390fd5b86858015612178575f828152600360205260409020600601548110156121785760405163f6631e6760e01b815260040160405180910390fd5b5f89815260036020526040902060010154600160e01b900463ffffffff166121b3576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260036020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526003602052604090206001015483906001600160a01b0316331461224757604051634361661f60e11b815260040160405180910390fd5b5f84815260036020526040902060020154849060ff1661227a5760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b0383166122a1576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600360205260408120600201805460ff191690556122f4908690869086906124b6565b5f8581526003602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f6040516020016123479594939291906130fe565b604051602081830303815290604052805190602001208614905095945050505050565b5f80878303612427576001600160a01b0386166123e4578495505f60035f8b81526020019081526020015f20600301541180156123a957506001198814155b156123df576123cd898760035f8d81526020019081526020015f2060030154612436565b5f898152600360208190526040822001555b612427565b856001600160a01b0316856001600160a01b031614612427575f8488101561240c578761240e565b845b905061241f8a88610bc2848c612f45565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f90815260066020526040902054612459908290612f13565b6001600160a01b0383165f818152600660205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6906124a99085815260200190565b60405180910390a3505050565b5f8481526003602090815260408083206005015490516124de928791869188918791016130fe565b6040516020818303038152906040528051906020012090505f821115612512575f8581526003602052604090206006018290555b5f8581526003602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a00160405180910390a35050505050565b5f82815260036020526040902060048101829055600101546125b690600160c01b900463ffffffff16426130e1565b5f92835260036020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600360205260409020600101548790600160c01b900463ffffffff161561262e576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036126545760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061267e57604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b038716158015906126a05750336001600160a01b03881614155b15612728576001600160a01b0387165f90815260056020526040902054808210156126de5760405163d72564c760e01b815260040160405180910390fd5b6126e88183612f45565b6001600160a01b0389165f9081526006602052604090205490925061270e908290612f13565b6001600160a01b0389165f90815260066020526040902055505b5f898152600360205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c1617929092171617905580156127d4575f89815260036020818152604092839020909101839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b831561282a575f89815260036020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906128219087815260200190565b60405180910390a25b505050505050505050565b5f60208284031215612845575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156128885761288861284c565b604052919050565b5f6001600160401b038211156128a8576128a861284c565b5060051b60200190565b5f82601f8301126128c1575f80fd5b813560206128d66128d183612890565b612860565b82815260059290921b840181019181810190868411156128f4575f80fd5b8286015b8481101561290f57803583529183019183016128f8565b509695505050505050565b80356001600160a01b0381168114611c16575f80fd5b5f82601f83011261293f575f80fd5b8135602061294f6128d183612890565b82815260059290921b8401810191818101908684111561296d575f80fd5b8286015b8481101561290f576129828161291a565b8352918301918301612971565b5f805f805f60a086880312156129a3575f80fd5b8535945060208601356001600160401b03808211156129c0575f80fd5b6129cc89838a016128b2565b955060408801359150808211156129e1575f80fd5b6129ed89838a01612930565b94506060880135915080821115612a02575f80fd5b612a0e89838a016128b2565b93506080880135915080821115612a23575f80fd5b50612a30888289016128b2565b9150509295509295909350565b5f805f8060808587031215612a50575f80fd5b843593506020850135925060408501359150612a6e6060860161291a565b905092959194509250565b5f82601f830112612a88575f80fd5b81356001600160401b03811115612aa157612aa161284c565b612ab4601f8201601f1916602001612860565b818152846020838601011115612ac8575f80fd5b816020850160208301375f918101602001919091529392505050565b803563ffffffff81168114611c16575f80fd5b5f805f805f805f80610100898b031215612b0f575f80fd5b8835975060208901356001600160401b03811115612b2b575f80fd5b612b378b828c01612a79565b975050612b4660408a0161291a565b9550612b5460608a01612ae4565b9450612b6260808a01612ae4565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f60a08688031215612b98575f80fd5b8535945060208601359350612baf6040870161291a565b9250612bbd60608701612ae4565b949793965091946080013592915050565b5f805f805f8060c08789031215612be3575f80fd5b86356001600160401b0380821115612bf9575f80fd5b612c058a838b016128b2565b97506020890135915080821115612c1a575f80fd5b612c268a838b016128b2565b96506040890135915080821115612c3b575f80fd5b612c478a838b016128b2565b95506060890135915080821115612c5c575f80fd5b612c688a838b01612930565b94506080890135915080821115612c7d575f80fd5b612c898a838b016128b2565b935060a0890135915080821115612c9e575f80fd5b50612cab89828a016128b2565b9150509295509295509295565b5f805f805f805f60e0888a031215612cce575f80fd5b8735965060208801356001600160401b03811115612cea575f80fd5b612cf68a828b01612a79565b965050612d056040890161291a565b9450612d1360608901612ae4565b9350612d2160808901612ae4565b925060a0880135915060c0880135905092959891949750929550565b5f60208284031215612d4d575f80fd5b611b7f8261291a565b5f805f805f8060c08789031215612d6b575f80fd5b8635955060208701356001600160401b03811115612d87575f80fd5b612d9389828a01612a79565b955050612da26040880161291a565b9350612db060608801612ae4565b9250612dbe60808801612ae4565b915060a087013590509295509295509295565b5f805f60608486031215612de3575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215612e0a575f80fd5b81356001600160401b03811115612e1f575f80fd5b612e2b84828501612a79565b949350505050565b5f805f805f8060c08789031215612e48575f80fd5b8635955060208701359450612e5f6040880161291a565b93506060870135925060808701359150612e7b60a0880161291a565b90509295509295509295565b5f805f60608486031215612e99575f80fd5b83359250612ea96020850161291a565b9150604084013590509250925092565b5f805f60608486031215612ecb575f80fd5b8335925060208401359150612ee26040850161291a565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115611cc757611cc7612eff565b5f82612f4057634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115611cc757611cc7612eff565b5f60018201612f6957612f69612eff565b5060010190565b8082028115828204841417611cc757611cc7612eff565b5f5b83811015612fa1578181015183820152602001612f89565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f8251612fd2816024850160208701612f87565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f8151808452613051816020860160208601612f87565b601f01601f19169290920160200192915050565b87815260e060208201525f61307d60e083018961303a565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f82516130c5818460208701612f87565b9190910192915050565b602081525f611b7f602083018461303a565b63ffffffff818116838216019080821115611cc557611cc5612eff565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea2646970667358221220de1b1cb95b543725f289a8c880ae6288804e20869ca676467bab4a04ec94e49c64736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
@@ -1 +1 @@
1
- 60806040525f805534801562000013575f80fd5b50620000386040518060600160405280603f81526020016200365a603f9139620000d3565b506200005d6040518060800160405280604f815260200162003736604f9139620000d3565b50620000826040518060800160405280605a8152602001620036dc605a9139620000d3565b50620000a76040518060800160405280605c8152602001620035fe605c9139620000d3565b50620000cc6040518060800160405280604381526020016200369960439139620000d3565b5062000207565b5f805480825260016020908152604080842043905551620000f79185910162000190565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906200014f908790620001ad565b60405180910390a362000164816001620001e1565b5f5592915050565b5f5b83811015620001885781810151838201526020016200016e565b50505f910152565b5f8251620001a38184602087016200016c565b9190910192915050565b602081525f8251806020840152620001cd8160408501602087016200016c565b601f01601f19169190910160400192915050565b808201808211156200020157634e487b7160e01b5f52601160045260245ffd5b92915050565b6133e980620002155f395ff3fe608060405234801561000f575f80fd5b506004361061026b575f3560e01c806383bf46091161014b578063bf53b188116100bf578063e12891d411610084578063e12891d4146107a6578063e83bfb58146107b9578063ebbdd2b0146107db578063f6a94ecb146107ee578063fc0c546a14610801578063fe92049d14610814575f80fd5b8063bf53b1881461074e578063c081d8a314610761578063d09cc57e146106c7578063d44e293c14610780578063d4876b9f14610793575f80fd5b80639f1025c6116101105780639f1025c614610698578063a462fb7b146106c7578063ab5a4e35146106da578063acae8f4e146106ed578063b8eaa9801461071c578063bc5256521461072f575f80fd5b806383bf4609146105125780638d552d4614610525578063924532fb1461054757806395addb901461056c5780639e63fa6a14610654575f80fd5b8063484c0714116101e2578063590158a7116101a7578063590158a71461042f5780636fa427421461048c57806370a08231146104ab578063762c38fd146104ca5780637f8d429e146104dd57806382ffa9f7146104f0575f80fd5b8063484c0714146103a95780634df6ca2a146103cb5780634e60f883146103de57806351577ea9146103fd57806352debac31461041c575f80fd5b80632417395c116102335780632417395c146102f35780632518904c1461031657806326d6c97b1461035957806328828b1e1461037b5780632f998a6f1461038e5780633ccfd60b146103a1575f80fd5b806306c3b67a1461026f5780631101a0fd14610297578063128b7a47146102ac57806312a203c3146102bf578063144fa6d7146102e0575b5f80fd5b61028261027d3660046129c0565b610827565b60405190151581526020015b60405180910390f35b6102aa6102a5366004612b1d565b61083b565b005b6102aa6102ba366004612bcb565b610add565b6102d26102cd366004612bfe565b610c82565b60405190815260200161028e565b6102aa6102ee366004612c4a565b610da0565b6102d26103013660046129c0565b5f908152600360208190526040909120015490565b6103416103243660046129c0565b5f908152600360205260409020600101546001600160a01b031690565b6040516001600160a01b03909116815260200161028e565b6102d26103673660046129c0565b5f9081526003602052604090206006015490565b6102aa610389366004612c65565b610dec565b6102aa61039c366004612d4f565b61109c565b6102aa6112bd565b6102d26103b73660046129c0565b5f9081526003602052604090206007015490565b6102aa6103d93660046129c0565b611386565b6102d26103ec3660046129c0565b60026020525f908152604090205481565b6102d261040b3660046129c0565b5f9081526003602052604090205490565b6102d261042a366004612de9565b6113d3565b61046761043d3660046129c0565b60046020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b03909416845260208401929092529082015260600161028e565b6102d261049a366004612c4a565b60056020525f908152604090205481565b6102d26104b9366004612c4a565b60066020525f908152604090205481565b6102d26104d8366004612e78565b6114da565b6102826104eb3660046129c0565b6115d5565b6102d26104fe3660046129c0565b5f9081526003602052604090206005015490565b6102d2610520366004612ef5565b611630565b6102d26105333660046129c0565b5f9081526003602052604090206004015490565b6102826105553660046129c0565b5f9081526003602052604090206002015460ff1690565b6105ed61057a3660046129c0565b600360208190525f91825260409091208054600182015460028301549383015460048401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff90931694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e08501526101008401919091526101208301526101408201526101600161028e565b6106836106623660046129c0565b5f90815260036020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff909116815260200161028e565b6106836106a63660046129c0565b5f90815260036020526040902060010154600160c01b900463ffffffff1690565b6102d26106d53660046129c0565b6116c5565b6102d26106e83660046129c0565b611703565b6106836106fb3660046129c0565b5f90815260036020526040902060010154600160e01b900463ffffffff1690565b6102aa61072a366004612f2e565b611777565b6102d261073d3660046129c0565b60016020525f908152604090205481565b6102d261075c366004612f62565b6119c0565b6102d261076f3660046129c0565b60086020525f908152604090205481565b6102aa61078e366004612ffa565b611c64565b6102d26107a1366004613054565b611cdd565b6102826107b4366004612b1d565b611de3565b6102826107c73660046129c0565b60096020525f908152604090205460ff1681565b6102aa6107e93660046129c0565b611f80565b6102aa6107fc3660046130db565b612082565b600754610341906001600160a01b031681565b6102aa610822366004613110565b6122a9565b5f600119610834836116c5565b1492915050565b84610845816115d5565b61086257604051636030e5f560e11b815260040160405180910390fd5b84515f03610883576040516312fdb46960e31b815260040160405180910390fd5b5f8681526004602081815260408084208054600190910154600390935290842060058101549301546001600160a01b0390911693919290825b8a51811015610a3f57610936838c83815181106108db576108db613146565b60200260200101518a84815181106108f5576108f5613146565b60200260200101518c858151811061090f5761090f613146565b60200260200101518e868151811061092957610929613146565b60200260200101516123ca565b610953576040516303a479f160e11b815260040160405180910390fd5b61095d858561316e565b93506109b98c8386898e868151811061097857610978613146565b60200260200101518e878151811061099257610992613146565b60200260200101518e88815181106109ac576109ac613146565b6020026020010151612407565b80975081955050508881815181106109d3576109d3613146565b6020026020010151945060035f8d81526020019081526020015f20600601548514610a1057610a03602886613181565b610a0d90866131a0565b94505b8a8181518110610a2257610a22613146565b602002602001015192508080610a37906131b3565b9150506108bc565b8215610a8157610a508c87866124d3565b5f8c815260046020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610abc565b610a958c87610a90888861316e565b6124d3565b5f8c815260046020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260036020526040909920600501989098555050505050505050565b5f828152600360205260408120600101548391600160c01b90910463ffffffff169003610b1d5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615610b4f576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590610b8857504263ffffffff168163ffffffff1611155b15610ba65760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590610bde57504263ffffffff168163ffffffff16115b15610bfc5760405163079994c560e31b815260040160405180910390fd5b610c0584612553565b5f8581526003602081905260409091200154610c2290859061316e565b5f868152600360208190526040918290200182905551339187917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab6691610c7391899190918252602082015260400190565b60405180910390a35050505050565b5f85610c8d816115d5565b610caa57604051636030e5f560e11b815260040160405180910390fd5b5f878152600360205260409020548614610cd757604051630763e45d60e41b815260040160405180910390fd5b5f878152600360205260409020600101546001600160a01b03868116911614610d135760405163f089a18560e01b815260040160405180910390fd5b5f8781526003602052604090206001015463ffffffff600160c01b90910481169085161115610d5557604051633f61762b60e01b815260040160405180910390fd5b5f87815260036020526040902060060154831115610d8657604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600360205250604090206004015490565b6007546001600160a01b031615610dca57604051635c4e8df160e11b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b5f805b875182101561108a575f888381518110610e0b57610e0b613146565b602002602001015190505f888481518110610e2857610e28613146565b602002602001015190505f816001600160401b03811115610e4b57610e4b6129d7565b604051908082528060200260200182016040528015610e74578160200160208202803683370190505b5090505f826001600160401b03811115610e9057610e906129d7565b604051908082528060200260200182016040528015610eb9578160200160208202803683370190505b5090505f836001600160401b03811115610ed557610ed56129d7565b604051908082528060200260200182016040528015610efe578160200160208202803683370190505b5090505f846001600160401b03811115610f1a57610f1a6129d7565b604051908082528060200260200182016040528015610f43578160200160208202803683370190505b5090505f5b85811015611063578c8881518110610f6257610f62613146565b6020026020010151858281518110610f7c57610f7c613146565b6020026020010181815250508b8881518110610f9a57610f9a613146565b6020026020010151848281518110610fb457610fb4613146565b60200260200101906001600160a01b031690816001600160a01b0316815250508a8881518110610fe657610fe6613146565b602002602001015183828151811061100057611000613146565b60200260200101818152505089888151811061101e5761101e613146565b602002602001015182828151811061103857611038613146565b60209081029190910101528761104d816131b3565b985050808061105b906131b3565b915050610f48565b611070878686868661083b565b505050505050508180611082906131b3565b925050610def565b6110926112bd565b5050505050505050565b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036110dc5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff161561110e576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061114757504263ffffffff168163ffffffff1611155b156111655760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061119d57504263ffffffff168163ffffffff16115b156111bb5760405163079994c560e31b815260040160405180910390fd5b8684805f036111dd57604051635de374cf60e11b815260040160405180910390fd5b5f828152600360205260408120600601549081900361122c575f838152600360205260409020600701548210156112275760405163291784d560e01b815260040160405180910390fd5b611257565b6112378160026131cb565b821015611257576040516328eecafb60e21b815260040160405180910390fd5b89888015611290575f828152600360205260409020600601548110156112905760405163f6631e6760e01b815260040160405180910390fd5b61129989612553565b6112a58c8c338c61264b565b6112af8c8c612712565b505050505050505050505050565b335f818152600660205260408082208054929055600754905163a9059cbb60e01b815260048101939093526024830182905290916001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015611322573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134691906131e2565b61134e575f80fd5b60405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b335f81815260056020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f6113dd82612553565b5f89815260016020526040812054900361140a5760405163bbbf712b60e01b815260040160405180910390fd5b5f89868a60405160200161142093929190613223565b6040516020818303038152906040528051906020012090505f8189898730338b604051602001611456979695949392919061325b565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8e8e8e8e8e8e426040516114b597969594939291906132df565b60405180910390a46114cc81838b8b8b8a8a612778565b9a9950505050505050505050565b5f8681526001602052604081205481036115075760405163bbbf712b60e01b815260040160405180910390fd5b5f87848860405160200161151d93929190613223565b6040516020818303038152906040528051906020012090505f8187875f303389604051602001611553979695949392919061325b565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516115b297969594939291906132df565b60405180910390a46115c981838989895f80612778565b98975050505050505050565b5f8181526003602052604081206001810154600290910154600160e01b90910463ffffffff169060ff1615801561161157505f8163ffffffff16115b801561162957504263ffffffff168163ffffffff1611155b9392505050565b5f8054808252600160209081526040808420439055516116529185910161332e565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906116a8908790613349565b60405180910390a36116bb81600161316e565b5f5590505b919050565b5f816116d0816115d5565b6116ed57604051636030e5f560e11b815260040160405180910390fd5b50505f9081526003602052604090206004015490565b5f8061170e836116c5565b905060028101611771575f83815260086020526040902054806117445760405163079442c960e01b815260040160405180910390fd5b61174d816116c5565b91506002820161176f5760405162a5c78160e11b815260040160405180910390fd5b505b92915050565b5f858152600360205260408120600101548691600160c01b90910463ffffffff1690036117b75760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff16156117e9576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061182257504263ffffffff168163ffffffff1611155b156118405760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061187857504263ffffffff168163ffffffff16115b156118965760405163079994c560e31b815260040160405180910390fd5b8784805f036118b857604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611907575f838152600360205260409020600701548210156119025760405163291784d560e01b815260040160405180910390fd5b611932565b6119128160026131cb565b821015611932576040516328eecafb60e21b815260040160405180910390fd5b8a89801561196b575f8281526003602052604090206006015481101561196b5760405163f6631e6760e01b815260040160405180910390fd5b61197489612553565b6001600160a01b038a1661199b57604051630ca6549f60e11b815260040160405180910390fd5b6119a78d8d8c8c61264b565b6119b18d8d612712565b50505050505050505050505050565b5f6119ca83610827565b6119e757604051631f45e42760e11b815260040160405180910390fd5b5f8a878b6040516020016119fd93929190613223565b60408051601f1981840301815291815281516020928301205f87815260039093529120549091508114611a43576040516349923ed160e11b815260040160405180910390fd5b5f848152600360205260409020600101546001600160a01b038a8116911614611a7f5760405163611876b160e01b815260040160405180910390fd5b5f8481526003602052604090206001015463ffffffff898116600160c01b9092041614611abf57604051635f4c19f760e01b815260040160405180910390fd5b5f8481526003602052604090206001015463ffffffff888116600160a01b9092041614611aff57604051630a5ab81d60e41b815260040160405180910390fd5b5f848152600360205260409020600701548514611b2f57604051633246892f60e01b815260040160405180910390fd5b5f8481526009602052604090205460ff1615611b5e5760405163331c2c3f60e11b815260040160405180910390fd5b5f84815260086020526040902054848115611bb157611b7c82610827565b611b9957604051634ec30c8560e01b815260040160405180910390fd5b505f818152600960205260409020805460ff19169055805b5f611bc28e8e8e8e8e8e8e8d6113d3565b5f88815260086020908152604080832084905583835260098252808320805460ff1916600117905560039182905280832082015486845292200154919250611c099161316e565b5f828152600360208190526040808320820193909355848252828220018190559051889183917f32e7d5617fb1be6bd0e7c3974d438d4514c4cf349e9330691d8abf6f6fd431219190a39d9c50505050505050505050505050565b5f8681526003602052604090206005810154600690910154611c8b919085908590856123ca565b611ca8576040516303a479f160e11b815260040160405180910390fd5b5f868152600360205260408120600401548614611cc55784611cc7565b815b9050611cd48787836122a9565b50505050505050565b5f611ce782612553565b5f888152600160205260408120549003611d145760405163bbbf712b60e01b815260040160405180910390fd5b5f888589604051602001611d2a93929190613223565b6040516020818303038152906040528051906020012090505f8188885f30338a604051602001611d60979695949392919061325b565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d42604051611dbf97969594939291906132df565b60405180910390a4611dd681838a8a8a5f8a612778565b9998505050505050505050565b5f858152600360205260408120600101548690600160c01b900463ffffffff168203611e225760405163a42db76b60e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611e5b57504263ffffffff168163ffffffff1611155b15611e795760405163372900d560e21b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611eb157504263ffffffff168163ffffffff16115b15611ecf5760405163079994c560e31b815260040160405180910390fd5b5f898152600360205260409020600501548851885181141580611ef3575080885114155b80611eff575080875114155b15611f0e575f95505050611f74565b5f5b81811015611f6c57611f2e838c83815181106108db576108db613146565b611f3d575f9650505050611f74565b8a8181518110611f4f57611f4f613146565b602002602001015192508080611f64906131b3565b915050611f10565b506001955050505b50505095945050505050565b5f8181526003602052604090206001015481906001600160a01b03163314611fbb57604051634361661f60e11b815260040160405180910390fd5b5f82815260036020526040902060020154829060ff16611fee5760405163f476ed1160e01b815260040160405180910390fd5b5f83815260036020526040902060028101805460ff191690556001015461202290600160c01b900463ffffffff164261335b565b5f84815260036020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526003602052604090206001015483906001600160a01b031633146120bd57604051634361661f60e11b815260040160405180910390fd5b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036120fd5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff161561212f576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061216857504263ffffffff168163ffffffff1611155b156121865760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff1680158015906121be57504263ffffffff168163ffffffff16115b156121dc5760405163079994c560e31b815260040160405180910390fd5b86858015612215575f828152600360205260409020600601548110156122155760405163f6631e6760e01b815260040160405180910390fd5b5f89815260036020526040902060010154600160e01b900463ffffffff16612250576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260036020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526003602052604090206001015483906001600160a01b031633146122e457604051634361661f60e11b815260040160405180910390fd5b5f84815260036020526040902060020154849060ff166123175760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b03831661233e576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600360205260408120600201805460ff191690556123919086908690869061264b565b5f8581526003602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f6040516020016123e4959493929190613378565b604051602081830303815290604052805190602001208614905095945050505050565b5f808783036124c4576001600160a01b038616612481578495505f60035f8b81526020019081526020015f206003015411801561244657506001198814155b1561247c5761246a898760035f8d81526020019081526020015f20600301546124d3565b5f898152600360208190526040822001555b6124c4565b856001600160a01b0316856001600160a01b0316146124c4575f848810156124a957876124ab565b845b90506124bc8a88610a90848c6131a0565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f908152600660205260409020546124f690829061316e565b6001600160a01b0383165f818152600660205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6906125469085815260200190565b60405180910390a3505050565b805f0361255d5750565b335f9081526006602052604090205480156125b2578181106125965761258382826131a0565b335f908152600660205260409020555050565b6125a081836131a0565b335f9081526006602052604081205591505b6007546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015612606573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061262a91906131e2565b61264757604051637e3e710960e11b815260040160405180910390fd5b5050565b5f84815260036020908152604080832060050154905161267392879186918891879101613378565b6040516020818303038152906040528051906020012090505f8211156126a7575f8581526003602052604090206006018290555b5f8581526003602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a001610c73565b5f828152600360205260409020600481018290556001015461274190600160c01b900463ffffffff164261335b565b5f92835260036020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600360205260409020600101548790600160c01b900463ffffffff16156127b9576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036127df5760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061280957604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b0387161580159061282b5750336001600160a01b03881614155b156128b3576001600160a01b0387165f90815260056020526040902054808210156128695760405163d72564c760e01b815260040160405180910390fd5b61287381836131a0565b6001600160a01b0389165f9081526006602052604090205490925061289990829061316e565b6001600160a01b0389165f90815260066020526040902055505b5f898152600360205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c16179290921716179055801561295f575f89815260036020818152604092839020909101839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b83156129b5575f89815260036020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906129ac9087815260200190565b60405180910390a25b505050505050505050565b5f602082840312156129d0575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715612a1357612a136129d7565b604052919050565b5f6001600160401b03821115612a3357612a336129d7565b5060051b60200190565b5f82601f830112612a4c575f80fd5b81356020612a61612a5c83612a1b565b6129eb565b82815260059290921b84018101918181019086841115612a7f575f80fd5b8286015b84811015612a9a5780358352918301918301612a83565b509695505050505050565b6001600160a01b0381168114612ab9575f80fd5b50565b5f82601f830112612acb575f80fd5b81356020612adb612a5c83612a1b565b82815260059290921b84018101918181019086841115612af9575f80fd5b8286015b84811015612a9a578035612b1081612aa5565b8352918301918301612afd565b5f805f805f60a08688031215612b31575f80fd5b8535945060208601356001600160401b0380821115612b4e575f80fd5b612b5a89838a01612a3d565b95506040880135915080821115612b6f575f80fd5b612b7b89838a01612abc565b94506060880135915080821115612b90575f80fd5b612b9c89838a01612a3d565b93506080880135915080821115612bb1575f80fd5b50612bbe88828901612a3d565b9150509295509295909350565b5f8060408385031215612bdc575f80fd5b50508035926020909101359150565b803563ffffffff811681146116c0575f80fd5b5f805f805f60a08688031215612c12575f80fd5b85359450602086013593506040860135612c2b81612aa5565b9250612c3960608701612beb565b949793965091946080013592915050565b5f60208284031215612c5a575f80fd5b813561162981612aa5565b5f805f805f8060c08789031215612c7a575f80fd5b86356001600160401b0380821115612c90575f80fd5b612c9c8a838b01612a3d565b97506020890135915080821115612cb1575f80fd5b612cbd8a838b01612a3d565b96506040890135915080821115612cd2575f80fd5b612cde8a838b01612a3d565b95506060890135915080821115612cf3575f80fd5b612cff8a838b01612abc565b94506080890135915080821115612d14575f80fd5b612d208a838b01612a3d565b935060a0890135915080821115612d35575f80fd5b50612d4289828a01612a3d565b9150509295509295509295565b5f805f8060808587031215612d62575f80fd5b5050823594602084013594506040840135936060013592509050565b5f82601f830112612d8d575f80fd5b81356001600160401b03811115612da657612da66129d7565b612db9601f8201601f19166020016129eb565b818152846020838601011115612dcd575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f80610100898b031215612e01575f80fd5b8835975060208901356001600160401b03811115612e1d575f80fd5b612e298b828c01612d7e565b9750506040890135612e3a81612aa5565b9550612e4860608a01612beb565b9450612e5660808a01612beb565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f8060c08789031215612e8d575f80fd5b8635955060208701356001600160401b03811115612ea9575f80fd5b612eb589828a01612d7e565b9550506040870135612ec681612aa5565b9350612ed460608801612beb565b9250612ee260808801612beb565b915060a087013590509295509295509295565b5f60208284031215612f05575f80fd5b81356001600160401b03811115612f1a575f80fd5b612f2684828501612d7e565b949350505050565b5f805f805f60a08688031215612f42575f80fd5b8535945060208601359350604086013592506060860135612c3981612aa5565b5f805f805f805f805f6101208a8c031215612f7b575f80fd5b8935985060208a01356001600160401b03811115612f97575f80fd5b612fa38c828d01612d7e565b98505060408a0135612fb481612aa5565b9650612fc260608b01612beb565b9550612fd060808b01612beb565b989b979a50959894979660a0860135965060c08601359560e0810135955061010001359350915050565b5f805f805f8060c0878903121561300f575f80fd5b8635955060208701359450604087013561302881612aa5565b9350606087013592506080870135915060a087013561304681612aa5565b809150509295509295509295565b5f805f805f805f60e0888a03121561306a575f80fd5b8735965060208801356001600160401b03811115613086575f80fd5b6130928a828b01612d7e565b96505060408801356130a381612aa5565b94506130b160608901612beb565b93506130bf60808901612beb565b925060a0880135915060c0880135905092959891949750929550565b5f805f606084860312156130ed575f80fd5b8335925060208401356130ff81612aa5565b929592945050506040919091013590565b5f805f60608486031215613122575f80fd5b8335925060208401359150604084013561313b81612aa5565b809150509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156117715761177161315a565b5f8261319b57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156117715761177161315a565b5f600182016131c4576131c461315a565b5060010190565b80820281158282048414176117715761177161315a565b5f602082840312156131f2575f80fd5b81518015158114611629575f80fd5b5f5b8381101561321b578181015183820152602001613203565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f825161324c816024850160208701613201565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f81518084526132cb816020860160208601613201565b601f01601f19169290920160200192915050565b87815260e060208201525f6132f760e08301896132b4565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f825161333f818460208701613201565b9190910192915050565b602081525f61162960208301846132b4565b63ffffffff81811683821601908082111561176f5761176f61315a565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea26469706673582212207b0dc3e071d46d450a5a3a6a52cb96cdc5429f171ec0b34ceb8250d4643f696d64736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
1
+ 60806040525f805534801562000013575f80fd5b50620000386040518060600160405280603f81526020016200365a603f9139620000d3565b506200005d6040518060800160405280604f815260200162003736604f9139620000d3565b50620000826040518060800160405280605a8152602001620036dc605a9139620000d3565b50620000a76040518060800160405280605c8152602001620035fe605c9139620000d3565b50620000cc6040518060800160405280604381526020016200369960439139620000d3565b5062000207565b5f805480825260016020908152604080842043905551620000f79185910162000190565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906200014f908790620001ad565b60405180910390a362000164816001620001e1565b5f5592915050565b5f5b83811015620001885781810151838201526020016200016e565b50505f910152565b5f8251620001a38184602087016200016c565b9190910192915050565b602081525f8251806020840152620001cd8160408501602087016200016c565b601f01601f19169190910160400192915050565b808201808211156200020157634e487b7160e01b5f52601160045260245ffd5b92915050565b6133e980620002155f395ff3fe608060405234801561000f575f80fd5b506004361061026b575f3560e01c806383bf46091161014b578063bf53b188116100bf578063e12891d411610084578063e12891d4146107a6578063e83bfb58146107b9578063ebbdd2b0146107db578063f6a94ecb146107ee578063fc0c546a14610801578063fe92049d14610814575f80fd5b8063bf53b1881461074e578063c081d8a314610761578063d09cc57e146106c7578063d44e293c14610780578063d4876b9f14610793575f80fd5b80639f1025c6116101105780639f1025c614610698578063a462fb7b146106c7578063ab5a4e35146106da578063acae8f4e146106ed578063b8eaa9801461071c578063bc5256521461072f575f80fd5b806383bf4609146105125780638d552d4614610525578063924532fb1461054757806395addb901461056c5780639e63fa6a14610654575f80fd5b8063484c0714116101e2578063590158a7116101a7578063590158a71461042f5780636fa427421461048c57806370a08231146104ab578063762c38fd146104ca5780637f8d429e146104dd57806382ffa9f7146104f0575f80fd5b8063484c0714146103a95780634df6ca2a146103cb5780634e60f883146103de57806351577ea9146103fd57806352debac31461041c575f80fd5b80632417395c116102335780632417395c146102f35780632518904c1461031657806326d6c97b1461035957806328828b1e1461037b5780632f998a6f1461038e5780633ccfd60b146103a1575f80fd5b806306c3b67a1461026f5780631101a0fd14610297578063128b7a47146102ac57806312a203c3146102bf578063144fa6d7146102e0575b5f80fd5b61028261027d3660046129c0565b610827565b60405190151581526020015b60405180910390f35b6102aa6102a5366004612b1d565b61083b565b005b6102aa6102ba366004612bcb565b610add565b6102d26102cd366004612bfe565b610c82565b60405190815260200161028e565b6102aa6102ee366004612c4a565b610da0565b6102d26103013660046129c0565b5f908152600360208190526040909120015490565b6103416103243660046129c0565b5f908152600360205260409020600101546001600160a01b031690565b6040516001600160a01b03909116815260200161028e565b6102d26103673660046129c0565b5f9081526003602052604090206006015490565b6102aa610389366004612c65565b610dec565b6102aa61039c366004612d4f565b61109c565b6102aa6112bd565b6102d26103b73660046129c0565b5f9081526003602052604090206007015490565b6102aa6103d93660046129c0565b611386565b6102d26103ec3660046129c0565b60026020525f908152604090205481565b6102d261040b3660046129c0565b5f9081526003602052604090205490565b6102d261042a366004612de9565b6113d3565b61046761043d3660046129c0565b60046020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b03909416845260208401929092529082015260600161028e565b6102d261049a366004612c4a565b60056020525f908152604090205481565b6102d26104b9366004612c4a565b60066020525f908152604090205481565b6102d26104d8366004612e78565b6114da565b6102826104eb3660046129c0565b6115d5565b6102d26104fe3660046129c0565b5f9081526003602052604090206005015490565b6102d2610520366004612ef5565b611630565b6102d26105333660046129c0565b5f9081526003602052604090206004015490565b6102826105553660046129c0565b5f9081526003602052604090206002015460ff1690565b6105ed61057a3660046129c0565b600360208190525f91825260409091208054600182015460028301549383015460048401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff90931694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e08501526101008401919091526101208301526101408201526101600161028e565b6106836106623660046129c0565b5f90815260036020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff909116815260200161028e565b6106836106a63660046129c0565b5f90815260036020526040902060010154600160c01b900463ffffffff1690565b6102d26106d53660046129c0565b6116c5565b6102d26106e83660046129c0565b611703565b6106836106fb3660046129c0565b5f90815260036020526040902060010154600160e01b900463ffffffff1690565b6102aa61072a366004612f2e565b611777565b6102d261073d3660046129c0565b60016020525f908152604090205481565b6102d261075c366004612f62565b6119c0565b6102d261076f3660046129c0565b60086020525f908152604090205481565b6102aa61078e366004612ffa565b611c64565b6102d26107a1366004613054565b611cdd565b6102826107b4366004612b1d565b611de3565b6102826107c73660046129c0565b60096020525f908152604090205460ff1681565b6102aa6107e93660046129c0565b611f80565b6102aa6107fc3660046130db565b612082565b600754610341906001600160a01b031681565b6102aa610822366004613110565b6122a9565b5f600119610834836116c5565b1492915050565b84610845816115d5565b61086257604051636030e5f560e11b815260040160405180910390fd5b84515f03610883576040516312fdb46960e31b815260040160405180910390fd5b5f8681526004602081815260408084208054600190910154600390935290842060058101549301546001600160a01b0390911693919290825b8a51811015610a3f57610936838c83815181106108db576108db613146565b60200260200101518a84815181106108f5576108f5613146565b60200260200101518c858151811061090f5761090f613146565b60200260200101518e868151811061092957610929613146565b60200260200101516123ca565b610953576040516303a479f160e11b815260040160405180910390fd5b61095d858561316e565b93506109b98c8386898e868151811061097857610978613146565b60200260200101518e878151811061099257610992613146565b60200260200101518e88815181106109ac576109ac613146565b6020026020010151612407565b80975081955050508881815181106109d3576109d3613146565b6020026020010151945060035f8d81526020019081526020015f20600601548514610a1057610a03602886613181565b610a0d90866131a0565b94505b8a8181518110610a2257610a22613146565b602002602001015192508080610a37906131b3565b9150506108bc565b8215610a8157610a508c87866124d3565b5f8c815260046020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610abc565b610a958c87610a90888861316e565b6124d3565b5f8c815260046020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260036020526040909920600501989098555050505050505050565b5f828152600360205260408120600101548391600160c01b90910463ffffffff169003610b1d5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615610b4f576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590610b8857504263ffffffff168163ffffffff1611155b15610ba65760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590610bde57504263ffffffff168163ffffffff16115b15610bfc5760405163079994c560e31b815260040160405180910390fd5b610c0584612553565b5f8581526003602081905260409091200154610c2290859061316e565b5f868152600360208190526040918290200182905551339187917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab6691610c7391899190918252602082015260400190565b60405180910390a35050505050565b5f85610c8d816115d5565b610caa57604051636030e5f560e11b815260040160405180910390fd5b5f878152600360205260409020548614610cd757604051630763e45d60e41b815260040160405180910390fd5b5f878152600360205260409020600101546001600160a01b03868116911614610d135760405163f089a18560e01b815260040160405180910390fd5b5f8781526003602052604090206001015463ffffffff600160c01b90910481169085161115610d5557604051633f61762b60e01b815260040160405180910390fd5b5f87815260036020526040902060060154831115610d8657604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600360205250604090206004015490565b6007546001600160a01b031615610dca57604051635c4e8df160e11b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b5f805b875182101561108a575f888381518110610e0b57610e0b613146565b602002602001015190505f888481518110610e2857610e28613146565b602002602001015190505f816001600160401b03811115610e4b57610e4b6129d7565b604051908082528060200260200182016040528015610e74578160200160208202803683370190505b5090505f826001600160401b03811115610e9057610e906129d7565b604051908082528060200260200182016040528015610eb9578160200160208202803683370190505b5090505f836001600160401b03811115610ed557610ed56129d7565b604051908082528060200260200182016040528015610efe578160200160208202803683370190505b5090505f846001600160401b03811115610f1a57610f1a6129d7565b604051908082528060200260200182016040528015610f43578160200160208202803683370190505b5090505f5b85811015611063578c8881518110610f6257610f62613146565b6020026020010151858281518110610f7c57610f7c613146565b6020026020010181815250508b8881518110610f9a57610f9a613146565b6020026020010151848281518110610fb457610fb4613146565b60200260200101906001600160a01b031690816001600160a01b0316815250508a8881518110610fe657610fe6613146565b602002602001015183828151811061100057611000613146565b60200260200101818152505089888151811061101e5761101e613146565b602002602001015182828151811061103857611038613146565b60209081029190910101528761104d816131b3565b985050808061105b906131b3565b915050610f48565b611070878686868661083b565b505050505050508180611082906131b3565b925050610def565b6110926112bd565b5050505050505050565b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036110dc5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff161561110e576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061114757504263ffffffff168163ffffffff1611155b156111655760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061119d57504263ffffffff168163ffffffff16115b156111bb5760405163079994c560e31b815260040160405180910390fd5b8684805f036111dd57604051635de374cf60e11b815260040160405180910390fd5b5f828152600360205260408120600601549081900361122c575f838152600360205260409020600701548210156112275760405163291784d560e01b815260040160405180910390fd5b611257565b6112378160026131cb565b821015611257576040516328eecafb60e21b815260040160405180910390fd5b89888015611290575f828152600360205260409020600601548110156112905760405163f6631e6760e01b815260040160405180910390fd5b61129989612553565b6112a58c8c338c61264b565b6112af8c8c612712565b505050505050505050505050565b335f818152600660205260408082208054929055600754905163a9059cbb60e01b815260048101939093526024830182905290916001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015611322573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134691906131e2565b61134e575f80fd5b60405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b335f81815260056020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f6113dd82612553565b5f89815260016020526040812054900361140a5760405163bbbf712b60e01b815260040160405180910390fd5b5f89868a60405160200161142093929190613223565b6040516020818303038152906040528051906020012090505f8189898730338b604051602001611456979695949392919061325b565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8e8e8e8e8e8e426040516114b597969594939291906132df565b60405180910390a46114cc81838b8b8b8a8a612778565b9a9950505050505050505050565b5f8681526001602052604081205481036115075760405163bbbf712b60e01b815260040160405180910390fd5b5f87848860405160200161151d93929190613223565b6040516020818303038152906040528051906020012090505f8187875f303389604051602001611553979695949392919061325b565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516115b297969594939291906132df565b60405180910390a46115c981838989895f80612778565b98975050505050505050565b5f8181526003602052604081206001810154600290910154600160e01b90910463ffffffff169060ff1615801561161157505f8163ffffffff16115b801561162957504263ffffffff168163ffffffff1611155b9392505050565b5f8054808252600160209081526040808420439055516116529185910161332e565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906116a8908790613349565b60405180910390a36116bb81600161316e565b5f5590505b919050565b5f816116d0816115d5565b6116ed57604051636030e5f560e11b815260040160405180910390fd5b50505f9081526003602052604090206004015490565b5f8061170e836116c5565b905060028101611771575f83815260086020526040902054806117445760405163079442c960e01b815260040160405180910390fd5b61174d816116c5565b91506002820161176f5760405162a5c78160e11b815260040160405180910390fd5b505b92915050565b5f858152600360205260408120600101548691600160c01b90910463ffffffff1690036117b75760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff16156117e9576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061182257504263ffffffff168163ffffffff1611155b156118405760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061187857504263ffffffff168163ffffffff16115b156118965760405163079994c560e31b815260040160405180910390fd5b8784805f036118b857604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611907575f838152600360205260409020600701548210156119025760405163291784d560e01b815260040160405180910390fd5b611932565b6119128160026131cb565b821015611932576040516328eecafb60e21b815260040160405180910390fd5b8a89801561196b575f8281526003602052604090206006015481101561196b5760405163f6631e6760e01b815260040160405180910390fd5b61197489612553565b6001600160a01b038a1661199b57604051630ca6549f60e11b815260040160405180910390fd5b6119a78d8d8c8c61264b565b6119b18d8d612712565b50505050505050505050505050565b5f6119ca83610827565b6119e757604051631f45e42760e11b815260040160405180910390fd5b5f8a878b6040516020016119fd93929190613223565b60408051601f1981840301815291815281516020928301205f87815260039093529120549091508114611a43576040516349923ed160e11b815260040160405180910390fd5b5f848152600360205260409020600101546001600160a01b038a8116911614611a7f5760405163611876b160e01b815260040160405180910390fd5b5f8481526003602052604090206001015463ffffffff898116600160c01b9092041614611abf57604051635f4c19f760e01b815260040160405180910390fd5b5f8481526003602052604090206001015463ffffffff888116600160a01b9092041614611aff57604051630a5ab81d60e41b815260040160405180910390fd5b5f848152600360205260409020600701548514611b2f57604051633246892f60e01b815260040160405180910390fd5b5f8481526009602052604090205460ff1615611b5e5760405163331c2c3f60e11b815260040160405180910390fd5b5f84815260086020526040902054848115611bb157611b7c82610827565b611b9957604051634ec30c8560e01b815260040160405180910390fd5b505f818152600960205260409020805460ff19169055805b5f611bc28e8e8e8e8e8e8e8d6113d3565b5f88815260086020908152604080832084905583835260098252808320805460ff1916600117905560039182905280832082015486845292200154919250611c099161316e565b5f828152600360208190526040808320820193909355848252828220018190559051889183917f32e7d5617fb1be6bd0e7c3974d438d4514c4cf349e9330691d8abf6f6fd431219190a39d9c50505050505050505050505050565b5f8681526003602052604090206005810154600690910154611c8b919085908590856123ca565b611ca8576040516303a479f160e11b815260040160405180910390fd5b5f868152600360205260408120600401548614611cc55784611cc7565b815b9050611cd48787836122a9565b50505050505050565b5f611ce782612553565b5f888152600160205260408120549003611d145760405163bbbf712b60e01b815260040160405180910390fd5b5f888589604051602001611d2a93929190613223565b6040516020818303038152906040528051906020012090505f8188885f30338a604051602001611d60979695949392919061325b565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d42604051611dbf97969594939291906132df565b60405180910390a4611dd681838a8a8a5f8a612778565b9998505050505050505050565b5f858152600360205260408120600101548690600160c01b900463ffffffff168203611e225760405163a42db76b60e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611e5b57504263ffffffff168163ffffffff1611155b15611e795760405163372900d560e21b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611eb157504263ffffffff168163ffffffff16115b15611ecf5760405163079994c560e31b815260040160405180910390fd5b5f898152600360205260409020600501548851885181141580611ef3575080885114155b80611eff575080875114155b15611f0e575f95505050611f74565b5f5b81811015611f6c57611f2e838c83815181106108db576108db613146565b611f3d575f9650505050611f74565b8a8181518110611f4f57611f4f613146565b602002602001015192508080611f64906131b3565b915050611f10565b506001955050505b50505095945050505050565b5f8181526003602052604090206001015481906001600160a01b03163314611fbb57604051634361661f60e11b815260040160405180910390fd5b5f82815260036020526040902060020154829060ff16611fee5760405163f476ed1160e01b815260040160405180910390fd5b5f83815260036020526040902060028101805460ff191690556001015461202290600160c01b900463ffffffff164261335b565b5f84815260036020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526003602052604090206001015483906001600160a01b031633146120bd57604051634361661f60e11b815260040160405180910390fd5b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036120fd5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff161561212f576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061216857504263ffffffff168163ffffffff1611155b156121865760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff1680158015906121be57504263ffffffff168163ffffffff16115b156121dc5760405163079994c560e31b815260040160405180910390fd5b86858015612215575f828152600360205260409020600601548110156122155760405163f6631e6760e01b815260040160405180910390fd5b5f89815260036020526040902060010154600160e01b900463ffffffff16612250576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260036020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526003602052604090206001015483906001600160a01b031633146122e457604051634361661f60e11b815260040160405180910390fd5b5f84815260036020526040902060020154849060ff166123175760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b03831661233e576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600360205260408120600201805460ff191690556123919086908690869061264b565b5f8581526003602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f6040516020016123e4959493929190613378565b604051602081830303815290604052805190602001208614905095945050505050565b5f808783036124c4576001600160a01b038616612481578495505f60035f8b81526020019081526020015f206003015411801561244657506001198814155b1561247c5761246a898760035f8d81526020019081526020015f20600301546124d3565b5f898152600360208190526040822001555b6124c4565b856001600160a01b0316856001600160a01b0316146124c4575f848810156124a957876124ab565b845b90506124bc8a88610a90848c6131a0565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f908152600660205260409020546124f690829061316e565b6001600160a01b0383165f818152600660205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6906125469085815260200190565b60405180910390a3505050565b805f0361255d5750565b335f9081526006602052604090205480156125b2578181106125965761258382826131a0565b335f908152600660205260409020555050565b6125a081836131a0565b335f9081526006602052604081205591505b6007546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015612606573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061262a91906131e2565b61264757604051637e3e710960e11b815260040160405180910390fd5b5050565b5f84815260036020908152604080832060050154905161267392879186918891879101613378565b6040516020818303038152906040528051906020012090505f8211156126a7575f8581526003602052604090206006018290555b5f8581526003602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a001610c73565b5f828152600360205260409020600481018290556001015461274190600160c01b900463ffffffff164261335b565b5f92835260036020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600360205260409020600101548790600160c01b900463ffffffff16156127b9576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036127df5760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061280957604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b0387161580159061282b5750336001600160a01b03881614155b156128b3576001600160a01b0387165f90815260056020526040902054808210156128695760405163d72564c760e01b815260040160405180910390fd5b61287381836131a0565b6001600160a01b0389165f9081526006602052604090205490925061289990829061316e565b6001600160a01b0389165f90815260066020526040902055505b5f898152600360205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c16179290921716179055801561295f575f89815260036020818152604092839020909101839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b83156129b5575f89815260036020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906129ac9087815260200190565b60405180910390a25b505050505050505050565b5f602082840312156129d0575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715612a1357612a136129d7565b604052919050565b5f6001600160401b03821115612a3357612a336129d7565b5060051b60200190565b5f82601f830112612a4c575f80fd5b81356020612a61612a5c83612a1b565b6129eb565b82815260059290921b84018101918181019086841115612a7f575f80fd5b8286015b84811015612a9a5780358352918301918301612a83565b509695505050505050565b6001600160a01b0381168114612ab9575f80fd5b50565b5f82601f830112612acb575f80fd5b81356020612adb612a5c83612a1b565b82815260059290921b84018101918181019086841115612af9575f80fd5b8286015b84811015612a9a578035612b1081612aa5565b8352918301918301612afd565b5f805f805f60a08688031215612b31575f80fd5b8535945060208601356001600160401b0380821115612b4e575f80fd5b612b5a89838a01612a3d565b95506040880135915080821115612b6f575f80fd5b612b7b89838a01612abc565b94506060880135915080821115612b90575f80fd5b612b9c89838a01612a3d565b93506080880135915080821115612bb1575f80fd5b50612bbe88828901612a3d565b9150509295509295909350565b5f8060408385031215612bdc575f80fd5b50508035926020909101359150565b803563ffffffff811681146116c0575f80fd5b5f805f805f60a08688031215612c12575f80fd5b85359450602086013593506040860135612c2b81612aa5565b9250612c3960608701612beb565b949793965091946080013592915050565b5f60208284031215612c5a575f80fd5b813561162981612aa5565b5f805f805f8060c08789031215612c7a575f80fd5b86356001600160401b0380821115612c90575f80fd5b612c9c8a838b01612a3d565b97506020890135915080821115612cb1575f80fd5b612cbd8a838b01612a3d565b96506040890135915080821115612cd2575f80fd5b612cde8a838b01612a3d565b95506060890135915080821115612cf3575f80fd5b612cff8a838b01612abc565b94506080890135915080821115612d14575f80fd5b612d208a838b01612a3d565b935060a0890135915080821115612d35575f80fd5b50612d4289828a01612a3d565b9150509295509295509295565b5f805f8060808587031215612d62575f80fd5b5050823594602084013594506040840135936060013592509050565b5f82601f830112612d8d575f80fd5b81356001600160401b03811115612da657612da66129d7565b612db9601f8201601f19166020016129eb565b818152846020838601011115612dcd575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f80610100898b031215612e01575f80fd5b8835975060208901356001600160401b03811115612e1d575f80fd5b612e298b828c01612d7e565b9750506040890135612e3a81612aa5565b9550612e4860608a01612beb565b9450612e5660808a01612beb565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f8060c08789031215612e8d575f80fd5b8635955060208701356001600160401b03811115612ea9575f80fd5b612eb589828a01612d7e565b9550506040870135612ec681612aa5565b9350612ed460608801612beb565b9250612ee260808801612beb565b915060a087013590509295509295509295565b5f60208284031215612f05575f80fd5b81356001600160401b03811115612f1a575f80fd5b612f2684828501612d7e565b949350505050565b5f805f805f60a08688031215612f42575f80fd5b8535945060208601359350604086013592506060860135612c3981612aa5565b5f805f805f805f805f6101208a8c031215612f7b575f80fd5b8935985060208a01356001600160401b03811115612f97575f80fd5b612fa38c828d01612d7e565b98505060408a0135612fb481612aa5565b9650612fc260608b01612beb565b9550612fd060808b01612beb565b989b979a50959894979660a0860135965060c08601359560e0810135955061010001359350915050565b5f805f805f8060c0878903121561300f575f80fd5b8635955060208701359450604087013561302881612aa5565b9350606087013592506080870135915060a087013561304681612aa5565b809150509295509295509295565b5f805f805f805f60e0888a03121561306a575f80fd5b8735965060208801356001600160401b03811115613086575f80fd5b6130928a828b01612d7e565b96505060408801356130a381612aa5565b94506130b160608901612beb565b93506130bf60808901612beb565b925060a0880135915060c0880135905092959891949750929550565b5f805f606084860312156130ed575f80fd5b8335925060208401356130ff81612aa5565b929592945050506040919091013590565b5f805f60608486031215613122575f80fd5b8335925060208401359150604084013561313b81612aa5565b809150509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156117715761177161315a565b5f8261319b57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156117715761177161315a565b5f600182016131c4576131c461315a565b5060010190565b80820281158282048414176117715761177161315a565b5f602082840312156131f2575f80fd5b81518015158114611629575f80fd5b5f5b8381101561321b578181015183820152602001613203565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f825161324c816024850160208701613201565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f81518084526132cb816020860160208601613201565b601f01601f19169290920160200192915050565b87815260e060208201525f6132f760e08301896132b4565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f825161333f818460208701613201565b9190910192915050565b602081525f61162960208301846132b4565b63ffffffff81811683821601908082111561176f5761176f61315a565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea264697066735822122036f37c169ad3d20b361181e42fedb98cdbd2cc5558f1752e0baf0572a373cce664736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
@@ -1 +1 @@
1
- 60806040525f805534801562000013575f80fd5b50620000386040518060600160405280603f8152602001620031ee603f9139620000d3565b506200005d6040518060800160405280604f8152602001620032ca604f9139620000d3565b50620000826040518060800160405280605a815260200162003270605a9139620000d3565b50620000a76040518060800160405280605c815260200162003192605c9139620000d3565b50620000cc6040518060800160405280604381526020016200322d60439139620000d3565b5062000207565b5f805480825260016020908152604080842043905551620000f79185910162000190565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906200014f908790620001ad565b60405180910390a362000164816001620001e1565b5f5592915050565b5f5b83811015620001885781810151838201526020016200016e565b50505f910152565b5f8251620001a38184602087016200016c565b9190910192915050565b602081525f8251806020840152620001cd8160408501602087016200016c565b601f01601f19169190910160400192915050565b808201808211156200020157634e487b7160e01b5f52601160045260245ffd5b92915050565b612f7d80620002155f395ff3fe608060405234801561000f575f80fd5b5060043610610234575f3560e01c80637f8d429e11610135578063b8eaa980116100b4578063e12891d411610079578063e12891d414610717578063ebbdd2b01461072a578063f6a94ecb1461073d578063fc0c546a14610750578063fe92049d14610763575f80fd5b8063b8eaa980146106bf578063bc525652146106d2578063d09cc57e1461067d578063d44e293c146106f1578063d4876b9f14610704575f80fd5b806395addb90116100fa57806395addb90146105225780639e63fa6a1461060a5780639f1025c61461064e578063a462fb7b1461067d578063acae8f4e14610690575f80fd5b80637f8d429e1461048357806382ffa9f7146104a657806383bf4609146104c85780638d552d46146104db578063924532fb146104fd575f80fd5b80633ccfd60b116101c157806352debac31161018657806352debac3146103c2578063590158a7146103d55780636fa427421461043257806370a0823114610451578063762c38fd14610470575f80fd5b80633ccfd60b14610347578063484c07141461034f5780634df6ca2a146103715780634e60f8831461038457806351577ea9146103a3575f80fd5b80632417395c116102075780632417395c146102995780632518904c146102bc57806326d6c97b146102ff57806328828b1e146103215780632f998a6f14610334575f80fd5b80631101a0fd14610238578063128b7a471461024d57806312a203c314610260578063144fa6d714610286575b5f80fd5b61024b610246366004612725565b610776565b005b61024b61025b3660046127d3565b610a18565b61027361026e366004612806565b610bbd565b6040519081526020015b60405180910390f35b61024b610294366004612852565b610cdb565b6102736102a736600461286d565b5f908152600360208190526040909120015490565b6102e76102ca36600461286d565b5f908152600360205260409020600101546001600160a01b031690565b6040516001600160a01b03909116815260200161027d565b61027361030d36600461286d565b5f9081526003602052604090206006015490565b61024b61032f366004612884565b610d27565b61024b61034236600461296e565b610fd7565b61024b6111f8565b61027361035d36600461286d565b5f9081526003602052604090206007015490565b61024b61037f36600461286d565b6112c1565b61027361039236600461286d565b60026020525f908152604090205481565b6102736103b136600461286d565b5f9081526003602052604090205490565b6102736103d0366004612a08565b61130e565b61040d6103e336600461286d565b60046020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b03909416845260208401929092529082015260600161027d565b610273610440366004612852565b60056020525f908152604090205481565b61027361045f366004612852565b60066020525f908152604090205481565b61027361047e366004612a97565b611415565b61049661049136600461286d565b611510565b604051901515815260200161027d565b6102736104b436600461286d565b5f9081526003602052604090206005015490565b6102736104d6366004612b14565b61156b565b6102736104e936600461286d565b5f9081526003602052604090206004015490565b61049661050b36600461286d565b5f9081526003602052604090206002015460ff1690565b6105a361053036600461286d565b600360208190525f91825260409091208054600182015460028301549383015460048401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff90931694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e08501526101008401919091526101208301526101408201526101600161027d565b61063961061836600461286d565b5f90815260036020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff909116815260200161027d565b61063961065c36600461286d565b5f90815260036020526040902060010154600160c01b900463ffffffff1690565b61027361068b36600461286d565b611600565b61063961069e36600461286d565b5f90815260036020526040902060010154600160e01b900463ffffffff1690565b61024b6106cd366004612b4d565b61163e565b6102736106e036600461286d565b60016020525f908152604090205481565b61024b6106ff366004612b81565b611887565b610273610712366004612bdb565b611900565b610496610725366004612725565b611a06565b61024b61073836600461286d565b611ba3565b61024b61074b366004612c62565b611ca5565b6007546102e7906001600160a01b031681565b61024b610771366004612c97565b611ecc565b8461078081611510565b61079d57604051636030e5f560e11b815260040160405180910390fd5b84515f036107be576040516312fdb46960e31b815260040160405180910390fd5b5f8681526004602081815260408084208054600190910154600390935290842060058101549301546001600160a01b0390911693919290825b8a5181101561097a57610871838c838151811061081657610816612ccd565b60200260200101518a848151811061083057610830612ccd565b60200260200101518c858151811061084a5761084a612ccd565b60200260200101518e868151811061086457610864612ccd565b6020026020010151611fed565b61088e576040516303a479f160e11b815260040160405180910390fd5b6108988585612cf5565b93506108f48c8386898e86815181106108b3576108b3612ccd565b60200260200101518e87815181106108cd576108cd612ccd565b60200260200101518e88815181106108e7576108e7612ccd565b602002602001015161202a565b809750819550505088818151811061090e5761090e612ccd565b6020026020010151945060035f8d81526020019081526020015f2060060154851461094b5761093e602886612d0e565b6109489086612d2d565b94505b8a818151811061095d5761095d612ccd565b60200260200101519250808061097290612d40565b9150506107f7565b82156109bc5761098b8c87866120f2565b5f8c815260046020526040902080546001600160a01b0319166001600160a01b0388161781556001018590556109f7565b6109d08c876109cb8888612cf5565b6120f2565b5f8c815260046020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260036020526040909920600501989098555050505050505050565b5f828152600360205260408120600101548391600160c01b90910463ffffffff169003610a585760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615610a8a576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590610ac357504263ffffffff168163ffffffff1611155b15610ae15760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590610b1957504263ffffffff168163ffffffff16115b15610b375760405163079994c560e31b815260040160405180910390fd5b610b4084612172565b5f8581526003602081905260409091200154610b5d908590612cf5565b5f868152600360208190526040918290200182905551339187917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab6691610bae91899190918252602082015260400190565b60405180910390a35050505050565b5f85610bc881611510565b610be557604051636030e5f560e11b815260040160405180910390fd5b5f878152600360205260409020548614610c1257604051630763e45d60e41b815260040160405180910390fd5b5f878152600360205260409020600101546001600160a01b03868116911614610c4e5760405163f089a18560e01b815260040160405180910390fd5b5f8781526003602052604090206001015463ffffffff600160c01b90910481169085161115610c9057604051633f61762b60e01b815260040160405180910390fd5b5f87815260036020526040902060060154831115610cc157604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600360205250604090206004015490565b6007546001600160a01b031615610d0557604051635c4e8df160e11b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b5f805b8751821015610fc5575f888381518110610d4657610d46612ccd565b602002602001015190505f888481518110610d6357610d63612ccd565b602002602001015190505f816001600160401b03811115610d8657610d866125df565b604051908082528060200260200182016040528015610daf578160200160208202803683370190505b5090505f826001600160401b03811115610dcb57610dcb6125df565b604051908082528060200260200182016040528015610df4578160200160208202803683370190505b5090505f836001600160401b03811115610e1057610e106125df565b604051908082528060200260200182016040528015610e39578160200160208202803683370190505b5090505f846001600160401b03811115610e5557610e556125df565b604051908082528060200260200182016040528015610e7e578160200160208202803683370190505b5090505f5b85811015610f9e578c8881518110610e9d57610e9d612ccd565b6020026020010151858281518110610eb757610eb7612ccd565b6020026020010181815250508b8881518110610ed557610ed5612ccd565b6020026020010151848281518110610eef57610eef612ccd565b60200260200101906001600160a01b031690816001600160a01b0316815250508a8881518110610f2157610f21612ccd565b6020026020010151838281518110610f3b57610f3b612ccd565b602002602001018181525050898881518110610f5957610f59612ccd565b6020026020010151828281518110610f7357610f73612ccd565b602090810291909101015287610f8881612d40565b9850508080610f9690612d40565b915050610e83565b610fab8786868686610776565b505050505050508180610fbd90612d40565b925050610d2a565b610fcd6111f8565b5050505050505050565b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036110175760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611049576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061108257504263ffffffff168163ffffffff1611155b156110a05760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff1680158015906110d857504263ffffffff168163ffffffff16115b156110f65760405163079994c560e31b815260040160405180910390fd5b8684805f0361111857604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611167575f838152600360205260409020600701548210156111625760405163291784d560e01b815260040160405180910390fd5b611192565b611172816002612d58565b821015611192576040516328eecafb60e21b815260040160405180910390fd5b898880156111cb575f828152600360205260409020600601548110156111cb5760405163f6631e6760e01b815260040160405180910390fd5b6111d489612172565b6111e08c8c338c61226a565b6111ea8c8c612331565b505050505050505050505050565b335f818152600660205260408082208054929055600754905163a9059cbb60e01b815260048101939093526024830182905290916001600160a01b039091169063a9059cbb906044016020604051808303815f875af115801561125d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112819190612d6f565b611289575f80fd5b60405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b335f81815260056020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f61131882612172565b5f8981526001602052604081205490036113455760405163bbbf712b60e01b815260040160405180910390fd5b5f89868a60405160200161135b93929190612db0565b6040516020818303038152906040528051906020012090505f8189898730338b6040516020016113919796959493929190612de8565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8e8e8e8e8e8e426040516113f09796959493929190612e6c565b60405180910390a461140781838b8b8b8a8a612397565b9a9950505050505050505050565b5f8681526001602052604081205481036114425760405163bbbf712b60e01b815260040160405180910390fd5b5f87848860405160200161145893929190612db0565b6040516020818303038152906040528051906020012090505f8187875f30338960405160200161148e9796959493929190612de8565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516114ed9796959493929190612e6c565b60405180910390a461150481838989895f80612397565b98975050505050505050565b5f8181526003602052604081206001810154600290910154600160e01b90910463ffffffff169060ff1615801561154c57505f8163ffffffff16115b801561156457504263ffffffff168163ffffffff1611155b9392505050565b5f80548082526001602090815260408084204390555161158d91859101612ebb565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906115e3908790612ed6565b60405180910390a36115f6816001612cf5565b5f5590505b919050565b5f8161160b81611510565b61162857604051636030e5f560e11b815260040160405180910390fd5b50505f9081526003602052604090206004015490565b5f858152600360205260408120600101548691600160c01b90910463ffffffff16900361167e5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff16156116b0576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff1680158015906116e957504263ffffffff168163ffffffff1611155b156117075760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061173f57504263ffffffff168163ffffffff16115b1561175d5760405163079994c560e31b815260040160405180910390fd5b8784805f0361177f57604051635de374cf60e11b815260040160405180910390fd5b5f82815260036020526040812060060154908190036117ce575f838152600360205260409020600701548210156117c95760405163291784d560e01b815260040160405180910390fd5b6117f9565b6117d9816002612d58565b8210156117f9576040516328eecafb60e21b815260040160405180910390fd5b8a898015611832575f828152600360205260409020600601548110156118325760405163f6631e6760e01b815260040160405180910390fd5b61183b89612172565b6001600160a01b038a1661186257604051630ca6549f60e11b815260040160405180910390fd5b61186e8d8d8c8c61226a565b6118788d8d612331565b50505050505050505050505050565b5f86815260036020526040902060058101546006909101546118ae91908590859085611fed565b6118cb576040516303a479f160e11b815260040160405180910390fd5b5f8681526003602052604081206004015486146118e857846118ea565b815b90506118f7878783611ecc565b50505050505050565b5f61190a82612172565b5f8881526001602052604081205490036119375760405163bbbf712b60e01b815260040160405180910390fd5b5f88858960405160200161194d93929190612db0565b6040516020818303038152906040528051906020012090505f8188885f30338a6040516020016119839796959493929190612de8565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d426040516119e29796959493929190612e6c565b60405180910390a46119f981838a8a8a5f8a612397565b9998505050505050505050565b5f858152600360205260408120600101548690600160c01b900463ffffffff168203611a455760405163a42db76b60e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611a7e57504263ffffffff168163ffffffff1611155b15611a9c5760405163372900d560e21b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611ad457504263ffffffff168163ffffffff16115b15611af25760405163079994c560e31b815260040160405180910390fd5b5f898152600360205260409020600501548851885181141580611b16575080885114155b80611b22575080875114155b15611b31575f95505050611b97565b5f5b81811015611b8f57611b51838c838151811061081657610816612ccd565b611b60575f9650505050611b97565b8a8181518110611b7257611b72612ccd565b602002602001015192508080611b8790612d40565b915050611b33565b506001955050505b50505095945050505050565b5f8181526003602052604090206001015481906001600160a01b03163314611bde57604051634361661f60e11b815260040160405180910390fd5b5f82815260036020526040902060020154829060ff16611c115760405163f476ed1160e01b815260040160405180910390fd5b5f83815260036020526040902060028101805460ff1916905560010154611c4590600160c01b900463ffffffff1642612ee8565b5f84815260036020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526003602052604090206001015483906001600160a01b03163314611ce057604051634361661f60e11b815260040160405180910390fd5b5f848152600360205260408120600101548591600160c01b90910463ffffffff169003611d205760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611d52576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611d8b57504263ffffffff168163ffffffff1611155b15611da95760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611de157504263ffffffff168163ffffffff16115b15611dff5760405163079994c560e31b815260040160405180910390fd5b86858015611e38575f82815260036020526040902060060154811015611e385760405163f6631e6760e01b815260040160405180910390fd5b5f89815260036020526040902060010154600160e01b900463ffffffff16611e73576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260036020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526003602052604090206001015483906001600160a01b03163314611f0757604051634361661f60e11b815260040160405180910390fd5b5f84815260036020526040902060020154849060ff16611f3a5760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b038316611f61576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600360205260408120600201805460ff19169055611fb49086908690869061226a565b5f8581526003602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f604051602001612007959493929190612f0c565b604051602081830303815290604052805190602001208614905095945050505050565b5f808783036120e3576001600160a01b0386166120a0578495505f60035f8b81526020019081526020015f2060030154118015612065575060015b1561209b57612089898760035f8d81526020019081526020015f20600301546120f2565b5f898152600360208190526040822001555b6120e3565b856001600160a01b0316856001600160a01b0316146120e3575f848810156120c857876120ca565b845b90506120db8a886109cb848c612d2d565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f90815260066020526040902054612115908290612cf5565b6001600160a01b0383165f818152600660205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6906121659085815260200190565b60405180910390a3505050565b805f0361217c5750565b335f9081526006602052604090205480156121d1578181106121b5576121a28282612d2d565b335f908152600660205260409020555050565b6121bf8183612d2d565b335f9081526006602052604081205591505b6007546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015612225573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122499190612d6f565b61226657604051637e3e710960e11b815260040160405180910390fd5b5050565b5f84815260036020908152604080832060050154905161229292879186918891879101612f0c565b6040516020818303038152906040528051906020012090505f8211156122c6575f8581526003602052604090206006018290555b5f8581526003602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a001610bae565b5f828152600360205260409020600481018290556001015461236090600160c01b900463ffffffff1642612ee8565b5f92835260036020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600360205260409020600101548790600160c01b900463ffffffff16156123d8576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036123fe5760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061242857604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b0387161580159061244a5750336001600160a01b03881614155b156124d2576001600160a01b0387165f90815260056020526040902054808210156124885760405163d72564c760e01b815260040160405180910390fd5b6124928183612d2d565b6001600160a01b0389165f908152600660205260409020549092506124b8908290612cf5565b6001600160a01b0389165f90815260066020526040902055505b5f898152600360205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c16179290921716179055801561257e575f89815260036020818152604092839020909101839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b83156125d4575f89815260036020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906125cb9087815260200190565b60405180910390a25b505050505050505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561261b5761261b6125df565b604052919050565b5f6001600160401b0382111561263b5761263b6125df565b5060051b60200190565b5f82601f830112612654575f80fd5b8135602061266961266483612623565b6125f3565b82815260059290921b84018101918181019086841115612687575f80fd5b8286015b848110156126a2578035835291830191830161268b565b509695505050505050565b6001600160a01b03811681146126c1575f80fd5b50565b5f82601f8301126126d3575f80fd5b813560206126e361266483612623565b82815260059290921b84018101918181019086841115612701575f80fd5b8286015b848110156126a2578035612718816126ad565b8352918301918301612705565b5f805f805f60a08688031215612739575f80fd5b8535945060208601356001600160401b0380821115612756575f80fd5b61276289838a01612645565b95506040880135915080821115612777575f80fd5b61278389838a016126c4565b94506060880135915080821115612798575f80fd5b6127a489838a01612645565b935060808801359150808211156127b9575f80fd5b506127c688828901612645565b9150509295509295909350565b5f80604083850312156127e4575f80fd5b50508035926020909101359150565b803563ffffffff811681146115fb575f80fd5b5f805f805f60a0868803121561281a575f80fd5b85359450602086013593506040860135612833816126ad565b9250612841606087016127f3565b949793965091946080013592915050565b5f60208284031215612862575f80fd5b8135611564816126ad565b5f6020828403121561287d575f80fd5b5035919050565b5f805f805f8060c08789031215612899575f80fd5b86356001600160401b03808211156128af575f80fd5b6128bb8a838b01612645565b975060208901359150808211156128d0575f80fd5b6128dc8a838b01612645565b965060408901359150808211156128f1575f80fd5b6128fd8a838b01612645565b95506060890135915080821115612912575f80fd5b61291e8a838b016126c4565b94506080890135915080821115612933575f80fd5b61293f8a838b01612645565b935060a0890135915080821115612954575f80fd5b5061296189828a01612645565b9150509295509295509295565b5f805f8060808587031215612981575f80fd5b5050823594602084013594506040840135936060013592509050565b5f82601f8301126129ac575f80fd5b81356001600160401b038111156129c5576129c56125df565b6129d8601f8201601f19166020016125f3565b8181528460208386010111156129ec575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f80610100898b031215612a20575f80fd5b8835975060208901356001600160401b03811115612a3c575f80fd5b612a488b828c0161299d565b9750506040890135612a59816126ad565b9550612a6760608a016127f3565b9450612a7560808a016127f3565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f8060c08789031215612aac575f80fd5b8635955060208701356001600160401b03811115612ac8575f80fd5b612ad489828a0161299d565b9550506040870135612ae5816126ad565b9350612af3606088016127f3565b9250612b01608088016127f3565b915060a087013590509295509295509295565b5f60208284031215612b24575f80fd5b81356001600160401b03811115612b39575f80fd5b612b458482850161299d565b949350505050565b5f805f805f60a08688031215612b61575f80fd5b8535945060208601359350604086013592506060860135612841816126ad565b5f805f805f8060c08789031215612b96575f80fd5b86359550602087013594506040870135612baf816126ad565b9350606087013592506080870135915060a0870135612bcd816126ad565b809150509295509295509295565b5f805f805f805f60e0888a031215612bf1575f80fd5b8735965060208801356001600160401b03811115612c0d575f80fd5b612c198a828b0161299d565b9650506040880135612c2a816126ad565b9450612c38606089016127f3565b9350612c46608089016127f3565b925060a0880135915060c0880135905092959891949750929550565b5f805f60608486031215612c74575f80fd5b833592506020840135612c86816126ad565b929592945050506040919091013590565b5f805f60608486031215612ca9575f80fd5b83359250602084013591506040840135612cc2816126ad565b809150509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115612d0857612d08612ce1565b92915050565b5f82612d2857634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115612d0857612d08612ce1565b5f60018201612d5157612d51612ce1565b5060010190565b8082028115828204841417612d0857612d08612ce1565b5f60208284031215612d7f575f80fd5b81518015158114611564575f80fd5b5f5b83811015612da8578181015183820152602001612d90565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f8251612dd9816024850160208701612d8e565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f8151808452612e58816020860160208601612d8e565b601f01601f19169290920160200192915050565b87815260e060208201525f612e8460e0830189612e41565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f8251612ecc818460208701612d8e565b9190910192915050565b602081525f6115646020830184612e41565b63ffffffff818116838216019080821115612f0557612f05612ce1565b5092915050565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea2646970667358221220c1a48aaeee7589ab5c35fe65c25c16903d96f6676492c8f21b8754fd252f293764736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
1
+ 60806040525f805534801562000013575f80fd5b50620000386040518060600160405280603f8152602001620031ee603f9139620000d3565b506200005d6040518060800160405280604f8152602001620032ca604f9139620000d3565b50620000826040518060800160405280605a815260200162003270605a9139620000d3565b50620000a76040518060800160405280605c815260200162003192605c9139620000d3565b50620000cc6040518060800160405280604381526020016200322d60439139620000d3565b5062000207565b5f805480825260016020908152604080842043905551620000f79185910162000190565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906200014f908790620001ad565b60405180910390a362000164816001620001e1565b5f5592915050565b5f5b83811015620001885781810151838201526020016200016e565b50505f910152565b5f8251620001a38184602087016200016c565b9190910192915050565b602081525f8251806020840152620001cd8160408501602087016200016c565b601f01601f19169190910160400192915050565b808201808211156200020157634e487b7160e01b5f52601160045260245ffd5b92915050565b612f7d80620002155f395ff3fe608060405234801561000f575f80fd5b5060043610610234575f3560e01c80637f8d429e11610135578063b8eaa980116100b4578063e12891d411610079578063e12891d414610717578063ebbdd2b01461072a578063f6a94ecb1461073d578063fc0c546a14610750578063fe92049d14610763575f80fd5b8063b8eaa980146106bf578063bc525652146106d2578063d09cc57e1461067d578063d44e293c146106f1578063d4876b9f14610704575f80fd5b806395addb90116100fa57806395addb90146105225780639e63fa6a1461060a5780639f1025c61461064e578063a462fb7b1461067d578063acae8f4e14610690575f80fd5b80637f8d429e1461048357806382ffa9f7146104a657806383bf4609146104c85780638d552d46146104db578063924532fb146104fd575f80fd5b80633ccfd60b116101c157806352debac31161018657806352debac3146103c2578063590158a7146103d55780636fa427421461043257806370a0823114610451578063762c38fd14610470575f80fd5b80633ccfd60b14610347578063484c07141461034f5780634df6ca2a146103715780634e60f8831461038457806351577ea9146103a3575f80fd5b80632417395c116102075780632417395c146102995780632518904c146102bc57806326d6c97b146102ff57806328828b1e146103215780632f998a6f14610334575f80fd5b80631101a0fd14610238578063128b7a471461024d57806312a203c314610260578063144fa6d714610286575b5f80fd5b61024b610246366004612725565b610776565b005b61024b61025b3660046127d3565b610a18565b61027361026e366004612806565b610bbd565b6040519081526020015b60405180910390f35b61024b610294366004612852565b610cdb565b6102736102a736600461286d565b5f908152600360208190526040909120015490565b6102e76102ca36600461286d565b5f908152600360205260409020600101546001600160a01b031690565b6040516001600160a01b03909116815260200161027d565b61027361030d36600461286d565b5f9081526003602052604090206006015490565b61024b61032f366004612884565b610d27565b61024b61034236600461296e565b610fd7565b61024b6111f8565b61027361035d36600461286d565b5f9081526003602052604090206007015490565b61024b61037f36600461286d565b6112c1565b61027361039236600461286d565b60026020525f908152604090205481565b6102736103b136600461286d565b5f9081526003602052604090205490565b6102736103d0366004612a08565b61130e565b61040d6103e336600461286d565b60046020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b03909416845260208401929092529082015260600161027d565b610273610440366004612852565b60056020525f908152604090205481565b61027361045f366004612852565b60066020525f908152604090205481565b61027361047e366004612a97565b611415565b61049661049136600461286d565b611510565b604051901515815260200161027d565b6102736104b436600461286d565b5f9081526003602052604090206005015490565b6102736104d6366004612b14565b61156b565b6102736104e936600461286d565b5f9081526003602052604090206004015490565b61049661050b36600461286d565b5f9081526003602052604090206002015460ff1690565b6105a361053036600461286d565b600360208190525f91825260409091208054600182015460028301549383015460048401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff90931694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e08501526101008401919091526101208301526101408201526101600161027d565b61063961061836600461286d565b5f90815260036020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff909116815260200161027d565b61063961065c36600461286d565b5f90815260036020526040902060010154600160c01b900463ffffffff1690565b61027361068b36600461286d565b611600565b61063961069e36600461286d565b5f90815260036020526040902060010154600160e01b900463ffffffff1690565b61024b6106cd366004612b4d565b61163e565b6102736106e036600461286d565b60016020525f908152604090205481565b61024b6106ff366004612b81565b611887565b610273610712366004612bdb565b611900565b610496610725366004612725565b611a06565b61024b61073836600461286d565b611ba3565b61024b61074b366004612c62565b611ca5565b6007546102e7906001600160a01b031681565b61024b610771366004612c97565b611ecc565b8461078081611510565b61079d57604051636030e5f560e11b815260040160405180910390fd5b84515f036107be576040516312fdb46960e31b815260040160405180910390fd5b5f8681526004602081815260408084208054600190910154600390935290842060058101549301546001600160a01b0390911693919290825b8a5181101561097a57610871838c838151811061081657610816612ccd565b60200260200101518a848151811061083057610830612ccd565b60200260200101518c858151811061084a5761084a612ccd565b60200260200101518e868151811061086457610864612ccd565b6020026020010151611fed565b61088e576040516303a479f160e11b815260040160405180910390fd5b6108988585612cf5565b93506108f48c8386898e86815181106108b3576108b3612ccd565b60200260200101518e87815181106108cd576108cd612ccd565b60200260200101518e88815181106108e7576108e7612ccd565b602002602001015161202a565b809750819550505088818151811061090e5761090e612ccd565b6020026020010151945060035f8d81526020019081526020015f2060060154851461094b5761093e602886612d0e565b6109489086612d2d565b94505b8a818151811061095d5761095d612ccd565b60200260200101519250808061097290612d40565b9150506107f7565b82156109bc5761098b8c87866120f2565b5f8c815260046020526040902080546001600160a01b0319166001600160a01b0388161781556001018590556109f7565b6109d08c876109cb8888612cf5565b6120f2565b5f8c815260046020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260036020526040909920600501989098555050505050505050565b5f828152600360205260408120600101548391600160c01b90910463ffffffff169003610a585760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615610a8a576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590610ac357504263ffffffff168163ffffffff1611155b15610ae15760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590610b1957504263ffffffff168163ffffffff16115b15610b375760405163079994c560e31b815260040160405180910390fd5b610b4084612172565b5f8581526003602081905260409091200154610b5d908590612cf5565b5f868152600360208190526040918290200182905551339187917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab6691610bae91899190918252602082015260400190565b60405180910390a35050505050565b5f85610bc881611510565b610be557604051636030e5f560e11b815260040160405180910390fd5b5f878152600360205260409020548614610c1257604051630763e45d60e41b815260040160405180910390fd5b5f878152600360205260409020600101546001600160a01b03868116911614610c4e5760405163f089a18560e01b815260040160405180910390fd5b5f8781526003602052604090206001015463ffffffff600160c01b90910481169085161115610c9057604051633f61762b60e01b815260040160405180910390fd5b5f87815260036020526040902060060154831115610cc157604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600360205250604090206004015490565b6007546001600160a01b031615610d0557604051635c4e8df160e11b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b5f805b8751821015610fc5575f888381518110610d4657610d46612ccd565b602002602001015190505f888481518110610d6357610d63612ccd565b602002602001015190505f816001600160401b03811115610d8657610d866125df565b604051908082528060200260200182016040528015610daf578160200160208202803683370190505b5090505f826001600160401b03811115610dcb57610dcb6125df565b604051908082528060200260200182016040528015610df4578160200160208202803683370190505b5090505f836001600160401b03811115610e1057610e106125df565b604051908082528060200260200182016040528015610e39578160200160208202803683370190505b5090505f846001600160401b03811115610e5557610e556125df565b604051908082528060200260200182016040528015610e7e578160200160208202803683370190505b5090505f5b85811015610f9e578c8881518110610e9d57610e9d612ccd565b6020026020010151858281518110610eb757610eb7612ccd565b6020026020010181815250508b8881518110610ed557610ed5612ccd565b6020026020010151848281518110610eef57610eef612ccd565b60200260200101906001600160a01b031690816001600160a01b0316815250508a8881518110610f2157610f21612ccd565b6020026020010151838281518110610f3b57610f3b612ccd565b602002602001018181525050898881518110610f5957610f59612ccd565b6020026020010151828281518110610f7357610f73612ccd565b602090810291909101015287610f8881612d40565b9850508080610f9690612d40565b915050610e83565b610fab8786868686610776565b505050505050508180610fbd90612d40565b925050610d2a565b610fcd6111f8565b5050505050505050565b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036110175760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611049576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061108257504263ffffffff168163ffffffff1611155b156110a05760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff1680158015906110d857504263ffffffff168163ffffffff16115b156110f65760405163079994c560e31b815260040160405180910390fd5b8684805f0361111857604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611167575f838152600360205260409020600701548210156111625760405163291784d560e01b815260040160405180910390fd5b611192565b611172816002612d58565b821015611192576040516328eecafb60e21b815260040160405180910390fd5b898880156111cb575f828152600360205260409020600601548110156111cb5760405163f6631e6760e01b815260040160405180910390fd5b6111d489612172565b6111e08c8c338c61226a565b6111ea8c8c612331565b505050505050505050505050565b335f818152600660205260408082208054929055600754905163a9059cbb60e01b815260048101939093526024830182905290916001600160a01b039091169063a9059cbb906044016020604051808303815f875af115801561125d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112819190612d6f565b611289575f80fd5b60405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b335f81815260056020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f61131882612172565b5f8981526001602052604081205490036113455760405163bbbf712b60e01b815260040160405180910390fd5b5f89868a60405160200161135b93929190612db0565b6040516020818303038152906040528051906020012090505f8189898730338b6040516020016113919796959493929190612de8565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8e8e8e8e8e8e426040516113f09796959493929190612e6c565b60405180910390a461140781838b8b8b8a8a612397565b9a9950505050505050505050565b5f8681526001602052604081205481036114425760405163bbbf712b60e01b815260040160405180910390fd5b5f87848860405160200161145893929190612db0565b6040516020818303038152906040528051906020012090505f8187875f30338960405160200161148e9796959493929190612de8565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516114ed9796959493929190612e6c565b60405180910390a461150481838989895f80612397565b98975050505050505050565b5f8181526003602052604081206001810154600290910154600160e01b90910463ffffffff169060ff1615801561154c57505f8163ffffffff16115b801561156457504263ffffffff168163ffffffff1611155b9392505050565b5f80548082526001602090815260408084204390555161158d91859101612ebb565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906115e3908790612ed6565b60405180910390a36115f6816001612cf5565b5f5590505b919050565b5f8161160b81611510565b61162857604051636030e5f560e11b815260040160405180910390fd5b50505f9081526003602052604090206004015490565b5f858152600360205260408120600101548691600160c01b90910463ffffffff16900361167e5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff16156116b0576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff1680158015906116e957504263ffffffff168163ffffffff1611155b156117075760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061173f57504263ffffffff168163ffffffff16115b1561175d5760405163079994c560e31b815260040160405180910390fd5b8784805f0361177f57604051635de374cf60e11b815260040160405180910390fd5b5f82815260036020526040812060060154908190036117ce575f838152600360205260409020600701548210156117c95760405163291784d560e01b815260040160405180910390fd5b6117f9565b6117d9816002612d58565b8210156117f9576040516328eecafb60e21b815260040160405180910390fd5b8a898015611832575f828152600360205260409020600601548110156118325760405163f6631e6760e01b815260040160405180910390fd5b61183b89612172565b6001600160a01b038a1661186257604051630ca6549f60e11b815260040160405180910390fd5b61186e8d8d8c8c61226a565b6118788d8d612331565b50505050505050505050505050565b5f86815260036020526040902060058101546006909101546118ae91908590859085611fed565b6118cb576040516303a479f160e11b815260040160405180910390fd5b5f8681526003602052604081206004015486146118e857846118ea565b815b90506118f7878783611ecc565b50505050505050565b5f61190a82612172565b5f8881526001602052604081205490036119375760405163bbbf712b60e01b815260040160405180910390fd5b5f88858960405160200161194d93929190612db0565b6040516020818303038152906040528051906020012090505f8188885f30338a6040516020016119839796959493929190612de8565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d426040516119e29796959493929190612e6c565b60405180910390a46119f981838a8a8a5f8a612397565b9998505050505050505050565b5f858152600360205260408120600101548690600160c01b900463ffffffff168203611a455760405163a42db76b60e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611a7e57504263ffffffff168163ffffffff1611155b15611a9c5760405163372900d560e21b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611ad457504263ffffffff168163ffffffff16115b15611af25760405163079994c560e31b815260040160405180910390fd5b5f898152600360205260409020600501548851885181141580611b16575080885114155b80611b22575080875114155b15611b31575f95505050611b97565b5f5b81811015611b8f57611b51838c838151811061081657610816612ccd565b611b60575f9650505050611b97565b8a8181518110611b7257611b72612ccd565b602002602001015192508080611b8790612d40565b915050611b33565b506001955050505b50505095945050505050565b5f8181526003602052604090206001015481906001600160a01b03163314611bde57604051634361661f60e11b815260040160405180910390fd5b5f82815260036020526040902060020154829060ff16611c115760405163f476ed1160e01b815260040160405180910390fd5b5f83815260036020526040902060028101805460ff1916905560010154611c4590600160c01b900463ffffffff1642612ee8565b5f84815260036020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526003602052604090206001015483906001600160a01b03163314611ce057604051634361661f60e11b815260040160405180910390fd5b5f848152600360205260408120600101548591600160c01b90910463ffffffff169003611d205760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611d52576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611d8b57504263ffffffff168163ffffffff1611155b15611da95760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611de157504263ffffffff168163ffffffff16115b15611dff5760405163079994c560e31b815260040160405180910390fd5b86858015611e38575f82815260036020526040902060060154811015611e385760405163f6631e6760e01b815260040160405180910390fd5b5f89815260036020526040902060010154600160e01b900463ffffffff16611e73576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260036020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526003602052604090206001015483906001600160a01b03163314611f0757604051634361661f60e11b815260040160405180910390fd5b5f84815260036020526040902060020154849060ff16611f3a5760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b038316611f61576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600360205260408120600201805460ff19169055611fb49086908690869061226a565b5f8581526003602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f604051602001612007959493929190612f0c565b604051602081830303815290604052805190602001208614905095945050505050565b5f808783036120e3576001600160a01b0386166120a0578495505f60035f8b81526020019081526020015f2060030154118015612065575060015b1561209b57612089898760035f8d81526020019081526020015f20600301546120f2565b5f898152600360208190526040822001555b6120e3565b856001600160a01b0316856001600160a01b0316146120e3575f848810156120c857876120ca565b845b90506120db8a886109cb848c612d2d565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f90815260066020526040902054612115908290612cf5565b6001600160a01b0383165f818152600660205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6906121659085815260200190565b60405180910390a3505050565b805f0361217c5750565b335f9081526006602052604090205480156121d1578181106121b5576121a28282612d2d565b335f908152600660205260409020555050565b6121bf8183612d2d565b335f9081526006602052604081205591505b6007546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015612225573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122499190612d6f565b61226657604051637e3e710960e11b815260040160405180910390fd5b5050565b5f84815260036020908152604080832060050154905161229292879186918891879101612f0c565b6040516020818303038152906040528051906020012090505f8211156122c6575f8581526003602052604090206006018290555b5f8581526003602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a001610bae565b5f828152600360205260409020600481018290556001015461236090600160c01b900463ffffffff1642612ee8565b5f92835260036020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600360205260409020600101548790600160c01b900463ffffffff16156123d8576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036123fe5760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061242857604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b0387161580159061244a5750336001600160a01b03881614155b156124d2576001600160a01b0387165f90815260056020526040902054808210156124885760405163d72564c760e01b815260040160405180910390fd5b6124928183612d2d565b6001600160a01b0389165f908152600660205260409020549092506124b8908290612cf5565b6001600160a01b0389165f90815260066020526040902055505b5f898152600360205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c16179290921716179055801561257e575f89815260036020818152604092839020909101839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b83156125d4575f89815260036020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906125cb9087815260200190565b60405180910390a25b505050505050505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561261b5761261b6125df565b604052919050565b5f6001600160401b0382111561263b5761263b6125df565b5060051b60200190565b5f82601f830112612654575f80fd5b8135602061266961266483612623565b6125f3565b82815260059290921b84018101918181019086841115612687575f80fd5b8286015b848110156126a2578035835291830191830161268b565b509695505050505050565b6001600160a01b03811681146126c1575f80fd5b50565b5f82601f8301126126d3575f80fd5b813560206126e361266483612623565b82815260059290921b84018101918181019086841115612701575f80fd5b8286015b848110156126a2578035612718816126ad565b8352918301918301612705565b5f805f805f60a08688031215612739575f80fd5b8535945060208601356001600160401b0380821115612756575f80fd5b61276289838a01612645565b95506040880135915080821115612777575f80fd5b61278389838a016126c4565b94506060880135915080821115612798575f80fd5b6127a489838a01612645565b935060808801359150808211156127b9575f80fd5b506127c688828901612645565b9150509295509295909350565b5f80604083850312156127e4575f80fd5b50508035926020909101359150565b803563ffffffff811681146115fb575f80fd5b5f805f805f60a0868803121561281a575f80fd5b85359450602086013593506040860135612833816126ad565b9250612841606087016127f3565b949793965091946080013592915050565b5f60208284031215612862575f80fd5b8135611564816126ad565b5f6020828403121561287d575f80fd5b5035919050565b5f805f805f8060c08789031215612899575f80fd5b86356001600160401b03808211156128af575f80fd5b6128bb8a838b01612645565b975060208901359150808211156128d0575f80fd5b6128dc8a838b01612645565b965060408901359150808211156128f1575f80fd5b6128fd8a838b01612645565b95506060890135915080821115612912575f80fd5b61291e8a838b016126c4565b94506080890135915080821115612933575f80fd5b61293f8a838b01612645565b935060a0890135915080821115612954575f80fd5b5061296189828a01612645565b9150509295509295509295565b5f805f8060808587031215612981575f80fd5b5050823594602084013594506040840135936060013592509050565b5f82601f8301126129ac575f80fd5b81356001600160401b038111156129c5576129c56125df565b6129d8601f8201601f19166020016125f3565b8181528460208386010111156129ec575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f80610100898b031215612a20575f80fd5b8835975060208901356001600160401b03811115612a3c575f80fd5b612a488b828c0161299d565b9750506040890135612a59816126ad565b9550612a6760608a016127f3565b9450612a7560808a016127f3565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f8060c08789031215612aac575f80fd5b8635955060208701356001600160401b03811115612ac8575f80fd5b612ad489828a0161299d565b9550506040870135612ae5816126ad565b9350612af3606088016127f3565b9250612b01608088016127f3565b915060a087013590509295509295509295565b5f60208284031215612b24575f80fd5b81356001600160401b03811115612b39575f80fd5b612b458482850161299d565b949350505050565b5f805f805f60a08688031215612b61575f80fd5b8535945060208601359350604086013592506060860135612841816126ad565b5f805f805f8060c08789031215612b96575f80fd5b86359550602087013594506040870135612baf816126ad565b9350606087013592506080870135915060a0870135612bcd816126ad565b809150509295509295509295565b5f805f805f805f60e0888a031215612bf1575f80fd5b8735965060208801356001600160401b03811115612c0d575f80fd5b612c198a828b0161299d565b9650506040880135612c2a816126ad565b9450612c38606089016127f3565b9350612c46608089016127f3565b925060a0880135915060c0880135905092959891949750929550565b5f805f60608486031215612c74575f80fd5b833592506020840135612c86816126ad565b929592945050506040919091013590565b5f805f60608486031215612ca9575f80fd5b83359250602084013591506040840135612cc2816126ad565b809150509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115612d0857612d08612ce1565b92915050565b5f82612d2857634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115612d0857612d08612ce1565b5f60018201612d5157612d51612ce1565b5060010190565b8082028115828204841417612d0857612d08612ce1565b5f60208284031215612d7f575f80fd5b81518015158114611564575f80fd5b5f5b83811015612da8578181015183820152602001612d90565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f8251612dd9816024850160208701612d8e565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f8151808452612e58816020860160208601612d8e565b601f01601f19169290920160200192915050565b87815260e060208201525f612e8460e0830189612e41565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f8251612ecc818460208701612d8e565b9190910192915050565b602081525f6115646020830184612e41565b63ffffffff818116838216019080821115612f0557612f05612ce1565b5092915050565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea2646970667358221220198c532f8bbeb3252036af02681348f3e19645d76d3033c52653e99167f408fb64736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
@@ -109,7 +109,7 @@ abstract contract RealityETHCore_Common is IRealityETHCore_Common, IRealityETHHi
109
109
  /// @dev Template data is only stored in the event logs, but its block number is kept in contract storage.
110
110
  /// @param content The template content
111
111
  /// @return The ID of the newly-created template, which is created sequentially.
112
- function createTemplate(string memory content) public stateAny notFrozen returns (uint256) {
112
+ function createTemplate(string memory content) public virtual stateAny notFrozen returns (uint256) {
113
113
  uint256 id = nextTemplateID;
114
114
  templates[id] = block.number;
115
115
  template_hashes[id] = keccak256(abi.encodePacked(content));
@@ -118,7 +118,15 @@ abstract contract RealityETHCore_Common is IRealityETHCore_Common, IRealityETHHi
118
118
  return id;
119
119
  }
120
120
 
121
- function _askQuestion(bytes32 question_id, bytes32 content_hash, address arbitrator, uint32 timeout, uint32 opening_ts, uint256 min_bond, uint256 tokens) internal stateNotCreated(question_id) notFrozen {
121
+ function _askQuestion(
122
+ bytes32 question_id,
123
+ bytes32 content_hash,
124
+ address arbitrator,
125
+ uint32 timeout,
126
+ uint32 opening_ts,
127
+ uint256 min_bond,
128
+ uint256 tokens
129
+ ) internal virtual stateNotCreated(question_id) notFrozen {
122
130
  // A timeout of 0 makes no sense, and we will use this to check existence
123
131
  if (timeout == 0) revert TimeoutMustBePositive();
124
132
  if (timeout >= 365 days) revert TimeoutMustBeLessThan365Days();
@@ -286,7 +294,7 @@ abstract contract RealityETHCore_Common is IRealityETHCore_Common, IRealityETHHi
286
294
  /// @param addrs Last-to-first, the address of each answerer
287
295
  /// @param bonds Last-to-first, the bond supplied with each answer
288
296
  /// @param answers Last-to-first, each answer supplied
289
- function claimWinnings(bytes32 question_id, bytes32[] memory history_hashes, address[] memory addrs, uint256[] memory bonds, bytes32[] memory answers) public stateFinalized(question_id) {
297
+ function claimWinnings(bytes32 question_id, bytes32[] memory history_hashes, address[] memory addrs, uint256[] memory bonds, bytes32[] memory answers) public stateFinalized(question_id) notFrozen {
290
298
  if (history_hashes.length == 0) revert AtLeastOneHistoryHashEntryMustBeProvided();
291
299
 
292
300
  // These are only set if we split our claim over multiple transactions.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reality.eth/contracts",
3
- "version": "4.0.0-rc.1",
3
+ "version": "4.0.0-rc.2",
4
4
  "description": "Collection of smart contracts for the Realitio fact verification platform",
5
5
  "scripts": {
6
6
  "generate-chains": "node scripts/generate_chains_json.js",