0x608060405234801561001057600080fd5b50610f28806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063cf35bdd014610051578063eafe7a7414610084578063f7e56b88146100a2578063fa62ee8d146100be575b600080fd5b61006b600480360381019061006691906105ba565b6100da565b60405161007b94939291906106c7565b60405180910390f35b61008c6101b2565b6040516100999190610713565b60405180910390f35b6100bc60048036038101906100b79190610863565b6101b8565b005b6100d860048036038101906100d391906108eb565b61036e565b005b60016020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020180546101299061095a565b80601f01602080910402602001604051908101604052809291908181526020018280546101559061095a565b80156101a25780601f10610177576101008083540402835291602001916101a2565b820191906000526020600020905b81548152906001019060200180831161018557829003601f168201915b5050505050908060030154905084565b60005481565b60008251116101fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101f3906109d7565b60405180910390fd5b6000811161023f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023690610a69565b60405180910390fd5b60008081548092919061025190610ab8565b9190505550604051806080016040528060005481526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281525060016000805481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020190816103099190610cac565b50606082015181600301559050503373ffffffffffffffffffffffffffffffffffffffff166000547f455795888439928afda88367f77c96605b450a7f72af40ddb5a000e400664c2b8484604051610362929190610d7e565b60405180910390a35050565b600060016000848152602001908152602001600020905060008160000154116103cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c390610dfa565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461045e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045590610e66565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036104cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c490610ed2565b60405180910390fd5b818160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16847fa993eb3a10693085bc7afc1de0202310fbd5992b9e51edd263b198f62f20cdae60405160405180910390a4505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61059781610584565b81146105a257600080fd5b50565b6000813590506105b48161058e565b92915050565b6000602082840312156105d0576105cf61057a565b5b60006105de848285016105a5565b91505092915050565b6105f081610584565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610621826105f6565b9050919050565b61063181610616565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610671578082015181840152602081019050610656565b60008484015250505050565b6000601f19601f8301169050919050565b600061069982610637565b6106a38185610642565b93506106b3818560208601610653565b6106bc8161067d565b840191505092915050565b60006080820190506106dc60008301876105e7565b6106e96020830186610628565b81810360408301526106fb818561068e565b905061070a60608301846105e7565b95945050505050565b600060208201905061072860008301846105e7565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6107708261067d565b810181811067ffffffffffffffff8211171561078f5761078e610738565b5b80604052505050565b60006107a2610570565b90506107ae8282610767565b919050565b600067ffffffffffffffff8211156107ce576107cd610738565b5b6107d78261067d565b9050602081019050919050565b82818337600083830152505050565b6000610806610801846107b3565b610798565b90508281526020810184848401111561082257610821610733565b5b61082d8482856107e4565b509392505050565b600082601f83011261084a5761084961072e565b5b813561085a8482602086016107f3565b91505092915050565b6000806040838503121561087a5761087961057a565b5b600083013567ffffffffffffffff8111156108985761089761057f565b5b6108a485828601610835565b92505060206108b5858286016105a5565b9150509250929050565b6108c881610616565b81146108d357600080fd5b50565b6000813590506108e5816108bf565b92915050565b600080604083850312156109025761090161057a565b5b6000610910858286016105a5565b9250506020610921858286016108d6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061097257607f821691505b6020821081036109855761098461092b565b5b50919050565b7f4173736574206e616d652063616e6e6f7420626520656d707479000000000000600082015250565b60006109c1601a83610642565b91506109cc8261098b565b602082019050919050565b600060208201905081810360008301526109f0816109b4565b9050919050565b7f41737365742076616c7565206d7573742062652067726561746572207468616e60008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000610a53602583610642565b9150610a5e826109f7565b604082019050919050565b60006020820190508181036000830152610a8281610a46565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610ac382610584565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610af557610af4610a89565b5b600182019050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302610b627fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610b25565b610b6c8683610b25565b95508019841693508086168417925050509392505050565b6000819050919050565b6000610ba9610ba4610b9f84610584565b610b84565b610584565b9050919050565b6000819050919050565b610bc383610b8e565b610bd7610bcf82610bb0565b848454610b32565b825550505050565b600090565b610bec610bdf565b610bf7818484610bba565b505050565b5b81811015610c1b57610c10600082610be4565b600181019050610bfd565b5050565b601f821115610c6057610c3181610b00565b610c3a84610b15565b81016020851015610c49578190505b610c5d610c5585610b15565b830182610bfc565b50505b505050565b600082821c905092915050565b6000610c8360001984600802610c65565b1980831691505092915050565b6000610c9c8383610c72565b9150826002028217905092915050565b610cb582610637565b67ffffffffffffffff811115610cce57610ccd610738565b5b610cd8825461095a565b610ce3828285610c1f565b600060209050601f831160018114610d165760008415610d04578287015190505b610d0e8582610c90565b865550610d76565b601f198416610d2486610b00565b60005b82811015610d4c57848901518255600182019150602085019450602081019050610d27565b86831015610d695784890151610d65601f891682610c72565b8355505b6001600288020188555050505b505050505050565b60006040820190508181036000830152610d98818561068e565b9050610da760208301846105e7565b9392505050565b7f417373657420646f6573206e6f74206578697374000000000000000000000000600082015250565b6000610de4601483610642565b9150610def82610dae565b602082019050919050565b60006020820190508181036000830152610e1381610dd7565b9050919050565b7f4e6f7420746865206173736574206f776e657200000000000000000000000000600082015250565b6000610e50601383610642565b9150610e5b82610e1a565b602082019050919050565b60006020820190508181036000830152610e7f81610e43565b9050919050565b7f496e76616c696420726563697069656e74206164647265737300000000000000600082015250565b6000610ebc601983610642565b9150610ec782610e86565b602082019050919050565b60006020820190508181036000830152610eeb81610eaf565b905091905056fea26469706673582212200afd8d1421adec0512364141f8f172976f4798022086a3338b0a4e48f1bb9e9c64736f6c63430008120033