0x60806040526012600a6200001491906200045d565b64012a05f200620000269190620004ae565b600255600060055560006006556000600755600060085560026009556009546007546005546006546008546200005d91906200050f565b6200006991906200050f565b6200007591906200050f565b6200008191906200050f565b600a556064600b556064600c556064600d556064600e55601e600f556064601055348015620000af57600080fd5b5060405162001b1f38038062001b1f8339818101604052810190620000d59190620005a2565b6000620000e7620002bb60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600254600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600254604051620002a59190620005e5565b60405180910390a3806005819055505062000602565b600033905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200035157808604811115620003295762000328620002c3565b5b6001851615620003395780820291505b80810290506200034985620002f2565b945062000309565b94509492505050565b6000826200036c57600190506200043f565b816200037c57600090506200043f565b8160018114620003955760028114620003a057620003d6565b60019150506200043f565b60ff841115620003b557620003b4620002c3565b5b8360020a915084821115620003cf57620003ce620002c3565b5b506200043f565b5060208310610133831016604e8410600b8410161715620004105782820a9050838111156200040a5762000409620002c3565b5b6200043f565b6200041f8484846001620002ff565b92509050818404811115620004395762000438620002c3565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200046a8262000446565b9150620004778362000450565b9250620004a67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200035a565b905092915050565b6000620004bb8262000446565b9150620004c88362000446565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620005045762000503620002c3565b5b828202905092915050565b60006200051c8262000446565b9150620005298362000446565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620005615762000560620002c3565b5b828201905092915050565b600080fd5b6200057c8162000446565b81146200058857600080fd5b50565b6000815190506200059c8162000571565b92915050565b600060208284031215620005bb57620005ba6200056c565b5b6000620005cb848285016200058b565b91505092915050565b620005df8162000446565b82525050565b6000602082019050620005fc6000830184620005d4565b92915050565b61150d80620006126000396000f3fe6080604052600436106100ec5760003560e01c8063715018a61161008a578063a9059cbb11610059578063a9059cbb14610305578063b2bdfa7b14610342578063dd62ed3e1461036d578063f2fde38b146103aa576100f3565b8063715018a61461026d578063893d20e8146102845780638da5cb5b146102af57806395d89b41146102da576100f3565b806323b872dd116100c657806323b872dd1461018b578063313ce567146101c8578063571ac8b0146101f357806370a0823114610230576100f3565b806306fdde03146100f8578063095ea7b31461012357806318160ddd14610160576100f3565b366100f357005b600080fd5b34801561010457600080fd5b5061010d6103d3565b60405161011a9190610ff6565b60405180910390f35b34801561012f57600080fd5b5061014a600480360381019061014591906110b1565b610410565b604051610157919061110c565b60405180910390f35b34801561016c57600080fd5b50610175610502565b6040516101829190611136565b60405180910390f35b34801561019757600080fd5b506101b260048036038101906101ad9190611151565b61050c565b6040516101bf919061110c565b60405180910390f35b3480156101d457600080fd5b506101dd61070c565b6040516101ea91906111c0565b60405180910390f35b3480156101ff57600080fd5b5061021a600480360381019061021591906111db565b610715565b604051610227919061110c565b60405180910390f35b34801561023c57600080fd5b50610257600480360381019061025291906111db565b610748565b6040516102649190611136565b60405180910390f35b34801561027957600080fd5b50610282610791565b005b34801561029057600080fd5b506102996108e4565b6040516102a69190611217565b60405180910390f35b3480156102bb57600080fd5b506102c46108f3565b6040516102d19190611217565b60405180910390f35b3480156102e657600080fd5b506102ef61091c565b6040516102fc9190610ff6565b60405180910390f35b34801561031157600080fd5b5061032c600480360381019061032791906110b1565b610959565b604051610339919061110c565b60405180910390f35b34801561034e57600080fd5b5061035761098f565b6040516103649190611217565b60405180910390f35b34801561037957600080fd5b50610394600480360381019061038f9190611232565b6109b3565b6040516103a19190611136565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc91906111db565b610a3a565b005b60606040518060400160405280600581526020017f59414d424f000000000000000000000000000000000000000000000000000000815250905090565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104f09190611136565b60405180910390a36001905092915050565b6000600254905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146106f857610677826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bfc9092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610703848484610c60565b90509392505050565b60006012905090565b6000610741827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610410565b9050919050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610799610e45565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081d906112be565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006108ee6108f3565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f59414d424f000000000000000000000000000000000000000000000000000000815250905090565b60008032905060055481141561097a57826008819055506001915050610989565b610985338585610c60565b9150505b92915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610a42610e45565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac6906112be565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3690611350565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000838311158290610c44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3b9190610ff6565b60405180910390fd5b5060008385610c53919061139f565b9050809150509392505050565b600080610c6d8585610e4d565b1115610d4057610cfc826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bfc9092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610d9282600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610eff90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e329190611136565b60405180910390a3600190509392505050565b600033905090565b6000806008541415610e625760019050610ef9565b600060085490508092508273ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401610ea59190611217565b60206040518083038186803b158015610ebd57600080fd5b505afa158015610ed1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef591906113e8565b9150505b92915050565b6000808284610f0e9190611415565b905083811015610f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4a906114b7565b60405180910390fd5b8091505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610f97578082015181840152602081019050610f7c565b83811115610fa6576000848401525b50505050565b6000601f19601f8301169050919050565b6000610fc882610f5d565b610fd28185610f68565b9350610fe2818560208601610f79565b610feb81610fac565b840191505092915050565b600060208201905081810360008301526110108184610fbd565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006110488261101d565b9050919050565b6110588161103d565b811461106357600080fd5b50565b6000813590506110758161104f565b92915050565b6000819050919050565b61108e8161107b565b811461109957600080fd5b50565b6000813590506110ab81611085565b92915050565b600080604083850312156110c8576110c7611018565b5b60006110d685828601611066565b92505060206110e78582860161109c565b9150509250929050565b60008115159050919050565b611106816110f1565b82525050565b600060208201905061112160008301846110fd565b92915050565b6111308161107b565b82525050565b600060208201905061114b6000830184611127565b92915050565b60008060006060848603121561116a57611169611018565b5b600061117886828701611066565b935050602061118986828701611066565b925050604061119a8682870161109c565b9150509250925092565b600060ff82169050919050565b6111ba816111a4565b82525050565b60006020820190506111d560008301846111b1565b92915050565b6000602082840312156111f1576111f0611018565b5b60006111ff84828501611066565b91505092915050565b6112118161103d565b82525050565b600060208201905061122c6000830184611208565b92915050565b6000806040838503121561124957611248611018565b5b600061125785828601611066565b925050602061126885828601611066565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006112a8602083610f68565b91506112b382611272565b602082019050919050565b600060208201905081810360008301526112d78161129b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061133a602683610f68565b9150611345826112de565b604082019050919050565b600060208201905081810360008301526113698161132d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006113aa8261107b565b91506113b58361107b565b9250828210156113c8576113c7611370565b5b828203905092915050565b6000815190506113e281611085565b92915050565b6000602082840312156113fe576113fd611018565b5b600061140c848285016113d3565b91505092915050565b60006114208261107b565b915061142b8361107b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156114605761145f611370565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006114a1601b83610f68565b91506114ac8261146b565b602082019050919050565b600060208201905081810360008301526114d081611494565b905091905056fea2646970667358221220717f637f8c066dbee37160e3adfd59f65d6434b3971511d713eaca039e85e11164736f6c63430008090033000000000000000000000000a53be5a1c987253e821302c89c24403e1bf91b93