0x608060405234801561000f575f80fd5b50604051610fa8380380610fa883398181016040528101906100319190610160565b815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806001819055503360025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505061019e565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100eb826100c2565b9050919050565b5f6100fc826100e1565b9050919050565b61010c816100f2565b8114610116575f80fd5b50565b5f8151905061012781610103565b92915050565b5f819050919050565b61013f8161012d565b8114610149575f80fd5b50565b5f8151905061015a81610136565b92915050565b5f8060408385031215610176576101756100be565b5b5f61018385828601610119565b92505060206101948582860161014c565b9150509250929050565b610dfd806101ab5f395ff3fe608060405234801561000f575f80fd5b5060043610610086575f3560e01c80638da5cb5b116100595780638da5cb5b14610122578063a6f9dae114610140578063a8e5fbc01461015c578063f3068a001461017a57610086565b80630a79309b1461008a5780635cf3d346146100ba57806378453c2b146100ea578063845c03c114610106575b5f80fd5b6100a4600480360381019061009f91906105bd565b610198565b6040516100b19190610658565b60405180910390f35b6100d460048036038101906100cf91906105bd565b610265565b6040516100e19190610658565b60405180910390f35b61010460048036038101906100ff91906106d9565b610300565b005b610120600480360381019061011b919061085e565b6103e3565b005b61012a610432565b60405161013791906108c7565b60405180910390f35b61015a600480360381019061015591906105bd565b610457565b005b610164610529565b604051610171919061093b565b60405180910390f35b61018261054c565b60405161018f919061096c565b60405180910390f35b606060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080546101e2906109b2565b80601f016020809104026020016040519081016040528092919081815260200182805461020e906109b2565b80156102595780601f1061023057610100808354040283529160200191610259565b820191905f5260205f20905b81548152906001019060200180831161023c57829003601f168201915b50505050509050919050565b6003602052805f5260405f205f915090508054610281906109b2565b80601f01602080910402602001604051908101604052809291908181526020018280546102ad906109b2565b80156102f85780601f106102cf576101008083540402835291602001916102f8565b820191905f5260205f20905b8154815290600101906020018083116102db57829003601f168201915b505050505081565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c658e0866001548585855f806040518763ffffffff1660e01b815260040161036496959493929190610a99565b5f604051808303815f87803b15801561037b575f80fd5b505af115801561038d573d5f803e3d5ffd5b505050506103de8184848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506103e3565b505050565b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20908161042d9190610c90565b505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104dd90610da9565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015481565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61058c82610563565b9050919050565b61059c81610582565b81146105a6575f80fd5b50565b5f813590506105b781610593565b92915050565b5f602082840312156105d2576105d161055b565b5b5f6105df848285016105a9565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61062a826105e8565b61063481856105f2565b9350610644818560208601610602565b61064d81610610565b840191505092915050565b5f6020820190508181035f8301526106708184610620565b905092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261069957610698610678565b5b8235905067ffffffffffffffff8111156106b6576106b561067c565b5b6020830191508360018202830111156106d2576106d1610680565b5b9250929050565b5f805f604084860312156106f0576106ef61055b565b5b5f84013567ffffffffffffffff81111561070d5761070c61055f565b5b61071986828701610684565b9350935050602061072c868287016105a9565b9150509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61077082610610565b810181811067ffffffffffffffff8211171561078f5761078e61073a565b5b80604052505050565b5f6107a1610552565b90506107ad8282610767565b919050565b5f67ffffffffffffffff8211156107cc576107cb61073a565b5b6107d582610610565b9050602081019050919050565b828183375f83830152505050565b5f6108026107fd846107b2565b610798565b90508281526020810184848401111561081e5761081d610736565b5b6108298482856107e2565b509392505050565b5f82601f83011261084557610844610678565b5b81356108558482602086016107f0565b91505092915050565b5f80604083850312156108745761087361055b565b5b5f610881858286016105a9565b925050602083013567ffffffffffffffff8111156108a2576108a161055f565b5b6108ae85828601610831565b9150509250929050565b6108c181610582565b82525050565b5f6020820190506108da5f8301846108b8565b92915050565b5f819050919050565b5f6109036108fe6108f984610563565b6108e0565b610563565b9050919050565b5f610914826108e9565b9050919050565b5f6109258261090a565b9050919050565b6109358161091b565b82525050565b5f60208201905061094e5f83018461092c565b92915050565b5f819050919050565b61096681610954565b82525050565b5f60208201905061097f5f83018461095d565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806109c957607f821691505b6020821081036109dc576109db610985565b5b50919050565b5f6109ed83856105f2565b93506109fa8385846107e2565b610a0383610610565b840190509392505050565b5f819050919050565b5f63ffffffff82169050919050565b5f610a40610a3b610a3684610a0e565b6108e0565b610a17565b9050919050565b610a5081610a26565b82525050565b5f67ffffffffffffffff82169050919050565b5f610a83610a7e610a7984610a0e565b6108e0565b610a56565b9050919050565b610a9381610a69565b82525050565b5f60a082019050610aac5f83018961095d565b8181036020830152610abf8187896109e2565b9050610ace60408301866108b8565b610adb6060830185610a47565b610ae86080830184610a8a565b979650505050505050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610b4f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610b14565b610b598683610b14565b95508019841693508086168417925050509392505050565b5f819050919050565b5f610b94610b8f610b8a84610b71565b6108e0565b610b71565b9050919050565b5f819050919050565b610bad83610b7a565b610bc1610bb982610b9b565b848454610b20565b825550505050565b5f90565b610bd5610bc9565b610be0818484610ba4565b505050565b5b81811015610c0357610bf85f82610bcd565b600181019050610be6565b5050565b601f821115610c4857610c1981610af3565b610c2284610b05565b81016020851015610c31578190505b610c45610c3d85610b05565b830182610be5565b50505b505050565b5f82821c905092915050565b5f610c685f1984600802610c4d565b1980831691505092915050565b5f610c808383610c59565b9150826002028217905092915050565b610c99826105e8565b67ffffffffffffffff811115610cb257610cb161073a565b5b610cbc82546109b2565b610cc7828285610c07565b5f60209050601f831160018114610cf8575f8415610ce6578287015190505b610cf08582610c75565b865550610d57565b601f198416610d0686610af3565b5f5b82811015610d2d57848901518255600182019150602085019450602081019050610d08565b86831015610d4a5784890151610d46601f891682610c59565b8355505b6001600288020188555050505b505050505050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f610d93600e836105f2565b9150610d9e82610d5f565b602082019050919050565b5f6020820190508181035f830152610dc081610d87565b905091905056fea264697066735822122057905fcf76f7be15d9e408a5c9b68f2786f67f46554400e4f79bb6c0511561ba64736f6c634300081a00330000000000000000000000000635513f179d50a207757e05759cbd106d7dfce8e402ec51558c87c246c8c233935e39860fd069019771d974cf4d9d4784dd22ff