60806040526000600455600060055560006006556000600755600060085560006009556000600e60146101000a81548160ff0219169083151502179055506000600e60156101000a81548160ff0219169083151502179055503480156200006557600080fd5b50604051620044f5380380620044f583398181016040528101906200008b919062000898565b60006200009d6200082660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b7827f30b17207cd7462b6105041f165b3779bcb600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000620002286200082660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60026000620005296200082660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860646012600a620005cc919062000a79565b633b9aca00620005dd919062000aca565b620005e9919062000b44565b620005f5919062000aca565b60016000620006096200082660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550605c60646012600a6200065b919062000a79565b633b9aca006200066c919062000aca565b62000678919062000b44565b62000684919062000aca565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620006d76200082660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600860646012600a6200073a919062000a79565b633b9aca006200074b919062000aca565b62000757919062000b44565b62000763919062000aca565b60405162000772919062000b8d565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef605c60646012600a620007de919062000a79565b633b9aca00620007ef919062000aca565b620007fb919062000b44565b62000807919062000aca565b60405162000816919062000b8d565b60405180910390a3505062000baa565b600033905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008608262000833565b9050919050565b620008728162000853565b81146200087e57600080fd5b50565b600081519050620008928162000867565b92915050565b60008060408385031215620008b257620008b16200082e565b5b6000620008c28582860162000881565b9250506020620008d58582860162000881565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200096d57808604811115620009455762000944620008df565b5b6001851615620009555780820291505b808102905062000965856200090e565b945062000925565b94509492505050565b60008262000988576001905062000a5b565b8162000998576000905062000a5b565b8160018114620009b15760028114620009bc57620009f2565b600191505062000a5b565b60ff841115620009d157620009d0620008df565b5b8360020a915084821115620009eb57620009ea620008df565b5b5062000a5b565b5060208310610133831016604e8410600b841016171562000a2c5782820a90508381111562000a265762000a25620008df565b5b62000a5b565b62000a3b84848460016200091b565b9250905081840481111562000a555762000a54620008df565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000a868262000a62565b915062000a938362000a6c565b925062000ac27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000976565b905092915050565b600062000ad78262000a62565b915062000ae48362000a62565b925082820262000af48162000a62565b9150828204841483151762000b0e5762000b0d620008df565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000b518262000a62565b915062000b5e8362000a62565b92508262000b715762000b7062000b15565b5b828204905092915050565b62000b878162000a62565b82525050565b600060208201905062000ba4600083018462000b7c565b92915050565b61393b8062000bba6000396000f3fe6080604052600436106101c65760003560e01c806351bc3c85116100f75780638da5cb5b11610095578063d24843c711610064578063d24843c71461061e578063dd62ed3e14610647578063ea414b2814610684578063f2fde38b146106ad576101cd565b80638da5cb5b1461056257806395d89b411461058d578063a9059cbb146105b8578063c4590d3f146105f5576101cd565b806370a08231116100d157806370a08231146104b8578063715018a6146104f557806373889f4a1461050c57806385b27c8514610537576101cd565b806351bc3c851461044f57806352f7c9881461046657806364998def1461048f576101cd565b80632b14ca5611610164578063470624021161013e57806347062402146103b257806349bd5a5e146103dd5780634cf778b1146104085780635165be8714610424576101cd565b80632b14ca5614610331578063313ce5671461035c57806336db712914610387576101cd565b80631bddb706116101a05780631bddb706146102655780631f53ac021461028e57806323b872dd146102b75780632a11ced0146102f4576101cd565b806306fdde03146101d2578063095ea7b3146101fd57806318160ddd1461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76106d6565b6040516101f49190612a20565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f9190612adb565b610713565b6040516102319190612b36565b60405180910390f35b34801561024657600080fd5b5061024f610731565b60405161025c9190612b60565b60405180910390f35b34801561027157600080fd5b5061028c60048036038101906102879190612b7b565b610755565b005b34801561029a57600080fd5b506102b560048036038101906102b09190612b7b565b61082e565b005b3480156102c357600080fd5b506102de60048036038101906102d99190612ba8565b6108cf565b6040516102eb9190612b36565b60405180910390f35b34801561030057600080fd5b5061031b60048036038101906103169190612bfb565b6109c5565b6040516103289190612c37565b60405180910390f35b34801561033d57600080fd5b50610346610a04565b6040516103539190612b60565b60405180910390f35b34801561036857600080fd5b50610371610a0a565b60405161037e9190612c6e565b60405180910390f35b34801561039357600080fd5b5061039c610a13565b6040516103a99190612b60565b60405180910390f35b3480156103be57600080fd5b506103c7610a19565b6040516103d49190612b60565b60405180910390f35b3480156103e957600080fd5b506103f2610a1f565b6040516103ff9190612c37565b60405180910390f35b610422600480360381019061041d9190612c89565b610a45565b005b34801561043057600080fd5b50610439610ec0565b6040516104469190612b60565b60405180910390f35b34801561045b57600080fd5b50610464610ec6565b005b34801561047257600080fd5b5061048d60048036038101906104889190612d16565b610fdd565b005b34801561049b57600080fd5b506104b660048036038101906104b19190612bfb565b611080565b005b3480156104c457600080fd5b506104df60048036038101906104da9190612b7b565b611121565b6040516104ec9190612b60565b60405180910390f35b34801561050157600080fd5b5061050a61116a565b005b34801561051857600080fd5b506105216112bd565b60405161052e9190612b60565b60405180910390f35b34801561054357600080fd5b5061054c6112ca565b6040516105599190612b60565b60405180910390f35b34801561056e57600080fd5b506105776112d0565b6040516105849190612c37565b60405180910390f35b34801561059957600080fd5b506105a26112f9565b6040516105af9190612a20565b60405180910390f35b3480156105c457600080fd5b506105df60048036038101906105da9190612adb565b611336565b6040516105ec9190612b36565b60405180910390f35b34801561060157600080fd5b5061061c60048036038101906106179190612d16565b611354565b005b34801561062a57600080fd5b5061064560048036038101906106409190612bfb565b6113ff565b005b34801561065357600080fd5b5061066e60048036038101906106699190612d56565b6114a0565b60405161067b9190612b60565b60405180910390f35b34801561069057600080fd5b506106ab60048036038101906106a69190612b7b565b611527565b005b3480156106b957600080fd5b506106d460048036038101906106cf9190612b7b565b611600565b005b60606040518060400160405280600481526020017f5665696c00000000000000000000000000000000000000000000000000000000815250905090565b60006107276107206117c1565b84846117c9565b6001905092915050565b60006012600a6107419190612ef8565b633b9aca006107509190612f43565b905090565b61075d6117c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e190612fd1565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661086f6117c1565b73ffffffffffffffffffffffffffffffffffffffff16036108cc5780600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b60006108dc84848461195d565b6109ba846108e86117c1565b6109b5856040518060400160405280600d81526020017f6c6f7720616c6c6f77616e636500000000000000000000000000000000000000815250600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061096b6117c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252b9092919063ffffffff16565b6117c9565b600190509392505050565b600b81815481106109d557600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60006012905090565b60075481565b60045481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a4d6117c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad190612fd1565b60405180910390fd5b600e60149054906101000a900460ff1615610b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2190613063565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bad9190613098565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4c9190613098565b6040518363ffffffff1660e01b8152600401610c699291906130c5565b6020604051808303816000875af1158015610c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cac9190613098565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610d2730611121565b600080610d326112d0565b426040518863ffffffff1660e01b8152600401610d5496959493929190613133565b60606040518083038185885af1158015610d72573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d9791906131a9565b505050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610e2b9291906131fc565b6020604051808303816000875af1158015610e4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6e9190613251565b50610e79868661258f565b610e82846125a1565b610e8b836125ab565b610e94826125b5565b610e9d816125bf565b6001600e60146101000a81548160ff021916908315150217905550505050505050565b60085481565b610ece6112d0565b73ffffffffffffffffffffffffffffffffffffffff16610eec6117c1565b73ffffffffffffffffffffffffffffffffffffffff161480610f625750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f4a6117c1565b73ffffffffffffffffffffffffffffffffffffffff16145b610fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f98906132ca565b60405180910390fd5b6000610fac30611121565b90506000811115610fc157610fc0816125c9565b5b60004790506000811115610fd957610fd8816127f9565b5b5050565b610fe56117c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611072576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106990612fd1565b60405180910390fd5b61107c828261258f565b5050565b6110886117c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611115576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110c90612fd1565b60405180910390fd5b61111e816125b5565b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111726117c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f690612fd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600b80549050905090565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f5645494c00000000000000000000000000000000000000000000000000000000815250905090565b600061134a6113436117c1565b848461195d565b6001905092915050565b61135c6117c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e090612fd1565b60405180910390fd5b6113f2826125a1565b6113fb816125ab565b5050565b6114076117c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148b90612fd1565b60405180910390fd5b61149d816125bf565b50565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61152f6117c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b390612fd1565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116086117c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168c90612fd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fb90613336565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118335750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611872576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611869906133a2565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119509190612b60565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c390613434565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a32906134c6565b60405180910390fd5b60008111611a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7590613558565b60405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b245750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d4457600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611bc65750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611c8c5760075482611bd885611121565b611be29190613578565b111580611bf157506000600754145b611c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c27906135f8565b60405180910390fd5b60065482111580611c4357506000600654145b611c82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7990613664565b60405180910390fd5b6004549050611d43565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d3d5760065482111580611cf457506000600654145b611d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2a90613664565b60405180910390fd5b6005549050611d42565b600090505b5b5b600060648284611d549190612f43565b611d5e91906136b3565b905060008184611d6e91906136e4565b905083600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dbb91906136e4565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e499190613578565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600e60159054906101000a900460ff16158015611f3b5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b8015611f945750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b8015611fac5750600e60149054906101000a900460ff165b15611fde576009548110611fdd57611fc3816125c9565b60004790506000811115611fdb57611fda816127f9565b5b505b5b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120865750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156120d157506000600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b1561213a57600b869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121859190613578565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000831115612237573073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161222e9190612b60565b60405180910390a35b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122df5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b801561232a57506000600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156124bd5760005b600b805490508110156124bb578773ffffffffffffffffffffffffffffffffffffffff16600b828154811061236a57612369613718565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036124a857600b6001600b805490506123c491906136e4565b815481106123d5576123d4613718565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b828154811061241457612413613718565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b80548061246e5761246d613747565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556124bb565b80806124b390613776565b915050612332565b505b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161251a9190612b60565b60405180910390a350505050505050565b6000838311158290612573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256a9190612a20565b60405180910390fd5b506000838561258291906136e4565b9050809150509392505050565b81600481905550806005819055505050565b8060068190555050565b8060078190555050565b8060098190555050565b8060088190555050565b6001600e60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612601576126006137be565b5b60405190808252806020026020018201604052801561262f5781602001602082028036833780820191505090505b509050308160008151811061264757612646613718565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127049190613098565b8160018151811061271857612717613718565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016127a89594939291906138ab565b600060405180830381600087803b1580156127c257600080fd5b505af11580156127d6573d6000803e3d6000fd5b50505050506000600e60156101000a81548160ff02191690831515021790555050565b600060646008548361280b9190612f43565b61281591906136b3565b90506000818361282591906136e4565b9050600060646014836128389190612f43565b61284291906136b3565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156128ac573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612915573d6000803e3d6000fd5b50600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc828461295e91906136e4565b9081150290604051600060405180830381858888f19350505050158015612989573d6000803e3d6000fd5b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129ca5780820151818401526020810190506129af565b60008484015250505050565b6000601f19601f8301169050919050565b60006129f282612990565b6129fc818561299b565b9350612a0c8185602086016129ac565b612a15816129d6565b840191505092915050565b60006020820190508181036000830152612a3a81846129e7565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a7282612a47565b9050919050565b612a8281612a67565b8114612a8d57600080fd5b50565b600081359050612a9f81612a79565b92915050565b6000819050919050565b612ab881612aa5565b8114612ac357600080fd5b50565b600081359050612ad581612aaf565b92915050565b60008060408385031215612af257612af1612a42565b5b6000612b0085828601612a90565b9250506020612b1185828601612ac6565b9150509250929050565b60008115159050919050565b612b3081612b1b565b82525050565b6000602082019050612b4b6000830184612b27565b92915050565b612b5a81612aa5565b82525050565b6000602082019050612b756000830184612b51565b92915050565b600060208284031215612b9157612b90612a42565b5b6000612b9f84828501612a90565b91505092915050565b600080600060608486031215612bc157612bc0612a42565b5b6000612bcf86828701612a90565b9350506020612be086828701612a90565b9250506040612bf186828701612ac6565b9150509250925092565b600060208284031215612c1157612c10612a42565b5b6000612c1f84828501612ac6565b91505092915050565b612c3181612a67565b82525050565b6000602082019050612c4c6000830184612c28565b92915050565b600060ff82169050919050565b612c6881612c52565b82525050565b6000602082019050612c836000830184612c5f565b92915050565b60008060008060008060c08789031215612ca657612ca5612a42565b5b6000612cb489828a01612ac6565b9650506020612cc589828a01612ac6565b9550506040612cd689828a01612ac6565b9450506060612ce789828a01612ac6565b9350506080612cf889828a01612ac6565b92505060a0612d0989828a01612ac6565b9150509295509295509295565b60008060408385031215612d2d57612d2c612a42565b5b6000612d3b85828601612ac6565b9250506020612d4c85828601612ac6565b9150509250929050565b60008060408385031215612d6d57612d6c612a42565b5b6000612d7b85828601612a90565b9250506020612d8c85828601612a90565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612e1c57808604811115612df857612df7612d96565b5b6001851615612e075780820291505b8081029050612e1585612dc5565b9450612ddc565b94509492505050565b600082612e355760019050612ef1565b81612e435760009050612ef1565b8160018114612e595760028114612e6357612e92565b6001915050612ef1565b60ff841115612e7557612e74612d96565b5b8360020a915084821115612e8c57612e8b612d96565b5b50612ef1565b5060208310610133831016604e8410600b8410161715612ec75782820a905083811115612ec257612ec1612d96565b5b612ef1565b612ed48484846001612dd2565b92509050818404811115612eeb57612eea612d96565b5b81810290505b9392505050565b6000612f0382612aa5565b9150612f0e83612c52565b9250612f3b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612e25565b905092915050565b6000612f4e82612aa5565b9150612f5983612aa5565b9250828202612f6781612aa5565b91508282048414831517612f7e57612f7d612d96565b5b5092915050565b7f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b6000612fbb60178361299b565b9150612fc682612f85565b602082019050919050565b60006020820190508181036000830152612fea81612fae565b9050919050565b7f746f6b656e20697320616c726561647920656e61626c656420666f722074726160008201527f64696e6700000000000000000000000000000000000000000000000000000000602082015250565b600061304d60248361299b565b915061305882612ff1565b604082019050919050565b6000602082019050818103600083015261307c81613040565b9050919050565b60008151905061309281612a79565b92915050565b6000602082840312156130ae576130ad612a42565b5b60006130bc84828501613083565b91505092915050565b60006040820190506130da6000830185612c28565b6130e76020830184612c28565b9392505050565b6000819050919050565b6000819050919050565b600061311d613118613113846130ee565b6130f8565b612aa5565b9050919050565b61312d81613102565b82525050565b600060c0820190506131486000830189612c28565b6131556020830188612b51565b6131626040830187613124565b61316f6060830186613124565b61317c6080830185612c28565b61318960a0830184612b51565b979650505050505050565b6000815190506131a381612aaf565b92915050565b6000806000606084860312156131c2576131c1612a42565b5b60006131d086828701613194565b93505060206131e186828701613194565b92505060406131f286828701613194565b9150509250925092565b60006040820190506132116000830185612c28565b61321e6020830184612b51565b9392505050565b61322e81612b1b565b811461323957600080fd5b50565b60008151905061324b81613225565b92915050565b60006020828403121561326757613266612a42565b5b60006132758482850161323c565b91505092915050565b7f496e76616c6964207065726d697373696f6e0000000000000000000000000000600082015250565b60006132b460128361299b565b91506132bf8261327e565b602082019050919050565b600060208201905081810360008301526132e3816132a7565b9050919050565b7f6e6577206f776e6572206973207a65726f206164647265737300000000000000600082015250565b600061332060198361299b565b915061332b826132ea565b602082019050919050565b6000602082019050818103600083015261334f81613313565b9050919050565b7f617070726f7665207a65726f2061646472657373000000000000000000000000600082015250565b600061338c60148361299b565b915061339782613356565b602082019050919050565b600060208201905081810360008301526133bb8161337f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061341e60258361299b565b9150613429826133c2565b604082019050919050565b6000602082019050818103600083015261344d81613411565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006134b060238361299b565b91506134bb82613454565b604082019050919050565b600060208201905081810360008301526134df816134a3565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061354260298361299b565b915061354d826134e6565b604082019050919050565b6000602082019050818103600083015261357181613535565b9050919050565b600061358382612aa5565b915061358e83612aa5565b92508282019050808211156135a6576135a5612d96565b5b92915050565b7f457863656564206d617820616d6f756e74207065722077616c6c657400000000600082015250565b60006135e2601c8361299b565b91506135ed826135ac565b602082019050919050565b60006020820190508181036000830152613611816135d5565b9050919050565b7f457863656564206d617820616d6f756e74207065722074780000000000000000600082015250565b600061364e60188361299b565b915061365982613618565b602082019050919050565b6000602082019050818103600083015261367d81613641565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136be82612aa5565b91506136c983612aa5565b9250826136d9576136d8613684565b5b828204905092915050565b60006136ef82612aa5565b91506136fa83612aa5565b925082820390508181111561371257613711612d96565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600061378182612aa5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036137b3576137b2612d96565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61382281612a67565b82525050565b60006138348383613819565b60208301905092915050565b6000602082019050919050565b6000613858826137ed565b61386281856137f8565b935061386d83613809565b8060005b8381101561389e5781516138858882613828565b975061389083613840565b925050600181019050613871565b5085935050505092915050565b600060a0820190506138c06000830188612b51565b6138cd6020830187613124565b81810360408301526138df818661384d565b90506138ee6060830185612c28565b6138fb6080830184612b51565b969550505050505056fea26469706673582212200894155e2993d8d1be8d4cfb953fec87e5076facbd3453d82ed47f786939398364736f6c63430008130033000000000000000000000000e8d21b7fcc72b862930db28b4cb3b301806b8fe6000000000000000000000000b9c1a0e52daeeaf235f3fdfae0119eaecaadbd9d