608060405234801562000010575f80fd5b50620000216200026660201b60201c565b6040518060400160405280600a81526020017f5461676f205665727365000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5441474f0000000000000000000000000000000000000000000000000000000081525081600390816200009e91906200098b565b508060049081620000b091906200098b565b505050620000c4816200026d60201b60201c565b50620000d56200033060201b60201c565b600a620000e3919062000bf8565b633b9aca00620000f4919062000c48565b6006819055506200010a6200033060201b60201c565b600a62000118919062000bf8565b6301312d0062000129919062000c48565b600781905550600160085f620001446200033860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f8073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000260620002516200033860201b60201c565b6006546200036060201b60201c565b62000d91565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6012905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620003d3575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401620003ca919062000cd5565b60405180910390fd5b620003e65f8383620003ea60201b60201c565b5050565b60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16620004a6575f816200044c84620004be60201b60201c565b62000458919062000cf0565b9050600754811115620004a457826040517f208da71d0000000000000000000000000000000000000000000000000000000081526004016200049b919062000cd5565b60405180910390fd5b505b620004b98383836200050360201b60201c565b505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000557578060025f8282546200054a919062000cf0565b9250508190555062000628565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015620005e3578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620005da9392919062000d3b565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000671578060025f8282540392505081905550620006bb565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200071a919062000d76565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620007a357607f821691505b602082108103620007b957620007b86200075e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200081d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007e0565b620008298683620007e0565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620008736200086d620008678462000841565b6200084a565b62000841565b9050919050565b5f819050919050565b6200088e8362000853565b620008a66200089d826200087a565b848454620007ec565b825550505050565b5f90565b620008bc620008ae565b620008c981848462000883565b505050565b5b81811015620008f057620008e45f82620008b2565b600181019050620008cf565b5050565b601f8211156200093f576200090981620007bf565b6200091484620007d1565b8101602085101562000924578190505b6200093c6200093385620007d1565b830182620008ce565b50505b505050565b5f82821c905092915050565b5f620009615f198460080262000944565b1980831691505092915050565b5f6200097b838362000950565b9150826002028217905092915050565b620009968262000727565b67ffffffffffffffff811115620009b257620009b162000731565b5b620009be82546200078b565b620009cb828285620008f4565b5f60209050601f83116001811462000a01575f8415620009ec578287015190505b620009f885826200096e565b86555062000a67565b601f19841662000a1186620007bf565b5f5b8281101562000a3a5784890151825560018201915060208501945060208101905062000a13565b8683101562000a5a578489015162000a56601f89168262000950565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000af95780860481111562000ad15762000ad062000a6f565b5b600185161562000ae15780820291505b808102905062000af18562000a9c565b945062000ab1565b94509492505050565b5f8262000b13576001905062000be5565b8162000b22575f905062000be5565b816001811462000b3b576002811462000b465762000b7c565b600191505062000be5565b60ff84111562000b5b5762000b5a62000a6f565b5b8360020a91508482111562000b755762000b7462000a6f565b5b5062000be5565b5060208310610133831016604e8410600b841016171562000bb65782820a90508381111562000bb05762000baf62000a6f565b5b62000be5565b62000bc5848484600162000aa8565b9250905081840481111562000bdf5762000bde62000a6f565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000c048262000841565b915062000c118362000bec565b925062000c407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b02565b905092915050565b5f62000c548262000841565b915062000c618362000841565b925082820262000c718162000841565b9150828204841483151762000c8b5762000c8a62000a6f565b5b5092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000cbd8262000c92565b9050919050565b62000ccf8162000cb1565b82525050565b5f60208201905062000cea5f83018462000cc4565b92915050565b5f62000cfc8262000841565b915062000d098362000841565b925082820190508082111562000d245762000d2362000a6f565b5b92915050565b62000d358162000841565b82525050565b5f60608201905062000d505f83018662000cc4565b62000d5f602083018562000d2a565b62000d6e604083018462000d2a565b949350505050565b5f60208201905062000d8b5f83018462000d2a565b92915050565b6114598062000d9f5f395ff3fe608060405234801561000f575f80fd5b5060043610610109575f3560e01c80635b700d91116100a057806395d89b411161006f57806395d89b41146102a3578063a457c2d7146102c1578063a9059cbb146102f1578063dd62ed3e14610321578063f2fde38b1461035157610109565b80635b700d911461022f57806370a082311461024b578063715018a61461027b5780638da5cb5b1461028557610109565b8063313ce567116100dc578063313ce567146101a957806339509351146101c75780633f33e909146101f757806342966c681461021357610109565b806306fdde031461010d578063095ea7b31461012b57806318160ddd1461015b57806323b872dd14610179575b5f80fd5b61011561036d565b60405161012291906110a7565b60405180910390f35b61014560048036038101906101409190611158565b6103fd565b60405161015291906111b0565b60405180910390f35b61016361041f565b60405161017091906111d8565b60405180910390f35b610193600480360381019061018e91906111f1565b610428565b6040516101a091906111b0565b60405180910390f35b6101b1610456565b6040516101be919061125c565b60405180910390f35b6101e160048036038101906101dc9190611158565b61045e565b6040516101ee91906111b0565b60405180910390f35b610211600480360381019061020c9190611275565b610494565b005b61022d600480360381019061022891906112a0565b6104f3565b005b61024960048036038101906102449190611275565b610500565b005b61026560048036038101906102609190611275565b610560565b60405161027291906111d8565b60405180910390f35b6102836105a5565b005b61028d6105b8565b60405161029a91906112da565b60405180910390f35b6102ab6105e0565b6040516102b891906110a7565b60405180910390f35b6102db60048036038101906102d69190611158565b610670565b6040516102e891906111b0565b60405180910390f35b61030b60048036038101906103069190611158565b6106eb565b60405161031891906111b0565b60405180910390f35b61033b600480360381019061033691906112f3565b61070d565b60405161034891906111d8565b60405180910390f35b61036b60048036038101906103669190611275565b61078f565b005b60606003805461037c9061135e565b80601f01602080910402602001604051908101604052809291908181526020018280546103a89061135e565b80156103f35780601f106103ca576101008083540402835291602001916103f3565b820191905f5260205f20905b8154815290600101906020018083116103d657829003601f168201915b5050505050905090565b5f80610407610813565b905061041481858561081a565b600191505092915050565b5f600254905090565b5f80610432610813565b905061043f85828561082c565b61044a8585856108be565b60019150509392505050565b5f6012905090565b5f80610468610813565b905061048981858561047a858961070d565b61048491906113bb565b61081a565b600191505092915050565b61049c6109ae565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b6104fd3382610a35565b50565b6105086109ae565b600160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6105ad6109ae565b6105b65f610ab4565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546105ef9061135e565b80601f016020809104026020016040519081016040528092919081815260200182805461061b9061135e565b80156106665780601f1061063d57610100808354040283529160200191610666565b820191905f5260205f20905b81548152906001019060200180831161064957829003601f168201915b5050505050905090565b5f8061067a610813565b90505f610687828661070d565b9050838110156106d2578481856040517fa60f030c0000000000000000000000000000000000000000000000000000000081526004016106c9939291906113ee565b60405180910390fd5b6106df828686840361081a565b60019250505092915050565b5f806106f5610813565b90506107028185856108be565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6107976109ae565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610807575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016107fe91906112da565b60405180910390fd5b61081081610ab4565b50565b5f33905090565b6108278383836001610b77565b505050565b5f610837848461070d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108b857818110156108a9578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016108a0939291906113ee565b60405180910390fd5b6108b784848484035f610b77565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361092e575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161092591906112da565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361099e575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161099591906112da565b60405180910390fd5b6109a9838383610d46565b505050565b6109b6610813565b73ffffffffffffffffffffffffffffffffffffffff166109d46105b8565b73ffffffffffffffffffffffffffffffffffffffff1614610a33576109f7610813565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610a2a91906112da565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610aa5575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610a9c91906112da565b60405180910390fd5b610ab0825f83610d46565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610be7575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610bde91906112da565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c57575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610c4e91906112da565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610d40578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d3791906111d8565b60405180910390a35b50505050565b60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610df4575f81610d9f84610560565b610da991906113bb565b9050600754811115610df257826040517f208da71d000000000000000000000000000000000000000000000000000000008152600401610de991906112da565b60405180910390fd5b505b610dff838383610e04565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e54578060025f828254610e4891906113bb565b92505081905550610f22565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610edd578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610ed4939291906113ee565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f69578060025f8282540392505081905550610fb3565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161101091906111d8565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611054578082015181840152602081019050611039565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6110798261101d565b6110838185611027565b9350611093818560208601611037565b61109c8161105f565b840191505092915050565b5f6020820190508181035f8301526110bf818461106f565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6110f4826110cb565b9050919050565b611104816110ea565b811461110e575f80fd5b50565b5f8135905061111f816110fb565b92915050565b5f819050919050565b61113781611125565b8114611141575f80fd5b50565b5f813590506111528161112e565b92915050565b5f806040838503121561116e5761116d6110c7565b5b5f61117b85828601611111565b925050602061118c85828601611144565b9150509250929050565b5f8115159050919050565b6111aa81611196565b82525050565b5f6020820190506111c35f8301846111a1565b92915050565b6111d281611125565b82525050565b5f6020820190506111eb5f8301846111c9565b92915050565b5f805f60608486031215611208576112076110c7565b5b5f61121586828701611111565b935050602061122686828701611111565b925050604061123786828701611144565b9150509250925092565b5f60ff82169050919050565b61125681611241565b82525050565b5f60208201905061126f5f83018461124d565b92915050565b5f6020828403121561128a576112896110c7565b5b5f61129784828501611111565b91505092915050565b5f602082840312156112b5576112b46110c7565b5b5f6112c284828501611144565b91505092915050565b6112d4816110ea565b82525050565b5f6020820190506112ed5f8301846112cb565b92915050565b5f8060408385031215611309576113086110c7565b5b5f61131685828601611111565b925050602061132785828601611111565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061137557607f821691505b60208210810361138857611387611331565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6113c582611125565b91506113d083611125565b92508282019050808211156113e8576113e761138e565b5b92915050565b5f6060820190506114015f8301866112cb565b61140e60208301856111c9565b61141b60408301846111c9565b94935050505056fea26469706673582212200f166490f138bfe9566df039d6b876733a6d0647feba100405601e79c133d44764736f6c63430008150033