0x60806040526040518060400160405280600c81526020017f49726f6e6d616e546f6b656e0000000000000000000000000000000000000000815250600090816200004a919062000400565b506040518060400160405280600381526020017f494d5400000000000000000000000000000000000000000000000000000000008152506001908162000091919062000400565b506012600260006101000a81548160ff021916908360ff160217905550348015620000bb57600080fd5b506c0c9f2c9cd04674edea40000000600381905550600354600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600354604051620001789190620004f8565b60405180910390a362000515565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200020857607f821691505b6020821081036200021e576200021d620001c0565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620002887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000249565b62000294868362000249565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620002e1620002db620002d584620002ac565b620002b6565b620002ac565b9050919050565b6000819050919050565b620002fd83620002c0565b620003156200030c82620002e8565b84845462000256565b825550505050565b600090565b6200032c6200031d565b62000339818484620002f2565b505050565b5b8181101562000361576200035560008262000322565b6001810190506200033f565b5050565b601f821115620003b0576200037a8162000224565b620003858462000239565b8101602085101562000395578190505b620003ad620003a48562000239565b8301826200033e565b50505b505050565b600082821c905092915050565b6000620003d560001984600802620003b5565b1980831691505092915050565b6000620003f08383620003c2565b9150826002028217905092915050565b6200040b8262000186565b67ffffffffffffffff81111562000427576200042662000191565b5b620004338254620001ef565b6200044082828562000365565b600060209050601f83116001811462000478576000841562000463578287015190505b6200046f8582620003e2565b865550620004df565b601f198416620004888662000224565b60005b82811015620004b2578489015182556001820191506020850194506020810190506200048b565b86831015620004d25784890151620004ce601f891682620003c2565b8355505b6001600288020188555050505b505050505050565b620004f281620002ac565b82525050565b60006020820190506200050f6000830184620004e7565b92915050565b61105280620005256000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461013457806370a082311461015257806395d89b4114610182578063a9059cbb146101a0578063dd62ed3e146101d057610093565b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100e657806323b872dd14610104575b600080fd5b6100a0610200565b6040516100ad9190610a15565b60405180910390f35b6100d060048036038101906100cb9190610ad0565b61028e565b6040516100dd9190610b2b565b60405180910390f35b6100ee6102a5565b6040516100fb9190610b55565b60405180910390f35b61011e60048036038101906101199190610b70565b6102af565b60405161012b9190610b2b565b60405180910390f35b61013c610359565b6040516101499190610bdf565b60405180910390f35b61016c60048036038101906101679190610bfa565b61036c565b6040516101799190610b55565b60405180910390f35b61018a6103b5565b6040516101979190610a15565b60405180910390f35b6101ba60048036038101906101b59190610ad0565b610443565b6040516101c79190610b2b565b60405180910390f35b6101ea60048036038101906101e59190610c27565b61045a565b6040516101f79190610b55565b60405180910390f35b6000805461020d90610c96565b80601f016020809104026020016040519081016040528092919081815260200182805461023990610c96565b80156102865780601f1061025b57610100808354040283529160200191610286565b820191906000526020600020905b81548152906001019060200180831161026957829003601f168201915b505050505081565b600061029b3384846104e1565b6001905092915050565b6000600354905090565b60006102bc8484846106aa565b61034e843384600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546103499190610cf6565b6104e1565b600190509392505050565b600260009054906101000a900460ff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600180546103c290610c96565b80601f01602080910402602001604051908101604052809291908181526020018280546103ee90610c96565b801561043b5780601f106104105761010080835404028352916020019161043b565b820191906000526020600020905b81548152906001019060200180831161041e57829003601f168201915b505050505081565b60006104503384846106aa565b6001905092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610550576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054790610d76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036105bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690610de2565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161069d9190610b55565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610719576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071090610e4e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077f90610eba565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561080a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080190610f26565b60405180910390fd5b60008190503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361085d57606480836108509190610f46565b61085a9190610fb7565b90505b6000818361086b9190610cf6565b905082600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546108bc9190610cf6565b9250508190555080600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109129190610fe8565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516109769190610b55565b60405180910390a35050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156109bf5780820151818401526020810190506109a4565b60008484015250505050565b6000601f19601f8301169050919050565b60006109e782610985565b6109f18185610990565b9350610a018185602086016109a1565b610a0a816109cb565b840191505092915050565b60006020820190508181036000830152610a2f81846109dc565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610a6782610a3c565b9050919050565b610a7781610a5c565b8114610a8257600080fd5b50565b600081359050610a9481610a6e565b92915050565b6000819050919050565b610aad81610a9a565b8114610ab857600080fd5b50565b600081359050610aca81610aa4565b92915050565b60008060408385031215610ae757610ae6610a37565b5b6000610af585828601610a85565b9250506020610b0685828601610abb565b9150509250929050565b60008115159050919050565b610b2581610b10565b82525050565b6000602082019050610b406000830184610b1c565b92915050565b610b4f81610a9a565b82525050565b6000602082019050610b6a6000830184610b46565b92915050565b600080600060608486031215610b8957610b88610a37565b5b6000610b9786828701610a85565b9350506020610ba886828701610a85565b9250506040610bb986828701610abb565b9150509250925092565b600060ff82169050919050565b610bd981610bc3565b82525050565b6000602082019050610bf46000830184610bd0565b92915050565b600060208284031215610c1057610c0f610a37565b5b6000610c1e84828501610a85565b91505092915050565b60008060408385031215610c3e57610c3d610a37565b5b6000610c4c85828601610a85565b9250506020610c5d85828601610a85565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610cae57607f821691505b602082108103610cc157610cc0610c67565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610d0182610a9a565b9150610d0c83610a9a565b9250828203905081811115610d2457610d23610cc7565b5b92915050565b7f417070726f76652066726f6d20746865207a65726f2061646472657373000000600082015250565b6000610d60601d83610990565b9150610d6b82610d2a565b602082019050919050565b60006020820190508181036000830152610d8f81610d53565b9050919050565b7f417070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b6000610dcc601b83610990565b9150610dd782610d96565b602082019050919050565b60006020820190508181036000830152610dfb81610dbf565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b6000610e38601e83610990565b9150610e4382610e02565b602082019050919050565b60006020820190508181036000830152610e6781610e2b565b9050919050565b7f5472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b6000610ea4601c83610990565b9150610eaf82610e6e565b602082019050919050565b60006020820190508181036000830152610ed381610e97565b9050919050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000610f10601483610990565b9150610f1b82610eda565b602082019050919050565b60006020820190508181036000830152610f3f81610f03565b9050919050565b6000610f5182610a9a565b9150610f5c83610a9a565b9250828202610f6a81610a9a565b91508282048414831517610f8157610f80610cc7565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610fc282610a9a565b9150610fcd83610a9a565b925082610fdd57610fdc610f88565b5b828204905092915050565b6000610ff382610a9a565b9150610ffe83610a9a565b925082820190508082111561101657611015610cc7565b5b9291505056fea2646970667358221220afce1ddc56f08305c18a8fef716216f7b7fde7bf379d433f2bd694d3eb39583e64736f6c63430008120033