608060405234801561000f575f80fd5b50604051613d52380380613d5283398181016040528101906100319190610289565b806040518060400160405280600e81526020017f4b6e69646f73417661784e6f64650000000000000000000000000000000000008152506040518060400160405280600381526020017f4b41580000000000000000000000000000000000000000000000000000000000815250815f90816100ac91906104ee565b5080600190816100bc91906104ee565b5050505f600b5f6101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610148575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161013f91906105cc565b60405180910390fd5b6101578161016660201b60201c565b506001600c81905550506105e5565b5f600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102588261022f565b9050919050565b6102688161024e565b8114610272575f80fd5b50565b5f815190506102838161025f565b92915050565b5f6020828403121561029e5761029d61022b565b5b5f6102ab84828501610275565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061032f57607f821691505b602082108103610342576103416102eb565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103a47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610369565b6103ae8683610369565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6103f26103ed6103e8846103c6565b6103cf565b6103c6565b9050919050565b5f819050919050565b61040b836103d8565b61041f610417826103f9565b848454610375565b825550505050565b5f90565b610433610427565b61043e818484610402565b505050565b5b81811015610461576104565f8261042b565b600181019050610444565b5050565b601f8211156104a65761047781610348565b6104808461035a565b8101602085101561048f578190505b6104a361049b8561035a565b830182610443565b50505b505050565b5f82821c905092915050565b5f6104c65f19846008026104ab565b1980831691505092915050565b5f6104de83836104b7565b9150826002028217905092915050565b6104f7826102b4565b67ffffffffffffffff8111156105105761050f6102be565b5b61051a8254610318565b610525828285610465565b5f60209050601f831160018114610556575f8415610544578287015190505b61054e85826104d3565b8655506105b5565b601f19841661056486610348565b5f5b8281101561058b57848901518255600182019150602085019450602081019050610566565b868310156105a857848901516105a4601f8916826104b7565b8355505b6001600288020188555050505b505050505050565b6105c68161024e565b82525050565b5f6020820190506105df5f8301846105bd565b92915050565b613760806105f25f395ff3fe608060405234801561000f575f80fd5b50600436106101c2575f3560e01c806370a08231116100f7578063b88d4fde11610095578063d5abeb011161006f578063d5abeb0114610512578063da0239a614610530578063e985e9c51461054e578063f2fde38b1461057e576101c2565b8063b88d4fde14610496578063c2507ac1146104b2578063c87b56dd146104e2576101c2565b80638da5cb5b116100d15780638da5cb5b1461042257806395d89b4114610440578063a14481941461045e578063a22cb4651461047a576101c2565b806370a08231146103b8578063715018a6146103e85780638462151c146103f2576101c2565b80632f745c591161016457806355f804b31161013e57806355f804b3146103325780635c975abb1461034e5780636352211e1461036c5780636f8b44b01461039c576101c2565b80632f745c59146102b657806342842e0e146102e65780634f6ccce714610302576101c2565b8063095ea7b3116101a0578063095ea7b314610244578063162094c41461026057806318160ddd1461027c57806323b872dd1461029a576101c2565b806301ffc9a7146101c657806306fdde03146101f6578063081812fc14610214575b5f80fd5b6101e060048036038101906101db91906127da565b61059a565b6040516101ed919061281f565b60405180910390f35b6101fe6105ab565b60405161020b91906128a8565b60405180910390f35b61022e600480360381019061022991906128fb565b61063a565b60405161023b9190612965565b60405180910390f35b61025e600480360381019061025991906129a8565b610655565b005b61027a60048036038101906102759190612b12565b61066b565b005b61028461072e565b6040516102919190612b7b565b60405180910390f35b6102b460048036038101906102af9190612b94565b61073a565b005b6102d060048036038101906102cb91906129a8565b610839565b6040516102dd9190612b7b565b60405180910390f35b61030060048036038101906102fb9190612b94565b6108dd565b005b61031c600480360381019061031791906128fb565b6108fc565b6040516103299190612b7b565b60405180910390f35b61034c60048036038101906103479190612be4565b61096e565b005b6103566109c0565b604051610363919061281f565b60405180910390f35b610386600480360381019061038191906128fb565b6109d5565b6040516103939190612965565b60405180910390f35b6103b660048036038101906103b191906128fb565b6109e6565b005b6103d260048036038101906103cd9190612c2b565b610a2f565b6040516103df9190612b7b565b60405180910390f35b6103f0610ae5565b005b61040c60048036038101906104079190612c2b565b610af8565b6040516104199190612d0d565b60405180910390f35b61042a610b9d565b6040516104379190612965565b60405180910390f35b610448610bc6565b60405161045591906128a8565b60405180910390f35b610478600480360381019061047391906129a8565b610c56565b005b610494600480360381019061048f9190612d57565b610dc1565b005b6104b060048036038101906104ab9190612e33565b610dd7565b005b6104cc60048036038101906104c791906128fb565b610df4565b6040516104d99190612b7b565b60405180910390f35b6104fc60048036038101906104f791906128fb565b610e0e565b60405161050991906128a8565b60405180910390f35b61051a610f00565b6040516105279190612b7b565b60405180910390f35b610538610f06565b6040516105459190612b7b565b60405180910390f35b61056860048036038101906105639190612eb3565b610f21565b604051610575919061281f565b60405180910390f35b61059860048036038101906105939190612c2b565b610faf565b005b5f6105a482611033565b9050919050565b60605f80546105b990612f1e565b80601f01602080910402602001604051908101604052809291908181526020018280546105e590612f1e565b80156106305780601f1061060757610100808354040283529160200191610630565b820191905f5260205f20905b81548152906001019060200180831161061357829003601f168201915b5050505050905090565b5f61064482611093565b5061064e82611119565b9050919050565b6106678282610662611152565b611159565b5050565b61067361116b565b5f73ffffffffffffffffffffffffffffffffffffffff16610693836109d5565b73ffffffffffffffffffffffffffffffffffffffff16036106e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e090612fbe565b60405180910390fd5b6106f382826111f2565b7fe3afa94108b5f5e82e5f6e539d161ff4b5402a85f696c67b9768ec3ae54ce3668160405161072291906128a8565b60405180910390a15050565b5f600880549050905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107aa575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016107a19190612965565b60405180910390fd5b5f6107bd83836107b8611152565b61124c565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610833578382826040517f64283d7b00000000000000000000000000000000000000000000000000000000815260040161082a93929190612fdc565b60405180910390fd5b50505050565b5f61084383610a2f565b82106108885782826040517fa57d13dc00000000000000000000000000000000000000000000000000000000815260040161087f929190613011565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b6108f783838360405180602001604052805f815250610dd7565b505050565b5f61090561072e565b821061094a575f826040517fa57d13dc000000000000000000000000000000000000000000000000000000008152600401610941929190613011565b60405180910390fd5b6008828154811061095e5761095d613038565b5b905f5260205f2001549050919050565b61097661116b565b80601090816109859190613202565b507fe3afa94108b5f5e82e5f6e539d161ff4b5402a85f696c67b9768ec3ae54ce366816040516109b591906128a8565b60405180910390a150565b5f600b5f9054906101000a900460ff16905090565b5f6109df82611093565b9050919050565b6109ee61116b565b80600e819055507f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c81604051610a249190612b7b565b60405180910390a150565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610aa0575f6040517f89c62b64000000000000000000000000000000000000000000000000000000008152600401610a979190612965565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610aed61116b565b610af65f611261565b565b60605f610b0483610a2f565b90505f8167ffffffffffffffff811115610b2157610b206129ee565b5b604051908082528060200260200182016040528015610b4f5781602001602082028036833780820191505090505b5090505f5b82811015610b9257610b668582610839565b828281518110610b7957610b78613038565b5b6020026020010181815250508080600101915050610b54565b508092505050919050565b5f600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610bd590612f1e565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0190612f1e565b8015610c4c5780601f10610c2357610100808354040283529160200191610c4c565b820191905f5260205f20905b815481529060010190602001808311610c2f57829003601f168201915b5050505050905090565b610c5e611326565b600e546001610c6b61072e565b610c7591906132fe565b1115610cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cad9061337b565b60405180910390fd5b610cbe610b9d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d22906133e3565b60405180910390fd5b5f600d5f815480929190610d3e90613401565b919050559050610d4e8382611375565b8160115f8381526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff167f96234cb3d6c373a1aaa06497a540bc166d4b0359243a088eaf95e21d7253d0be8284604051610dac929190613448565b60405180910390a250610dbd611392565b5050565b610dd3610dcc611152565b838361139c565b5050565b610de284848461073a565b610dee84848484611505565b50505050565b5f60115f8381526020019081526020015f20549050919050565b60605f73ffffffffffffffffffffffffffffffffffffffff16610e30836109d5565b73ffffffffffffffffffffffffffffffffffffffff1603610e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7d906134df565b60405180910390fd5b5f610e90836116b7565b90505f81511115610ea45780915050610efb565b5f610ead6117c2565b90505f815111610ecb5760405180602001604052805f815250610ef6565b80610ed585611852565b604051602001610ee6929190613537565b6040516020818303038152906040525b925050505b919050565b600e5481565b5f610f0f61072e565b600e54610f1c919061355a565b905090565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b610fb761116b565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611027575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161101e9190612965565b60405180910390fd5b61103081611261565b50565b5f634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061108c575061108b8261191c565b5b9050919050565b5f8061109e83611995565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361111057826040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016111079190612b7b565b60405180910390fd5b80915050919050565b5f60045f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f33905090565b61116683838360016119ce565b505050565b611173611152565b73ffffffffffffffffffffffffffffffffffffffff16611191610b9d565b73ffffffffffffffffffffffffffffffffffffffff16146111f0576111b4611152565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016111e79190612965565b60405180910390fd5b565b80600a5f8481526020019081526020015f2090816112109190613202565b507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7826040516112409190612b7b565b60405180910390a15050565b5f611258848484611b8d565b90509392505050565b5f600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6002600c540361136b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611362906135d7565b60405180910390fd5b6002600c81905550565b61138e828260405180602001604052805f815250611baa565b5050565b6001600c81905550565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361140c57816040517f5b08ba180000000000000000000000000000000000000000000000000000000081526004016114039190612965565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516114f8919061281f565b60405180910390a3505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b11156116b1578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02611548611152565b8685856040518563ffffffff1660e01b815260040161156a9493929190613647565b6020604051808303815f875af19250505080156115a557506040513d601f19601f820116820180604052508101906115a291906136a5565b60015b611626573d805f81146115d3576040519150601f19603f3d011682016040523d82523d5f602084013e6115d8565b606091505b505f81510361161e57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016116159190612965565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146116af57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016116a69190612965565b60405180910390fd5b505b50505050565b60606116c282611093565b505f600a5f8481526020019081526020015f2080546116e090612f1e565b80601f016020809104026020016040519081016040528092919081815260200182805461170c90612f1e565b80156117575780601f1061172e57610100808354040283529160200191611757565b820191905f5260205f20905b81548152906001019060200180831161173a57829003601f168201915b505050505090505f6117676117c2565b90505f81510361177b5781925050506117bd565b5f825111156117af578082604051602001611797929190613537565b604051602081830303815290604052925050506117bd565b6117b884611bc5565b925050505b919050565b6060601080546117d190612f1e565b80601f01602080910402602001604051908101604052809291908181526020018280546117fd90612f1e565b80156118485780601f1061181f57610100808354040283529160200191611848565b820191905f5260205f20905b81548152906001019060200180831161182b57829003601f168201915b5050505050905090565b60605f600161186084611c2b565b0190505f8167ffffffffffffffff81111561187e5761187d6129ee565b5b6040519080825280601f01601f1916602001820160405280156118b05781602001600182028036833780820191505090505b5090505f82602001820190505b600115611911578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611906576119056136d0565b5b0494505f85036118bd575b819350505050919050565b5f7f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061198e575061198d82611d7c565b5b9050919050565b5f60025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8080611a0657505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611b38575f611a1584611093565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a7f57508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611a925750611a908184610f21565b155b15611ad457826040517fa9fbf51f000000000000000000000000000000000000000000000000000000008152600401611acb9190612965565b60405180910390fd5b8115611b3657838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360045f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b5f611b96611e5d565b611ba1848484611e9e565b90509392505050565b611bb48383611fb8565b611bc05f848484611505565b505050565b6060611bd082611093565b505f611bda6117c2565b90505f815111611bf85760405180602001604052805f815250611c23565b80611c0284611852565b604051602001611c13929190613537565b6040516020818303038152906040525b915050919050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611c87577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611c7d57611c7c6136d0565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611cc4576d04ee2d6d415b85acef81000000008381611cba57611cb96136d0565b5b0492506020810190505b662386f26fc100008310611cf357662386f26fc100008381611ce957611ce86136d0565b5b0492506010810190505b6305f5e1008310611d1c576305f5e1008381611d1257611d116136d0565b5b0492506008810190505b6127108310611d41576127108381611d3757611d366136d0565b5b0492506004810190505b60648310611d645760648381611d5a57611d596136d0565b5b0492506002810190505b600a8310611d73576001810190505b80915050919050565b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611e4657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611e565750611e55826120ab565b5b9050919050565b611e656109c0565b15611e9c576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f80611eab858585612114565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611eee57611ee98461231f565b611f2d565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611f2c57611f2b8185612363565b5b5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611f6e57611f69846124ad565b611fad565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611fac57611fab858561256d565b5b5b809150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612028575f6040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161201f9190612965565b60405180910390fd5b5f61203483835f61124c565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146120a6575f6040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260040161209d9190612965565b60405180910390fd5b505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f8061211f84611995565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146121605761215f8184866125f1565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146121eb5761219f5f855f806119ce565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461226a57600160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8460025f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b60088054905060095f8381526020019081526020015f2081905550600881908060018154018082558091505060019003905f5260205f20015f909190919091505550565b5f61236d83610a2f565b90505f60075f8481526020019081526020015f20549050818114612444575f60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205490508060065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f20819055508160075f8381526020019081526020015f2081905550505b60075f8481526020019081526020015f205f905560065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f205f905550505050565b5f60016008805490506124c0919061355a565b90505f60095f8481526020019081526020015f205490505f600883815481106124ec576124eb613038565b5b905f5260205f2001549050806008838154811061250c5761250b613038565b5b905f5260205f2001819055508160095f8381526020019081526020015f208190555060095f8581526020019081526020015f205f90556008805480612554576125536136fd565b5b600190038181905f5260205f20015f9055905550505050565b5f600161257984610a2f565b612583919061355a565b90508160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20819055508060075f8481526020019081526020015f2081905550505050565b6125fc8383836126b4565b6126af575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361267057806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016126679190612b7b565b60405180910390fd5b81816040517f177e802f0000000000000000000000000000000000000000000000000000000081526004016126a6929190613011565b60405180910390fd5b505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561276b57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061272c575061272b8484610f21565b5b8061276a57508273ffffffffffffffffffffffffffffffffffffffff1661275283611119565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6127b981612785565b81146127c3575f80fd5b50565b5f813590506127d4816127b0565b92915050565b5f602082840312156127ef576127ee61277d565b5b5f6127fc848285016127c6565b91505092915050565b5f8115159050919050565b61281981612805565b82525050565b5f6020820190506128325f830184612810565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61287a82612838565b6128848185612842565b9350612894818560208601612852565b61289d81612860565b840191505092915050565b5f6020820190508181035f8301526128c08184612870565b905092915050565b5f819050919050565b6128da816128c8565b81146128e4575f80fd5b50565b5f813590506128f5816128d1565b92915050565b5f602082840312156129105761290f61277d565b5b5f61291d848285016128e7565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61294f82612926565b9050919050565b61295f81612945565b82525050565b5f6020820190506129785f830184612956565b92915050565b61298781612945565b8114612991575f80fd5b50565b5f813590506129a28161297e565b92915050565b5f80604083850312156129be576129bd61277d565b5b5f6129cb85828601612994565b92505060206129dc858286016128e7565b9150509250929050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612a2482612860565b810181811067ffffffffffffffff82111715612a4357612a426129ee565b5b80604052505050565b5f612a55612774565b9050612a618282612a1b565b919050565b5f67ffffffffffffffff821115612a8057612a7f6129ee565b5b612a8982612860565b9050602081019050919050565b828183375f83830152505050565b5f612ab6612ab184612a66565b612a4c565b905082815260208101848484011115612ad257612ad16129ea565b5b612add848285612a96565b509392505050565b5f82601f830112612af957612af86129e6565b5b8135612b09848260208601612aa4565b91505092915050565b5f8060408385031215612b2857612b2761277d565b5b5f612b35858286016128e7565b925050602083013567ffffffffffffffff811115612b5657612b55612781565b5b612b6285828601612ae5565b9150509250929050565b612b75816128c8565b82525050565b5f602082019050612b8e5f830184612b6c565b92915050565b5f805f60608486031215612bab57612baa61277d565b5b5f612bb886828701612994565b9350506020612bc986828701612994565b9250506040612bda868287016128e7565b9150509250925092565b5f60208284031215612bf957612bf861277d565b5b5f82013567ffffffffffffffff811115612c1657612c15612781565b5b612c2284828501612ae5565b91505092915050565b5f60208284031215612c4057612c3f61277d565b5b5f612c4d84828501612994565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612c88816128c8565b82525050565b5f612c998383612c7f565b60208301905092915050565b5f602082019050919050565b5f612cbb82612c56565b612cc58185612c60565b9350612cd083612c70565b805f5b83811015612d00578151612ce78882612c8e565b9750612cf283612ca5565b925050600181019050612cd3565b5085935050505092915050565b5f6020820190508181035f830152612d258184612cb1565b905092915050565b612d3681612805565b8114612d40575f80fd5b50565b5f81359050612d5181612d2d565b92915050565b5f8060408385031215612d6d57612d6c61277d565b5b5f612d7a85828601612994565b9250506020612d8b85828601612d43565b9150509250929050565b5f67ffffffffffffffff821115612daf57612dae6129ee565b5b612db882612860565b9050602081019050919050565b5f612dd7612dd284612d95565b612a4c565b905082815260208101848484011115612df357612df26129ea565b5b612dfe848285612a96565b509392505050565b5f82601f830112612e1a57612e196129e6565b5b8135612e2a848260208601612dc5565b91505092915050565b5f805f8060808587031215612e4b57612e4a61277d565b5b5f612e5887828801612994565b9450506020612e6987828801612994565b9350506040612e7a878288016128e7565b925050606085013567ffffffffffffffff811115612e9b57612e9a612781565b5b612ea787828801612e06565b91505092959194509250565b5f8060408385031215612ec957612ec861277d565b5b5f612ed685828601612994565b9250506020612ee785828601612994565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612f3557607f821691505b602082108103612f4857612f47612ef1565b5b50919050565b7f4552433732314d657461646174613a2055524920736574206f66206e6f6e65785f8201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b5f612fa8602c83612842565b9150612fb382612f4e565b604082019050919050565b5f6020820190508181035f830152612fd581612f9c565b9050919050565b5f606082019050612fef5f830186612956565b612ffc6020830185612b6c565b6130096040830184612956565b949350505050565b5f6040820190506130245f830185612956565b6130316020830184612b6c565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026130c17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613086565b6130cb8683613086565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6131066131016130fc846128c8565b6130e3565b6128c8565b9050919050565b5f819050919050565b61311f836130ec565b61313361312b8261310d565b848454613092565b825550505050565b5f90565b61314761313b565b613152818484613116565b505050565b5b818110156131755761316a5f8261313f565b600181019050613158565b5050565b601f8211156131ba5761318b81613065565b61319484613077565b810160208510156131a3578190505b6131b76131af85613077565b830182613157565b50505b505050565b5f82821c905092915050565b5f6131da5f19846008026131bf565b1980831691505092915050565b5f6131f283836131cb565b9150826002028217905092915050565b61320b82612838565b67ffffffffffffffff811115613224576132236129ee565b5b61322e8254612f1e565b613239828285613179565b5f60209050601f83116001811461326a575f8415613258578287015190505b61326285826131e7565b8655506132c9565b601f19841661327886613065565b5f5b8281101561329f5784890151825560018201915060208501945060208101905061327a565b868310156132bc57848901516132b8601f8916826131cb565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613308826128c8565b9150613313836128c8565b925082820190508082111561332b5761332a6132d1565b5b92915050565b7f45786365656473206d617820737570706c7900000000000000000000000000005f82015250565b5f613365601283612842565b915061337082613331565b602082019050919050565b5f6020820190508181035f83015261339281613359565b9050919050565b7f4f6e6c7920746865206f776e65722063616e206d696e740000000000000000005f82015250565b5f6133cd601783612842565b91506133d882613399565b602082019050919050565b5f6020820190508181035f8301526133fa816133c1565b9050919050565b5f61340b826128c8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361343d5761343c6132d1565b5b600182019050919050565b5f60408201905061345b5f830185612b6c565b6134686020830184612b6c565b9392505050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f5f8201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b5f6134c9602f83612842565b91506134d48261346f565b604082019050919050565b5f6020820190508181035f8301526134f6816134bd565b9050919050565b5f81905092915050565b5f61351182612838565b61351b81856134fd565b935061352b818560208601612852565b80840191505092915050565b5f6135428285613507565b915061354e8284613507565b91508190509392505050565b5f613564826128c8565b915061356f836128c8565b9250828203905081811115613587576135866132d1565b5b92915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f6135c1601f83612842565b91506135cc8261358d565b602082019050919050565b5f6020820190508181035f8301526135ee816135b5565b9050919050565b5f81519050919050565b5f82825260208201905092915050565b5f613619826135f5565b61362381856135ff565b9350613633818560208601612852565b61363c81612860565b840191505092915050565b5f60808201905061365a5f830187612956565b6136676020830186612956565b6136746040830185612b6c565b8181036060830152613686818461360f565b905095945050505050565b5f8151905061369f816127b0565b92915050565b5f602082840312156136ba576136b961277d565b5b5f6136c784828501613691565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea26469706673582212205094ac89ddff8b275034a2c1b356f1957ff4369d85314fc40951856a8bd93adb64736f6c634300081a0033000000000000000000000000c947c179cf57bfe813f4001b81c3f09342f1d0fa