0x608060405273ba12222222228d8ba445958a75a0704d566bf2c860015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015610063575f80fd5b50335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100d5575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100cc91906101ea565b60405180910390fd5b6100e4816100ea60201b60201c565b50610203565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6101d4826101ab565b9050919050565b6101e4816101ca565b82525050565b5f6020820190506101fd5f8301846101db565b92915050565b610f35806102105f395ff3fe608060405234801561000f575f80fd5b5060043610610055575f3560e01c8063553500b414610059578063715018a6146100755780638da5cb5b1461007f578063f04f27071461009d578063f2fde38b146100b9575b5f80fd5b610073600480360381019061006e9190610652565b6100d5565b005b61007d610250565b005b610087610263565b604051610094919061070f565b60405180910390f35b6100b760048036038101906100b29190610a4e565b61028a565b005b6100d360048036038101906100ce9190610b4c565b6103b8565b005b6100dd61043c565b5f8484905067ffffffffffffffff8111156100fb576100fa610738565b5b6040519080825280602002602001820160405280156101295781602001602082028036833780820191505090505b5090505f5b858590508110156101bb5785858281811061014c5761014b610b77565b5b90506020020160208101906101619190610b4c565b82828151811061017457610173610b77565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808060010191505061012e565b5060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c38449e308386866040518563ffffffff1660e01b815260040161021c9493929190610d99565b5f604051808303815f87803b158015610233575f80fd5b505af1158015610245573d5f803e3d5ffd5b505050505050505050565b61025861043c565b6102615f6104c3565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f5b84518110156103b1578481815181106102a8576102a7610b77565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16868481518110610300576102ff610b77565b5b60200260200101516040518363ffffffff1660e01b8152600401610325929190610e00565b6020604051808303815f875af1158015610341573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103659190610e5c565b6103a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039b90610ee1565b60405180910390fd5b808060010191505061028c565b5050505050565b6103c061043c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610430575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610427919061070f565b60405180910390fd5b610439816104c3565b50565b610444610584565b73ffffffffffffffffffffffffffffffffffffffff16610462610263565b73ffffffffffffffffffffffffffffffffffffffff16146104c157610485610584565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016104b8919061070f565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126105bd576105bc61059c565b5b8235905067ffffffffffffffff8111156105da576105d96105a0565b5b6020830191508360208202830111156105f6576105f56105a4565b5b9250929050565b5f8083601f8401126106125761061161059c565b5b8235905067ffffffffffffffff81111561062f5761062e6105a0565b5b60208301915083602082028301111561064b5761064a6105a4565b5b9250929050565b5f805f806040858703121561066a57610669610594565b5b5f85013567ffffffffffffffff81111561068757610686610598565b5b610693878288016105a8565b9450945050602085013567ffffffffffffffff8111156106b6576106b5610598565b5b6106c2878288016105fd565b925092505092959194509250565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106f9826106d0565b9050919050565b610709816106ef565b82525050565b5f6020820190506107225f830184610700565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61076e82610728565b810181811067ffffffffffffffff8211171561078d5761078c610738565b5b80604052505050565b5f61079f61058b565b90506107ab8282610765565b919050565b5f67ffffffffffffffff8211156107ca576107c9610738565b5b602082029050602081019050919050565b5f6107e5826106ef565b9050919050565b6107f5816107db565b81146107ff575f80fd5b50565b5f81359050610810816107ec565b92915050565b5f610828610823846107b0565b610796565b9050808382526020820190506020840283018581111561084b5761084a6105a4565b5b835b8181101561087457806108608882610802565b84526020840193505060208101905061084d565b5050509392505050565b5f82601f8301126108925761089161059c565b5b81356108a2848260208601610816565b91505092915050565b5f67ffffffffffffffff8211156108c5576108c4610738565b5b602082029050602081019050919050565b5f819050919050565b6108e8816108d6565b81146108f2575f80fd5b50565b5f81359050610903816108df565b92915050565b5f61091b610916846108ab565b610796565b9050808382526020820190506020840283018581111561093e5761093d6105a4565b5b835b81811015610967578061095388826108f5565b845260208401935050602081019050610940565b5050509392505050565b5f82601f8301126109855761098461059c565b5b8135610995848260208601610909565b91505092915050565b5f80fd5b5f67ffffffffffffffff8211156109bc576109bb610738565b5b6109c582610728565b9050602081019050919050565b828183375f83830152505050565b5f6109f26109ed846109a2565b610796565b905082815260208101848484011115610a0e57610a0d61099e565b5b610a198482856109d2565b509392505050565b5f82601f830112610a3557610a3461059c565b5b8135610a458482602086016109e0565b91505092915050565b5f805f8060808587031215610a6657610a65610594565b5b5f85013567ffffffffffffffff811115610a8357610a82610598565b5b610a8f8782880161087e565b945050602085013567ffffffffffffffff811115610ab057610aaf610598565b5b610abc87828801610971565b935050604085013567ffffffffffffffff811115610add57610adc610598565b5b610ae987828801610971565b925050606085013567ffffffffffffffff811115610b0a57610b09610598565b5b610b1687828801610a21565b91505092959194509250565b610b2b816106ef565b8114610b35575f80fd5b50565b5f81359050610b4681610b22565b92915050565b5f60208284031215610b6157610b60610594565b5b5f610b6e84828501610b38565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f610bc7610bc2610bbd846106d0565b610ba4565b6106d0565b9050919050565b5f610bd882610bad565b9050919050565b5f610be982610bce565b9050919050565b610bf981610bdf565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f610c3282610bce565b9050919050565b610c4281610c28565b82525050565b5f610c538383610c39565b60208301905092915050565b5f602082019050919050565b5f610c7582610bff565b610c7f8185610c09565b9350610c8a83610c19565b805f5b83811015610cba578151610ca18882610c48565b9750610cac83610c5f565b925050600181019050610c8d565b5085935050505092915050565b5f82825260208201905092915050565b5f80fd5b82818337505050565b5f610cef8385610cc7565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115610d2257610d21610cd7565b5b602083029250610d33838584610cdb565b82840190509392505050565b5f82825260208201905092915050565b7f30780000000000000000000000000000000000000000000000000000000000005f82015250565b5f610d83600283610d3f565b9150610d8e82610d4f565b602082019050919050565b5f608082019050610dac5f830187610bf0565b8181036020830152610dbe8186610c6b565b90508181036040830152610dd3818486610ce4565b90508181036060830152610de681610d77565b905095945050505050565b610dfa816108d6565b82525050565b5f604082019050610e135f830185610700565b610e206020830184610df1565b9392505050565b5f8115159050919050565b610e3b81610e27565b8114610e45575f80fd5b50565b5f81519050610e5681610e32565b92915050565b5f60208284031215610e7157610e70610594565b5b5f610e7e84828501610e48565b91505092915050565b5f82825260208201905092915050565b7f4e6f7420656e6f75676820746f6b656e7320666f722072657061796d656e74005f82015250565b5f610ecb601f83610e87565b9150610ed682610e97565b602082019050919050565b5f6020820190508181035f830152610ef881610ebf565b905091905056fea2646970667358221220d6eaa9399871cbe11a21ab641c12bc338b29a55efb33ed6cfc8631ff805e0dd964736f6c63430008160033