0x608060405234801561000f575f80fd5b5061001e61017360201b60201c565b60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260ff16600a61006e91906102df565b64e8d4a5100061007e9190610329565b5f819055505f5460025f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f546040516101669190610379565b60405180910390a3610392565b5f33905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156101fc578086048111156101d8576101d761017a565b5b60018516156101e75780820291505b80810290506101f5856101a7565b94506101bc565b94509492505050565b5f8261021457600190506102cf565b81610221575f90506102cf565b8160018114610237576002811461024157610270565b60019150506102cf565b60ff8411156102535761025261017a565b5b8360020a91508482111561026a5761026961017a565b5b506102cf565b5060208310610133831016604e8410600b84101617156102a55782820a9050838111156102a05761029f61017a565b5b6102cf565b6102b284848460016101b3565b925090508184048111156102c9576102c861017a565b5b81810290505b9392505050565b5f819050919050565b5f6102e9826102d6565b91506102f4836102d6565b92506103217fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610205565b905092915050565b5f610333826102d6565b915061033e836102d6565b925082820261034c816102d6565b915082820484148315176103635761036261017a565b5b5092915050565b610373816102d6565b82525050565b5f60208201905061038c5f83018461036a565b92915050565b6113818061039f5f395ff3fe608060405234801561000f575f80fd5b50600436106100b2575f3560e01c8063715018a61161006f578063715018a6146101a05780638da5cb5b146101aa57806395d89b41146101c8578063a9059cbb146101e6578063dd62ed3e14610216578063f2fde38b14610246576100b2565b806306fdde03146100b6578063095ea7b3146100d457806318160ddd1461010457806323b872dd14610122578063313ce5671461015257806370a0823114610170575b5f80fd5b6100be610262565b6040516100cb9190610d19565b60405180910390f35b6100ee60048036038101906100e99190610dca565b61029b565b6040516100fb9190610e22565b60405180910390f35b61010c6102b8565b6040516101199190610e4a565b60405180910390f35b61013c60048036038101906101379190610e63565b6102bd565b6040516101499190610e22565b60405180910390f35b61015a610377565b6040516101679190610ece565b60405180910390f35b61018a60048036038101906101859190610ee7565b61037c565b6040516101979190610e4a565b60405180910390f35b6101a86103c2565b005b6101b26104fe565b6040516101bf9190610f21565b60405180910390f35b6101d0610523565b6040516101dd9190610d19565b60405180910390f35b61020060048036038101906101fb9190610dca565b61055c565b60405161020d9190610e22565b60405180910390f35b610230600480360381019061022b9190610f3a565b610579565b60405161023d9190610e4a565b60405180910390f35b610260600480360381019061025b9190610ee7565b6105fb565b005b6040518060400160405280600481526020017f4a5553540000000000000000000000000000000000000000000000000000000081525081565b5f6102ae6102a76107bd565b84846107c4565b6001905092915050565b5f5481565b5f6102c9848484610987565b61036c846102d56107bd565b6103678560035f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61031f6107bd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610bef90919063ffffffff16565b6107c4565b600190509392505050565b601281565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6103ca6107bd565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044f90610fc2565b60405180910390fd5b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a25f60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280600481526020017f4a5553540000000000000000000000000000000000000000000000000000000081525081565b5f61056f6105686107bd565b8484610987565b6001905092915050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6106036107bd565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068890610fc2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f69061102a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082990611092565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610897906110fa565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161097a9190610e4a565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ec90611162565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5a906111ca565b60405180910390fd5b610ab38160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610bef90919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610b448160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c4c90919063ffffffff16565b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610be29190610e4a565b60405180910390a3505050565b5f82821115610c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2a90611232565b60405180910390fd5b5f8284610c40919061127d565b90508091505092915050565b5f808284610c5a91906112b0565b905083811015610c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c969061132d565b60405180910390fd5b8091505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610ceb82610ca9565b610cf58185610cb3565b9350610d05818560208601610cc3565b610d0e81610cd1565b840191505092915050565b5f6020820190508181035f830152610d318184610ce1565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610d6682610d3d565b9050919050565b610d7681610d5c565b8114610d80575f80fd5b50565b5f81359050610d9181610d6d565b92915050565b5f819050919050565b610da981610d97565b8114610db3575f80fd5b50565b5f81359050610dc481610da0565b92915050565b5f8060408385031215610de057610ddf610d39565b5b5f610ded85828601610d83565b9250506020610dfe85828601610db6565b9150509250929050565b5f8115159050919050565b610e1c81610e08565b82525050565b5f602082019050610e355f830184610e13565b92915050565b610e4481610d97565b82525050565b5f602082019050610e5d5f830184610e3b565b92915050565b5f805f60608486031215610e7a57610e79610d39565b5b5f610e8786828701610d83565b9350506020610e9886828701610d83565b9250506040610ea986828701610db6565b9150509250925092565b5f60ff82169050919050565b610ec881610eb3565b82525050565b5f602082019050610ee15f830184610ebf565b92915050565b5f60208284031215610efc57610efb610d39565b5b5f610f0984828501610d83565b91505092915050565b610f1b81610d5c565b82525050565b5f602082019050610f345f830184610f12565b92915050565b5f8060408385031215610f5057610f4f610d39565b5b5f610f5d85828601610d83565b9250506020610f6e85828601610d83565b9150509250929050565b7f43616c6c6572206973206e6f7420746865206f776e65720000000000000000005f82015250565b5f610fac601783610cb3565b9150610fb782610f78565b602082019050919050565b5f6020820190508181035f830152610fd981610fa0565b9050919050565b7f4e6577206f776e657220697320746865207a65726f20616464726573730000005f82015250565b5f611014601d83610cb3565b915061101f82610fe0565b602082019050919050565b5f6020820190508181035f83015261104181611008565b9050919050565b7f417070726f76652066726f6d20746865207a65726f20616464726573730000005f82015250565b5f61107c601d83610cb3565b915061108782611048565b602082019050919050565b5f6020820190508181035f8301526110a981611070565b9050919050565b7f417070726f766520746f20746865207a65726f206164647265737300000000005f82015250565b5f6110e4601b83610cb3565b91506110ef826110b0565b602082019050919050565b5f6020820190508181035f830152611111816110d8565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f206164647265737300005f82015250565b5f61114c601e83610cb3565b915061115782611118565b602082019050919050565b5f6020820190508181035f83015261117981611140565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373000000005f82015250565b5f6111b4601c83610cb3565b91506111bf82611180565b602082019050919050565b5f6020820190508181035f8301526111e1816111a8565b9050919050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f7700005f82015250565b5f61121c601e83610cb3565b9150611227826111e8565b602082019050919050565b5f6020820190508181035f83015261124981611210565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61128782610d97565b915061129283610d97565b92508282039050818111156112aa576112a9611250565b5b92915050565b5f6112ba82610d97565b91506112c583610d97565b92508282019050808211156112dd576112dc611250565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f611317601b83610cb3565b9150611322826112e3565b602082019050919050565b5f6020820190508181035f8301526113448161130b565b905091905056fea26469706673582212203f0d41b27aed6e40cb87a990a4e57ce4b4ff351c30f731c9f40cd39dc138a1cc64736f6c63430008190033