0x60806040526040518060400160405280600681526020017f5343524f4c4c0000000000000000000000000000000000000000000000000000815250600290816200004a91906200038b565b506040518060400160405280600c81526020017f5363726f6c6c20546f6b656e0000000000000000000000000000000000000000815250600390816200009191906200038b565b506012600460006101000a81548160ff021916908360ff160217905550348015620000bb57600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550670de0b6b3a764000060018190555062000472565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200019357607f821691505b602082108103620001a957620001a86200014b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620002137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620001d4565b6200021f8683620001d4565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200026c62000266620002608462000237565b62000241565b62000237565b9050919050565b6000819050919050565b62000288836200024b565b620002a0620002978262000273565b848454620001e1565b825550505050565b600090565b620002b7620002a8565b620002c48184846200027d565b505050565b5b81811015620002ec57620002e0600082620002ad565b600181019050620002ca565b5050565b601f8211156200033b576200030581620001af565b6200031084620001c4565b8101602085101562000320578190505b620003386200032f85620001c4565b830182620002c9565b50505b505050565b600082821c905092915050565b6000620003606000198460080262000340565b1980831691505092915050565b60006200037b83836200034d565b9150826002028217905092915050565b620003968262000111565b67ffffffffffffffff811115620003b257620003b16200011c565b5b620003be82546200017a565b620003cb828285620002f0565b600060209050601f831160018114620004035760008415620003ee578287015190505b620003fa85826200036d565b8655506200046a565b601f1984166200041386620001af565b60005b828110156200043d5784890151825560018201915060208501945060208101905062000416565b868310156200045d578489015162000459601f8916826200034d565b8355505b6001600288020188555050505b505050505050565b610fc380620004826000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806342966c681161006657806342966c681461015d57806370a082311461018d5780638da5cb5b146101bd57806395d89b41146101db578063a9059cbb146101f95761009e565b806306fdde03146100a357806318160ddd146100c157806327e235e3146100df578063313ce5671461010f57806340c10f191461012d575b600080fd5b6100ab610229565b6040516100b89190610aaa565b60405180910390f35b6100c96102b7565b6040516100d69190610ae5565b60405180910390f35b6100f960048036038101906100f49190610b63565b6102bd565b6040516101069190610ae5565b60405180910390f35b6101176102d5565b6040516101249190610bac565b60405180910390f35b61014760048036038101906101429190610bf3565b6102e8565b6040516101549190610c4e565b60405180910390f35b61017760048036038101906101729190610c69565b61049b565b6040516101849190610c4e565b60405180910390f35b6101a760048036038101906101a29190610b63565b6106cf565b6040516101b49190610ae5565b60405180910390f35b6101c5610718565b6040516101d29190610ca5565b60405180910390f35b6101e361073c565b6040516101f09190610aaa565b60405180910390f35b610213600480360381019061020e9190610bf3565b6107ca565b6040516102209190610c4e565b60405180910390f35b6003805461023690610cef565b80601f016020809104026020016040519081016040528092919081815260200182805461026290610cef565b80156102af5780601f10610284576101008083540402835291602001916102af565b820191906000526020600020905b81548152906001019060200180831161029257829003601f168201915b505050505081565b60015481565b60056020528060005260406000206000915090505481565b600460009054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161037090610d92565b60405180910390fd5b600082116103bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103b390610dfe565b60405180910390fd5b81600160008282546103ce9190610e4d565b9250508190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104249190610e4d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516104899190610ae5565b60405180910390a36001905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461052c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052390610d92565b60405180910390fd5b6000821161056f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056690610dfe565b60405180910390fd5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156105f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e890610ecd565b60405180910390fd5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106409190610eed565b9250508190555081600160008282546106599190610eed565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106be9190610ae5565b60405180910390a360019050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002805461074990610cef565b80601f016020809104026020016040519081016040528092919081815260200182805461077590610cef565b80156107c25780601f10610797576101008083540402835291602001916107c2565b820191906000526020600020905b8154815290600101906020018083116107a557829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361083a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083190610f6d565b60405180910390fd5b6000821161087d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087490610dfe565b60405180910390fd5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156108ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f690610ecd565b60405180910390fd5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461094e9190610eed565b9250508190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109a49190610e4d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a089190610ae5565b60405180910390a36001905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610a54578082015181840152602081019050610a39565b60008484015250505050565b6000601f19601f8301169050919050565b6000610a7c82610a1a565b610a868185610a25565b9350610a96818560208601610a36565b610a9f81610a60565b840191505092915050565b60006020820190508181036000830152610ac48184610a71565b905092915050565b6000819050919050565b610adf81610acc565b82525050565b6000602082019050610afa6000830184610ad6565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b3082610b05565b9050919050565b610b4081610b25565b8114610b4b57600080fd5b50565b600081359050610b5d81610b37565b92915050565b600060208284031215610b7957610b78610b00565b5b6000610b8784828501610b4e565b91505092915050565b600060ff82169050919050565b610ba681610b90565b82525050565b6000602082019050610bc16000830184610b9d565b92915050565b610bd081610acc565b8114610bdb57600080fd5b50565b600081359050610bed81610bc7565b92915050565b60008060408385031215610c0a57610c09610b00565b5b6000610c1885828601610b4e565b9250506020610c2985828601610bde565b9150509250929050565b60008115159050919050565b610c4881610c33565b82525050565b6000602082019050610c636000830184610c3f565b92915050565b600060208284031215610c7f57610c7e610b00565b5b6000610c8d84828501610bde565b91505092915050565b610c9f81610b25565b82525050565b6000602082019050610cba6000830184610c96565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610d0757607f821691505b602082108103610d1a57610d19610cc0565b5b50919050565b7f536f6c6f20656c2070726f706965746172696f207075656465207265616c697a60008201527f6172206573746120616363696f6e000000000000000000000000000000000000602082015250565b6000610d7c602e83610a25565b9150610d8782610d20565b604082019050919050565b60006020820190508181036000830152610dab81610d6f565b9050919050565b7f4c612063616e7469646164206465626520736572206d61796f72207175652030600082015250565b6000610de8602083610a25565b9150610df382610db2565b602082019050919050565b60006020820190508181036000830152610e1781610ddb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610e5882610acc565b9150610e6383610acc565b9250828201905080821115610e7b57610e7a610e1e565b5b92915050565b7f4e6f207469656e657320737566696369656e74657320746f6b656e7300000000600082015250565b6000610eb7601c83610a25565b9150610ec282610e81565b602082019050919050565b60006020820190508181036000830152610ee681610eaa565b9050919050565b6000610ef882610acc565b9150610f0383610acc565b9250828203905081811115610f1b57610f1a610e1e565b5b92915050565b7f456c2064657374696e61746172696f206e6f2070756564652073657220300000600082015250565b6000610f57601e83610a25565b9150610f6282610f21565b602082019050919050565b60006020820190508181036000830152610f8681610f4a565b905091905056fea264697066735822122054b1b4fe9e18989ac2a0881587e24d3ffa2e58d832a70ea59990cf97d39a17f464736f6c63430008120033