0x60806040525f5f5f6101000a81548160ff0219169083151502179055503480156026575f5ffd5b50335f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611092806100745f395ff3fe608060405234801561000f575f5ffd5b50600436106100cd575f3560e01c8063987085271161008a578063cc49b06a11610064578063cc49b06a1461025b578063de58ed4a1461028b578063e091e90f146102bb578063f2fde38b146102eb576100cd565b806398708527146101cb578063c5cad9fb146101fb578063c5fbfea81461022b576100cd565b8063045dfbf5146100d15780633b111c25146101015780635c3524e11461011d578063720493491461014d5780638da5cb5b1461017d5780638ea7e2aa1461019b575b5f5ffd5b6100eb60048036038101906100e69190610832565b610307565b6040516100f8919061086c565b60405180910390f35b61011b600480360381019061011691906108b8565b61037e565b005b61013760048036038101906101329190610a67565b610528565b6040516101449190610ae2565b60405180910390f35b61016760048036038101906101629190610832565b610534565b6040516101749190610b0a565b60405180910390f35b61018561053e565b604051610192919061086c565b60405180910390f35b6101b560048036038101906101b09190610b23565b610563565b6040516101c29190610b0a565b60405180910390f35b6101e560048036038101906101e09190610b73565b61056f565b6040516101f29190610c23565b60405180910390f35b61021560048036038101906102109190610c43565b6105b0565b6040516102229190610ae2565b60405180910390f35b61024560048036038101906102409190610caf565b6105bc565b6040516102529190610c23565b60405180910390f35b61027560048036038101906102709190610cf6565b6105fb565b6040516102829190610c23565b60405180910390f35b6102a560048036038101906102a09190610d62565b61063c565b6040516102b29190610ae2565b60405180910390f35b6102d560048036038101906102d09190610da0565b610647565b6040516102e29190610c23565b60405180910390f35b61030560048036038101906103009190610832565b610687565b005b5f5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036d90610e44565b60405180910390fd5b5f9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036103ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e390610eac565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1682836040516024016104169190610ae2565b6040516020818303038152906040527fa6b206bf000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516104a09190610f0e565b5f6040518083038185875af1925050503d805f81146104da576040519150601f19603f3d011682016040523d82523d5f602084013e6104df565b606091505b5050905080610523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051a90610f6e565b60405180910390fd5b505050565b5f602a90509392505050565b5f60019050919050565b5f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600190509392505050565b60606040518060400160405280600781526020017f537563636573730000000000000000000000000000000000000000000000000081525090509392505050565b5f602a90509392505050565b60606040518060400160405280600781526020017f53756363657373000000000000000000000000000000000000000000000000008152509050919050565b60606040518060400160405280600781526020017f537563636573730000000000000000000000000000000000000000000000000081525090509392505050565b5f602a905092915050565b60606040518060400160405280600781526020017f5375636365737300000000000000000000000000000000000000000000000000815250905092915050565b5f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070d90610fd6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077b9061103e565b60405180910390fd5b805f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610801826107d8565b9050919050565b610811816107f7565b811461081b575f5ffd5b50565b5f8135905061082c81610808565b92915050565b5f60208284031215610847576108466107d0565b5b5f6108548482850161081e565b91505092915050565b610866816107f7565b82525050565b5f60208201905061087f5f83018461085d565b92915050565b5f819050919050565b61089781610885565b81146108a1575f5ffd5b50565b5f813590506108b28161088e565b92915050565b5f5f604083850312156108ce576108cd6107d0565b5b5f6108db8582860161081e565b92505060206108ec858286016108a4565b9150509250929050565b5f8115159050919050565b61090a816108f6565b8114610914575f5ffd5b50565b5f8135905061092581610901565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61097982610933565b810181811067ffffffffffffffff8211171561099857610997610943565b5b80604052505050565b5f6109aa6107c7565b90506109b68282610970565b919050565b5f67ffffffffffffffff8211156109d5576109d4610943565b5b6109de82610933565b9050602081019050919050565b828183375f83830152505050565b5f610a0b610a06846109bb565b6109a1565b905082815260208101848484011115610a2757610a2661092f565b5b610a328482856109eb565b509392505050565b5f82601f830112610a4e57610a4d61092b565b5b8135610a5e8482602086016109f9565b91505092915050565b5f5f5f60608486031215610a7e57610a7d6107d0565b5b5f610a8b86828701610917565b9350506020610a9c868287016108a4565b925050604084013567ffffffffffffffff811115610abd57610abc6107d4565b5b610ac986828701610a3a565b9150509250925092565b610adc81610885565b82525050565b5f602082019050610af55f830184610ad3565b92915050565b610b04816108f6565b82525050565b5f602082019050610b1d5f830184610afb565b92915050565b5f5f5f60608486031215610b3a57610b396107d0565b5b5f610b478682870161081e565b9350506020610b5886828701610917565b9250506040610b69868287016108a4565b9150509250925092565b5f5f5f60608486031215610b8a57610b896107d0565b5b5f610b97868287016108a4565b9350506020610ba88682870161081e565b9250506040610bb9868287016108a4565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f610bf582610bc3565b610bff8185610bcd565b9350610c0f818560208601610bdd565b610c1881610933565b840191505092915050565b5f6020820190508181035f830152610c3b8184610beb565b905092915050565b5f5f5f60608486031215610c5a57610c596107d0565b5b5f610c67868287016108a4565b935050602084013567ffffffffffffffff811115610c8857610c876107d4565b5b610c9486828701610a3a565b9250506040610ca58682870161081e565b9150509250925092565b5f60208284031215610cc457610cc36107d0565b5b5f82013567ffffffffffffffff811115610ce157610ce06107d4565b5b610ced84828501610a3a565b91505092915050565b5f5f5f60608486031215610d0d57610d0c6107d0565b5b5f610d1a86828701610917565b935050602084013567ffffffffffffffff811115610d3b57610d3a6107d4565b5b610d4786828701610a3a565b9250506040610d588682870161081e565b9150509250925092565b5f5f60408385031215610d7857610d776107d0565b5b5f610d8585828601610917565b9250506020610d968582860161081e565b9150509250929050565b5f5f60408385031215610db657610db56107d0565b5b5f83013567ffffffffffffffff811115610dd357610dd26107d4565b5b610ddf85828601610a3a565b9250506020610df08582860161081e565b9150509250929050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f610e2e600f83610bcd565b9150610e3982610dfa565b602082019050919050565b5f6020820190508181035f830152610e5b81610e22565b9050919050565b7f496e76616c696420636f6e7472616374206164647265737300000000000000005f82015250565b5f610e96601883610bcd565b9150610ea182610e62565b602082019050919050565b5f6020820190508181035f830152610ec381610e8a565b9050919050565b5f81519050919050565b5f81905092915050565b5f610ee882610eca565b610ef28185610ed4565b9350610f02818560208601610bdd565b80840191505092915050565b5f610f198284610ede565b915081905092915050565b7f4661696c656420746f2063616c6c206f7468657220636f6e74726163740000005f82015250565b5f610f58601d83610bcd565b9150610f6382610f24565b602082019050919050565b5f6020820190508181035f830152610f8581610f4c565b9050919050565b7f43616c6c6572206973206e6f7420746865206f776e65720000000000000000005f82015250565b5f610fc0601783610bcd565b9150610fcb82610f8c565b602082019050919050565b5f6020820190508181035f830152610fed81610fb4565b9050919050565b7f496e76616c6964206164647265737320666f72206e6577206f776e65720000005f82015250565b5f611028601d83610bcd565b915061103382610ff4565b602082019050919050565b5f6020820190508181035f8301526110558161101c565b905091905056fea26469706673582212209c0a41d597845adb5a2dbe6246c1bf3c4663bd6149aebe98d1988d3ab3697bc964736f6c634300081c0033