0x60806040523480156200001157600080fd5b506040516200215738038062002157833981810160405281019062000037919062000662565b620000576200004b6200039e60201b60201c565b620003a660201b60201c565b81600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000106573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012c919062000712565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001dc919062000712565b6040518363ffffffff1660e01b8152600401620001fb92919062000755565b6020604051808303816000875af11580156200021b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000241919062000712565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606460098190555083600b90816200029a9190620009cd565b506009600260006101000a81548160ff021916908360ff16021790555082600a9081620002c89190620009cd565b5060018081905550600954600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600260009054906101000a900460ff16600a62000334919062000c44565b66038d7ea4c6800062000348919062000c95565b600e81905550600e54600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505062000ce0565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620004d38262000488565b810181811067ffffffffffffffff82111715620004f557620004f462000499565b5b80604052505050565b60006200050a6200046a565b9050620005188282620004c8565b919050565b600067ffffffffffffffff8211156200053b576200053a62000499565b5b620005468262000488565b9050602081019050919050565b60005b838110156200057357808201518184015260208101905062000556565b60008484015250505050565b60006200059662000590846200051d565b620004fe565b905082815260208101848484011115620005b557620005b462000483565b5b620005c284828562000553565b509392505050565b600082601f830112620005e257620005e16200047e565b5b8151620005f48482602086016200057f565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200062a82620005fd565b9050919050565b6200063c816200061d565b81146200064857600080fd5b50565b6000815190506200065c8162000631565b92915050565b600080600080608085870312156200067f576200067e62000474565b5b600085015167ffffffffffffffff811115620006a0576200069f62000479565b5b620006ae87828801620005ca565b945050602085015167ffffffffffffffff811115620006d257620006d162000479565b5b620006e087828801620005ca565b9350506040620006f3878288016200064b565b925050606062000706878288016200064b565b91505092959194509250565b6000602082840312156200072b576200072a62000474565b5b60006200073b848285016200064b565b91505092915050565b6200074f816200061d565b82525050565b60006040820190506200076c600083018562000744565b6200077b602083018462000744565b9392505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007d557607f821691505b602082108103620007eb57620007ea6200078d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000816565b62000861868362000816565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620008ae620008a8620008a28462000879565b62000883565b62000879565b9050919050565b6000819050919050565b620008ca836200088d565b620008e2620008d982620008b5565b84845462000823565b825550505050565b600090565b620008f9620008ea565b62000906818484620008bf565b505050565b5b818110156200092e5762000922600082620008ef565b6001810190506200090c565b5050565b601f8211156200097d576200094781620007f1565b620009528462000806565b8101602085101562000962578190505b6200097a620009718562000806565b8301826200090b565b50505b505050565b600082821c905092915050565b6000620009a26000198460080262000982565b1980831691505092915050565b6000620009bd83836200098f565b9150826002028217905092915050565b620009d88262000782565b67ffffffffffffffff811115620009f457620009f362000499565b5b62000a008254620007bc565b62000a0d82828562000932565b600060209050601f83116001811462000a45576000841562000a30578287015190505b62000a3c8582620009af565b86555062000aac565b601f19841662000a5586620007f1565b60005b8281101562000a7f5784890151825560018201915060208501945060208101905062000a58565b8683101562000a9f578489015162000a9b601f8916826200098f565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000b425780860481111562000b1a5762000b1962000ab4565b5b600185161562000b2a5780820291505b808102905062000b3a8562000ae3565b945062000afa565b94509492505050565b60008262000b5d576001905062000c30565b8162000b6d576000905062000c30565b816001811462000b86576002811462000b915762000bc7565b600191505062000c30565b60ff84111562000ba65762000ba562000ab4565b5b8360020a91508482111562000bc05762000bbf62000ab4565b5b5062000c30565b5060208310610133831016604e8410600b841016171562000c015782820a90508381111562000bfb5762000bfa62000ab4565b5b62000c30565b62000c10848484600162000af0565b9250905081840481111562000c2a5762000c2962000ab4565b5b81810290505b9392505050565b600060ff82169050919050565b600062000c518262000879565b915062000c5e8362000c37565b925062000c8d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b4b565b905092915050565b600062000ca28262000879565b915062000caf8362000879565b925082820262000cbf8162000879565b9150828204841483151762000cd95762000cd862000ab4565b5b5092915050565b6114678062000cf06000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b4114610204578063a9059cbb14610222578063dd62ed3e14610252578063f2fde38b14610282576100cf565b806370a08231146101ac578063715018a6146101dc5780638da5cb5b146101e6576100cf565b806306fdde03146100d4578063095ea7b3146100f25780631694505e1461012257806318160ddd1461014057806323b872dd1461015e578063313ce5671461018e575b600080fd5b6100dc61029e565b6040516100e99190610e49565b60405180910390f35b61010c60048036038101906101079190610f04565b610330565b6040516101199190610f5f565b60405180910390f35b61012a610345565b6040516101379190610fd9565b60405180910390f35b61014861036b565b6040516101559190611003565b60405180910390f35b6101786004803603810190610173919061101e565b610375565b6040516101859190610f5f565b60405180910390f35b610196610482565b6040516101a39190611003565b60405180910390f35b6101c660048036038101906101c19190611071565b61049c565b6040516101d39190611003565b60405180910390f35b6101e46104e5565b005b6101ee61056d565b6040516101fb91906110ad565b60405180910390f35b61020c610596565b6040516102199190610e49565b60405180910390f35b61023c60048036038101906102379190610f04565b610628565b6040516102499190610f5f565b60405180910390f35b61026c600480360381019061026791906110c8565b6106a4565b6040516102799190611003565b60405180910390f35b61029c60048036038101906102979190611071565b61072b565b005b6060600b80546102ad90611137565b80601f01602080910402602001604051908101604052809291908181526020018280546102d990611137565b80156103265780601f106102fb57610100808354040283529160200191610326565b820191906000526020600020905b81548152906001019060200180831161030957829003601f168201915b5050505050905090565b600061033d338484610822565b905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600e54905090565b60006103828484846109bd565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516103df9190611003565b60405180910390a3610479843384600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546104749190611197565b610822565b90509392505050565b6000600260009054906101000a900460ff1660ff16905090565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6104ed610ced565b73ffffffffffffffffffffffffffffffffffffffff1661050b61056d565b73ffffffffffffffffffffffffffffffffffffffff1614610561576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055890611217565b60405180910390fd5b61056b6000610cf5565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a80546105a590611137565b80601f01602080910402602001604051908101604052809291908181526020018280546105d190611137565b801561061e5780601f106105f35761010080835404028352916020019161061e565b820191906000526020600020905b81548152906001019060200180831161060157829003601f168201915b5050505050905090565b60006106353384846109bd565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106929190611003565b60405180910390a36001905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610733610ced565b73ffffffffffffffffffffffffffffffffffffffff1661075161056d565b73ffffffffffffffffffffffffffffffffffffffff16146107a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079e90611217565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080d906112a9565b60405180910390fd5b61081f81610cf5565b50565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561088d5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b6108cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c39061133b565b60405180910390fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109aa9190611003565b60405180910390a3600190509392505050565b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054148015610a4b57506000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15610aff578273ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610afe57600954600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610af69190611197565b925050819055505b5b60015481610b0d919061135b565b6007819055506000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403610bb15780600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ba99190611197565b925050819055505b600954600754610bc191906113cc565b60038190555060035481610bd59190611197565b905060095460066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c4a91906113fd565b9250508190555081600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ce191906113fd565b92505081905550505050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610df3578082015181840152602081019050610dd8565b60008484015250505050565b6000601f19601f8301169050919050565b6000610e1b82610db9565b610e258185610dc4565b9350610e35818560208601610dd5565b610e3e81610dff565b840191505092915050565b60006020820190508181036000830152610e638184610e10565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610e9b82610e70565b9050919050565b610eab81610e90565b8114610eb657600080fd5b50565b600081359050610ec881610ea2565b92915050565b6000819050919050565b610ee181610ece565b8114610eec57600080fd5b50565b600081359050610efe81610ed8565b92915050565b60008060408385031215610f1b57610f1a610e6b565b5b6000610f2985828601610eb9565b9250506020610f3a85828601610eef565b9150509250929050565b60008115159050919050565b610f5981610f44565b82525050565b6000602082019050610f746000830184610f50565b92915050565b6000819050919050565b6000610f9f610f9a610f9584610e70565b610f7a565b610e70565b9050919050565b6000610fb182610f84565b9050919050565b6000610fc382610fa6565b9050919050565b610fd381610fb8565b82525050565b6000602082019050610fee6000830184610fca565b92915050565b610ffd81610ece565b82525050565b60006020820190506110186000830184610ff4565b92915050565b60008060006060848603121561103757611036610e6b565b5b600061104586828701610eb9565b935050602061105686828701610eb9565b925050604061106786828701610eef565b9150509250925092565b60006020828403121561108757611086610e6b565b5b600061109584828501610eb9565b91505092915050565b6110a781610e90565b82525050565b60006020820190506110c2600083018461109e565b92915050565b600080604083850312156110df576110de610e6b565b5b60006110ed85828601610eb9565b92505060206110fe85828601610eb9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061114f57607f821691505b60208210810361116257611161611108565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006111a282610ece565b91506111ad83610ece565b92508282039050818111156111c5576111c4611168565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611201602083610dc4565b915061120c826111cb565b602082019050919050565b60006020820190508181036000830152611230816111f4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611293602683610dc4565b915061129e82611237565b604082019050919050565b600060208201905081810360008301526112c281611286565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611325602483610dc4565b9150611330826112c9565b604082019050919050565b6000602082019050818103600083015261135481611318565b9050919050565b600061136682610ece565b915061137183610ece565b925082820261137f81610ece565b9150828204841483151761139657611395611168565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006113d782610ece565b91506113e283610ece565b9250826113f2576113f161139d565b5b828204905092915050565b600061140882610ece565b915061141383610ece565b925082820190508082111561142b5761142a611168565b5b9291505056fea2646970667358221220324e7e7163e18579b451c1c063da580037e9b6b703418030695f904e52dc472764736f6c63430008110033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000005d68f7a7f5e0c28e9a8087bb4cf12c577b6a8518000000000000000000000000000000000000000000000000000000000000000f52697368692053756e616b20496e750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f52697368692053756e616b20496e750000000000000000000000000000000000