0x60806040526040518060400160405280600a81526020017f54686f7566616e69393900000000000000000000000000000000000000000000815250600090816200004a91906200041d565b506012600160006101000a81548160ff021916908360ff1602179055506040518060400160405280600a81526020017f54686f7566616e6939390000000000000000000000000000000000000000000081525060029081620000ad91906200041d565b50600160009054906101000a900460ff16600a620000cc919062000694565b620186a0620000dc9190620006e5565b600355348015620000ec57600080fd5b50600354600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035460405162000195919062000741565b60405180910390a36200075e565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200022557607f821691505b6020821081036200023b576200023a620001dd565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620002a57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000266565b620002b1868362000266565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620002fe620002f8620002f284620002c9565b620002d3565b620002c9565b9050919050565b6000819050919050565b6200031a83620002dd565b62000332620003298262000305565b84845462000273565b825550505050565b600090565b620003496200033a565b620003568184846200030f565b505050565b5b818110156200037e57620003726000826200033f565b6001810190506200035c565b5050565b601f821115620003cd57620003978162000241565b620003a28462000256565b81016020851015620003b2578190505b620003ca620003c18562000256565b8301826200035b565b50505b505050565b600082821c905092915050565b6000620003f260001984600802620003d2565b1980831691505092915050565b60006200040d8383620003df565b9150826002028217905092915050565b6200042882620001a3565b67ffffffffffffffff811115620004445762000443620001ae565b5b6200045082546200020c565b6200045d82828562000382565b600060209050601f83116001811462000495576000841562000480578287015190505b6200048c8582620003ff565b865550620004fc565b601f198416620004a58662000241565b60005b82811015620004cf57848901518255600182019150602085019450602081019050620004a8565b86831015620004ef5784890151620004eb601f891682620003df565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000592578086048111156200056a576200056962000504565b5b60018516156200057a5780820291505b80810290506200058a8562000533565b94506200054a565b94509492505050565b600082620005ad576001905062000680565b81620005bd576000905062000680565b8160018114620005d65760028114620005e15762000617565b600191505062000680565b60ff841115620005f657620005f562000504565b5b8360020a91508482111562000610576200060f62000504565b5b5062000680565b5060208310610133831016604e8410600b8410161715620006515782820a9050838111156200064b576200064a62000504565b5b62000680565b62000660848484600162000540565b925090508184048111156200067a576200067962000504565b5b81810290505b9392505050565b600060ff82169050919050565b6000620006a182620002c9565b9150620006ae8362000687565b9250620006dd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200059b565b905092915050565b6000620006f282620002c9565b9150620006ff83620002c9565b92508282026200070f81620002c9565b9150828204841483151762000729576200072862000504565b5b5092915050565b6200073b81620002c9565b82525050565b600060208201905062000758600083018462000730565b92915050565b610ecd806200076e6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806342966c681161005b57806342966c681461010357806370a082311461011f57806395d89b411461014f578063a9059cbb1461016d57610088565b806306fdde031461008d57806318160ddd146100ab578063313ce567146100c957806340c10f19146100e7575b600080fd5b61009561019d565b6040516100a291906108da565b60405180910390f35b6100b361022b565b6040516100c09190610915565b60405180910390f35b6100d1610231565b6040516100de919061094c565b60405180910390f35b61010160048036038101906100fc91906109f6565b610244565b005b61011d60048036038101906101189190610a36565b61038c565b005b61013960048036038101906101349190610a63565b6104e6565b6040516101469190610915565b60405180910390f35b61015761052f565b60405161016491906108da565b60405180910390f35b610187600480360381019061018291906109f6565b6105bd565b6040516101949190610aab565b60405180910390f35b600080546101aa90610af5565b80601f01602080910402602001604051908101604052809291908181526020018280546101d690610af5565b80156102235780601f106101f857610100808354040283529160200191610223565b820191906000526020600020905b81548152906001019060200180831161020657829003601f168201915b505050505081565b60035481565b600160009054906101000a900460ff1681565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036102b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102aa90610b98565b60405180910390fd5b80600360008282546102c59190610be7565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461031b9190610be7565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516103809190610915565b60405180910390a35050565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561040e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040590610c8d565b60405180910390fd5b80600360008282546104209190610cad565b9250508190555080600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104769190610cad565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516104db9190610915565b60405180910390a350565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6002805461053c90610af5565b80601f016020809104026020016040519081016040528092919081815260200182805461056890610af5565b80156105b55780601f1061058a576101008083540402835291602001916105b5565b820191906000526020600020905b81548152906001019060200180831161059857829003601f168201915b505050505081565b60006105ca3384846105d4565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063a90610d53565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036106b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a990610de5565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115610734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072b90610e77565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107839190610cad565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107d99190610be7565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161083d9190610915565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610884578082015181840152602081019050610869565b60008484015250505050565b6000601f19601f8301169050919050565b60006108ac8261084a565b6108b68185610855565b93506108c6818560208601610866565b6108cf81610890565b840191505092915050565b600060208201905081810360008301526108f481846108a1565b905092915050565b6000819050919050565b61090f816108fc565b82525050565b600060208201905061092a6000830184610906565b92915050565b600060ff82169050919050565b61094681610930565b82525050565b6000602082019050610961600083018461093d565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006109978261096c565b9050919050565b6109a78161098c565b81146109b257600080fd5b50565b6000813590506109c48161099e565b92915050565b6109d3816108fc565b81146109de57600080fd5b50565b6000813590506109f0816109ca565b92915050565b60008060408385031215610a0d57610a0c610967565b5b6000610a1b858286016109b5565b9250506020610a2c858286016109e1565b9150509250929050565b600060208284031215610a4c57610a4b610967565b5b6000610a5a848285016109e1565b91505092915050565b600060208284031215610a7957610a78610967565b5b6000610a87848285016109b5565b91505092915050565b60008115159050919050565b610aa581610a90565b82525050565b6000602082019050610ac06000830184610a9c565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610b0d57607f821691505b602082108103610b2057610b1f610ac6565b5b50919050565b7f54686f7566616e6939393a206d696e7420746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000610b82602483610855565b9150610b8d82610b26565b604082019050919050565b60006020820190508181036000830152610bb181610b75565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610bf2826108fc565b9150610bfd836108fc565b9250828201905080821115610c1557610c14610bb8565b5b92915050565b7f54686f7566616e6939393a206275726e20616d6f756e7420657863656564732060008201527f62616c616e636500000000000000000000000000000000000000000000000000602082015250565b6000610c77602783610855565b9150610c8282610c1b565b604082019050919050565b60006020820190508181036000830152610ca681610c6a565b9050919050565b6000610cb8826108fc565b9150610cc3836108fc565b9250828203905081811115610cdb57610cda610bb8565b5b92915050565b7f54686f7566616e6939393a207472616e736665722066726f6d20746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000610d3d602a83610855565b9150610d4882610ce1565b604082019050919050565b60006020820190508181036000830152610d6c81610d30565b9050919050565b7f54686f7566616e6939393a207472616e7366657220746f20746865207a65726f60008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b6000610dcf602883610855565b9150610dda82610d73565b604082019050919050565b60006020820190508181036000830152610dfe81610dc2565b9050919050565b7f54686f7566616e6939393a207472616e7366657220616d6f756e74206578636560008201527f6564732062616c616e6365000000000000000000000000000000000000000000602082015250565b6000610e61602b83610855565b9150610e6c82610e05565b604082019050919050565b60006020820190508181036000830152610e9081610e54565b905091905056fea2646970667358221220fef4d39e3b2a0b7f038683ddae2996ab8e08129287efddf921feb356ee3c4c7a64736f6c63430008120033