0x60806040526040518060400160405280600881526020017f54657374436f696e000000000000000000000000000000000000000000000000815250600090816200004a919062000388565b506040518060400160405280600281526020017f54430000000000000000000000000000000000000000000000000000000000008152506001908162000091919062000388565b506000600260006101000a81548160ff021916908360ff16021790555061077f600355348015620000c157600080fd5b50600354600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200046f565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200019057607f821691505b602082108103620001a657620001a562000148565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620002107fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620001d1565b6200021c8683620001d1565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000269620002636200025d8462000234565b6200023e565b62000234565b9050919050565b6000819050919050565b620002858362000248565b6200029d620002948262000270565b848454620001de565b825550505050565b600090565b620002b4620002a5565b620002c18184846200027a565b505050565b5b81811015620002e957620002dd600082620002aa565b600181019050620002c7565b5050565b601f82111562000338576200030281620001ac565b6200030d84620001c1565b810160208510156200031d578190505b620003356200032c85620001c1565b830182620002c6565b50505b505050565b600082821c905092915050565b60006200035d600019846008026200033d565b1980831691505092915050565b60006200037883836200034a565b9150826002028217905092915050565b62000393826200010e565b67ffffffffffffffff811115620003af57620003ae62000119565b5b620003bb825462000177565b620003c8828285620002ed565b600060209050601f831160018114620004005760008415620003eb578287015190505b620003f785826200036a565b86555062000467565b601f1984166200041086620001ac565b60005b828110156200043a5784890151825560018201915060208501945060208101905062000413565b868310156200045a578489015162000456601f8916826200034a565b8355505b6001600288020188555050505b505050505050565b610cf5806200047f6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461013457806370a082311461015257806395d89b4114610182578063a9059cbb146101a0578063dd62ed3e146101d057610093565b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100e657806323b872dd14610104575b600080fd5b6100a0610200565b6040516100ad919061089e565b60405180910390f35b6100d060048036038101906100cb9190610959565b61028e565b6040516100dd91906109b4565b60405180910390f35b6100ee6102a5565b6040516100fb91906109de565b60405180910390f35b61011e600480360381019061011991906109f9565b6102ab565b60405161012b91906109b4565b60405180910390f35b61013c610496565b6040516101499190610a68565b60405180910390f35b61016c60048036038101906101679190610a83565b6104a9565b60405161017991906109de565b60405180910390f35b61018a6104c1565b604051610197919061089e565b60405180910390f35b6101ba60048036038101906101b59190610959565b61054f565b6040516101c791906109b4565b60405180910390f35b6101ea60048036038101906101e59190610ab0565b6105e8565b6040516101f791906109de565b60405180910390f35b6000805461020d90610b1f565b80601f016020809104026020016040519081016040528092919081815260200182805461023990610b1f565b80156102865780601f1061025b57610100808354040283529160200191610286565b820191906000526020600020905b81548152906001019060200180831161026957829003601f168201915b505050505081565b600061029b33848461060d565b6001905092915050565b60035481565b600081600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561032f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161032690610b9c565b60405180910390fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156103ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e590610c08565b60405180910390fd5b6103f98484846106f8565b61048b843384600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546104869190610c57565b61060d565b600190509392505050565b600260009054906101000a900460ff1681565b60046020528060005260406000206000915090505481565b600180546104ce90610b1f565b80601f01602080910402602001604051908101604052809291908181526020018280546104fa90610b1f565b80156105475780601f1061051c57610100808354040283529160200191610547565b820191906000526020600020905b81548152906001019060200180831161052a57829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156105d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ca90610b9c565b60405180910390fd5b6105de3384846106f8565b6001905092915050565b6005602052816000526040600020602052806000526040600020600091509150505481565b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516106eb91906109de565b60405180910390a3505050565b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107479190610c57565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461079d9190610c8b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161080191906109de565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561084857808201518184015260208101905061082d565b60008484015250505050565b6000601f19601f8301169050919050565b60006108708261080e565b61087a8185610819565b935061088a81856020860161082a565b61089381610854565b840191505092915050565b600060208201905081810360008301526108b88184610865565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006108f0826108c5565b9050919050565b610900816108e5565b811461090b57600080fd5b50565b60008135905061091d816108f7565b92915050565b6000819050919050565b61093681610923565b811461094157600080fd5b50565b6000813590506109538161092d565b92915050565b600080604083850312156109705761096f6108c0565b5b600061097e8582860161090e565b925050602061098f85828601610944565b9150509250929050565b60008115159050919050565b6109ae81610999565b82525050565b60006020820190506109c960008301846109a5565b92915050565b6109d881610923565b82525050565b60006020820190506109f360008301846109cf565b92915050565b600080600060608486031215610a1257610a116108c0565b5b6000610a208682870161090e565b9350506020610a318682870161090e565b9250506040610a4286828701610944565b9150509250925092565b600060ff82169050919050565b610a6281610a4c565b82525050565b6000602082019050610a7d6000830184610a59565b92915050565b600060208284031215610a9957610a986108c0565b5b6000610aa78482850161090e565b91505092915050565b60008060408385031215610ac757610ac66108c0565b5b6000610ad58582860161090e565b9250506020610ae68582860161090e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610b3757607f821691505b602082108103610b4a57610b49610af0565b5b50919050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000610b86601483610819565b9150610b9182610b50565b602082019050919050565b60006020820190508181036000830152610bb581610b79565b9050919050565b7f4e6f7420656e6f75676820616c6c6f77616e6365000000000000000000000000600082015250565b6000610bf2601483610819565b9150610bfd82610bbc565b602082019050919050565b60006020820190508181036000830152610c2181610be5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610c6282610923565b9150610c6d83610923565b9250828203905081811115610c8557610c84610c28565b5b92915050565b6000610c9682610923565b9150610ca183610923565b9250828201905080821115610cb957610cb8610c28565b5b9291505056fea26469706673582212207e81ae1a0f014892c6cacad167367ff8a683fd876604b2308fd98cc73d6fb6c164736f6c63430008120033