60806040526012600a620000149190620002c6565b633b9aca0062000025919062000317565b6001553480156200003557600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600154600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6001546040516200011e919062000373565b60405180910390a362000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620001ba578086048111156200019257620001916200012c565b5b6001851615620001a25780820291505b8081029050620001b2856200015b565b945062000172565b94509492505050565b600082620001d55760019050620002a8565b81620001e55760009050620002a8565b8160018114620001fe576002811462000209576200023f565b6001915050620002a8565b60ff8411156200021e576200021d6200012c565b5b8360020a9150848211156200023857620002376200012c565b5b50620002a8565b5060208310610133831016604e8410600b8410161715620002795782820a9050838111156200027357620002726200012c565b5b620002a8565b62000288848484600162000168565b92509050818404811115620002a257620002a16200012c565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620002d382620002af565b9150620002e083620002b9565b92506200030f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620001c3565b905092915050565b60006200032482620002af565b91506200033183620002af565b92508282026200034181620002af565b915082820484148315176200035b576200035a6200012c565b5b5092915050565b6200036d81620002af565b82525050565b60006020820190506200038a600083018462000362565b92915050565b611b8580620003a06000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806370a08231116100a2578063a9059cbb11610071578063a9059cbb146102be578063b4a99a4e146102ee578063dd62ed3e1461030c578063f0f442601461033c578063f2fde38b146103585761010b565b806370a082311461023457806395d89b41146102645780639af1d35a14610282578063a01c3483146102a05761010b565b80632d99d32e116100de5780632d99d32e146101ac578063313ce567146101c85780634fc9ab15146101e65780635daf3146146102165761010b565b806306fdde0314610110578063095ea7b31461012e57806318160ddd1461015e57806323b872dd1461017c575b600080fd5b610118610388565b6040516101259190611264565b60405180910390f35b6101486004803603810190610143919061131f565b6103c5565b604051610155919061137a565b60405180910390f35b610166610537565b60405161017391906113a4565b60405180910390f35b610196600480360381019061019191906113bf565b610541565b6040516101a3919061137a565b60405180910390f35b6101c660048036038101906101c1919061143e565b6105c0565b005b6101d06106a9565b6040516101dd919061149a565b60405180910390f35b61020060048036038101906101fb91906114b5565b6106b2565b60405161020d919061137a565b60405180910390f35b61021e6106d2565b60405161022b91906114f1565b60405180910390f35b61024e600480360381019061024991906114b5565b6106f8565b60405161025b91906113a4565b60405180910390f35b61026c610741565b6040516102799190611264565b60405180910390f35b61028a61077e565b60405161029791906113a4565b60405180910390f35b6102a8610783565b6040516102b591906114f1565b60405180910390f35b6102d860048036038101906102d3919061131f565b610789565b6040516102e5919061137a565b60405180910390f35b6102f66107f6565b60405161030391906114f1565b60405180910390f35b6103266004803603810190610321919061150c565b61081a565b60405161033391906113a4565b60405180910390f35b610356600480360381019061035191906114b5565b6108a1565b005b610372600480360381019061036d91906114b5565b6109e2565b60405161037f919061137a565b60405180910390f35b60606040518060400160405280600381526020017f58595a0000000000000000000000000000000000000000000000000000000000815250905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c90611598565b60405180910390fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104c191906115e7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161052591906113a4565b60405180910390a36001905092915050565b6000600154905090565b6000801515600260009054906101000a900460ff1615151461056257600080fd5b6001600260006101000a81548160ff021916908315150217905550600033905061058d858285610b49565b610598858585610c4b565b5060019150506000600260006101000a81548160ff0219169083151502179055509392505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461064e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064590611667565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006012905090565b60066020528060005260406000206000915054906101000a900460ff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606040518060400160405280600381526020017f58595a0000000000000000000000000000000000000000000000000000000000815250905090565b600a81565b61dead81565b6000801515600260009054906101000a900460ff161515146107aa57600080fd5b6001600260006101000a81548160ff0219169083151502179055506107d0338484610c4b565b50600190506000600260006101000a81548160ff02191690831515021790555092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461092f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092690611667565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361099e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610995906116d3565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6990611667565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af79061173f565b60405180910390fd5b816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b6000610b55848461081a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c455781811015610bc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb8906117ab565b60405180910390fd5b818103600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb290611817565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2190611883565b60405180910390fd5b6000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610dcd5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15610dfd57610dfa6103e8610dec600a86610e3890919063ffffffff16565b610eb290919063ffffffff16565b90505b6000811115610e1157610e108582610f0a565b5b610e2e8585610e298487610fa490919063ffffffff16565b610ffd565b9150509392505050565b6000808303610e4a5760009050610eac565b60008284610e5891906118a3565b9050828482610e679190611914565b14610ea7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9e906119b7565b60405180910390fd5b809150505b92915050565b6000808211610ef6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eed90611a23565b60405180910390fd5b8183610f029190611914565b905092915050565b6000610f356103e8610f276101f485610e3890919063ffffffff16565b610eb290919063ffffffff16565b90506000811115610f6f57610f6d83600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683610ffd565b505b6000610f848284610fa490919063ffffffff16565b90506000811115610f9e57610f9c8461dead83610ffd565b505b50505050565b600082821115610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe090611a8f565b60405180910390fd5b8183610ff59190611aaf565b905092915050565b600080600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107c90611b2f565b60405180910390fd5b828103600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061dead73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036111155782600160008282540392505081905550611163565b82600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516111c091906113a4565b60405180910390a360019150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561120e5780820151818401526020810190506111f3565b60008484015250505050565b6000601f19601f8301169050919050565b6000611236826111d4565b61124081856111df565b93506112508185602086016111f0565b6112598161121a565b840191505092915050565b6000602082019050818103600083015261127e818461122b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006112b68261128b565b9050919050565b6112c6816112ab565b81146112d157600080fd5b50565b6000813590506112e3816112bd565b92915050565b6000819050919050565b6112fc816112e9565b811461130757600080fd5b50565b600081359050611319816112f3565b92915050565b6000806040838503121561133657611335611286565b5b6000611344858286016112d4565b92505060206113558582860161130a565b9150509250929050565b60008115159050919050565b6113748161135f565b82525050565b600060208201905061138f600083018461136b565b92915050565b61139e816112e9565b82525050565b60006020820190506113b96000830184611395565b92915050565b6000806000606084860312156113d8576113d7611286565b5b60006113e6868287016112d4565b93505060206113f7868287016112d4565b92505060406114088682870161130a565b9150509250925092565b61141b8161135f565b811461142657600080fd5b50565b60008135905061143881611412565b92915050565b6000806040838503121561145557611454611286565b5b6000611463858286016112d4565b925050602061147485828601611429565b9150509250929050565b600060ff82169050919050565b6114948161147e565b82525050565b60006020820190506114af600083018461148b565b92915050565b6000602082840312156114cb576114ca611286565b5b60006114d9848285016112d4565b91505092915050565b6114eb816112ab565b82525050565b600060208201905061150660008301846114e2565b92915050565b6000806040838503121561152357611522611286565b5b6000611531858286016112d4565b9250506020611542858286016112d4565b9150509250929050565b7f494e56414c4944205a45524f2041444400000000000000000000000000000000600082015250565b60006115826010836111df565b915061158d8261154c565b602082019050919050565b600060208201905081810360008301526115b181611575565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006115f2826112e9565b91506115fd836112e9565b9250828201905080821115611615576116146115b8565b5b92915050565b7f4f6e6c79206f776e657220637265617465207468652074780000000000000000600082015250565b60006116516018836111df565b915061165c8261161b565b602082019050919050565b6000602082019050818103600083015261168081611644565b9050919050565b7f496e76616c69642054726561737572792057616c6c6574000000000000000000600082015250565b60006116bd6017836111df565b91506116c882611687565b602082019050919050565b600060208201905081810360008301526116ec816116b0565b9050919050565b7f416c7265616479206f776e657200000000000000000000000000000000000000600082015250565b6000611729600d836111df565b9150611734826116f3565b602082019050919050565b600060208201905081810360008301526117588161171c565b9050919050565b7f45786365656420416c6c6f77616e636500000000000000000000000000000000600082015250565b60006117956010836111df565b91506117a08261175f565b602082019050919050565b600060208201905081810360008301526117c481611788565b9050919050565b7f496e76616c69642073656e6465722077616c6c65740000000000000000000000600082015250565b60006118016015836111df565b915061180c826117cb565b602082019050919050565b60006020820190508181036000830152611830816117f4565b9050919050565b7f496e76616c69642072656365697665722077616c6c6574000000000000000000600082015250565b600061186d6017836111df565b915061187882611837565b602082019050919050565b6000602082019050818103600083015261189c81611860565b9050919050565b60006118ae826112e9565b91506118b9836112e9565b92508282026118c7816112e9565b915082820484148315176118de576118dd6115b8565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061191f826112e9565b915061192a836112e9565b92508261193a576119396118e5565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006119a16021836111df565b91506119ac82611945565b604082019050919050565b600060208201905081810360008301526119d081611994565b9050919050565b7f536166654d6174683a206469766973696f6e206279207a65726f000000000000600082015250565b6000611a0d601a836111df565b9150611a18826119d7565b602082019050919050565b60006020820190508181036000830152611a3c81611a00565b9050919050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000600082015250565b6000611a79601e836111df565b9150611a8482611a43565b602082019050919050565b60006020820190508181036000830152611aa881611a6c565b9050919050565b6000611aba826112e9565b9150611ac5836112e9565b9250828203905081811115611add57611adc6115b8565b5b92915050565b7f496e73756666696369656e742073656e6465722066756e640000000000000000600082015250565b6000611b196018836111df565b9150611b2482611ae3565b602082019050919050565b60006020820190508181036000830152611b4881611b0c565b905091905056fea264697066735822122030a967cb4b911131f9e90fa9f715f235be6ecd6195e1718e89a90290f9eba24064736f6c63430008110033