6080604052662386f26fc100006000196200001b91906200082a565b6000196200002a9190620007b1565b6006556000600855601e6009556000600a55601e600b55600a54600c55600b54600d55600c54600e55600d54600f5573ddb2cdb67d08ce70c9e958c802803820edbecf5d601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073ddb2cdb67d08ce70c9e958c802803820edbecf5d601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555065b5e620f4800060165566016bcc41e90000601755652d79883d20006018553480156200016457600080fd5b50600062000177620006d160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200022c620006d160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030b57600080fd5b505afa15801562000320573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000346919062000719565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003a957600080fd5b505afa158015620003be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e4919062000719565b6040518363ffffffff1660e01b81526004016200040392919062000767565b602060405180830381600087803b1580156200041e57600080fd5b505af115801562000433573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000459919062000719565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004af620006d960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200065c620006d160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef662386f26fc10000604051620006c2919062000794565b60405180910390a350620008da565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000815190506200071381620008c0565b92915050565b6000602082840312156200072c57600080fd5b60006200073c8482850162000702565b91505092915050565b6200075081620007ec565b82525050565b620007618162000820565b82525050565b60006040820190506200077e600083018562000745565b6200078d602083018462000745565b9392505050565b6000602082019050620007ab600083018462000756565b92915050565b6000620007be8262000820565b9150620007cb8362000820565b925082821015620007e157620007e062000862565b5b828203905092915050565b6000620007f98262000800565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000620008378262000820565b9150620008448362000820565b92508262000857576200085662000891565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b620008cb81620007ec565b8114620008d757600080fd5b50565b613bc880620008ea6000396000f3fe6080604052600436106101ba5760003560e01c806374010ece116100ec578063a2a957bb1161008a578063c3c8cd8011610064578063c3c8cd80146105f2578063dd62ed3e14610609578063ea1644d514610646578063f2fde38b1461066f576101c1565b8063a2a957bb1461054f578063a9059cbb14610578578063bfd79284146105b5576101c1565b80638f70ccf7116100c65780638f70ccf7146104a75780638f9a55c0146104d057806395d89b41146104fb57806398a5c31514610526576101c1565b806374010ece146104285780637d1db4a5146104515780638da5cb5b1461047c576101c1565b8063313ce567116101595780636d8aa8f8116101335780636d8aa8f8146103945780636fc3eaec146103bd57806370a08231146103d4578063715018a614610411576101c1565b8063313ce5671461031557806349bd5a5e146103405780636b9990531461036b576101c1565b80631694505e116101955780631694505e1461025757806318160ddd1461028257806323b872dd146102ad5780632fd689e3146102ea576101c1565b8062b8cf2a146101c657806306fdde03146101ef578063095ea7b31461021a576101c1565b366101c157005b600080fd5b3480156101d257600080fd5b506101ed60048036038101906101e89190612cf9565b610698565b005b3480156101fb57600080fd5b506102046107e8565b6040516102119190613142565b60405180910390f35b34801561022657600080fd5b50610241600480360381019061023c9190612cbd565b610825565b60405161024e919061310c565b60405180910390f35b34801561026357600080fd5b5061026c610843565b6040516102799190613127565b60405180910390f35b34801561028e57600080fd5b50610297610869565b6040516102a49190613324565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190612c6e565b610878565b6040516102e1919061310c565b60405180910390f35b3480156102f657600080fd5b506102ff610951565b60405161030c9190613324565b60405180910390f35b34801561032157600080fd5b5061032a610957565b6040516103379190613399565b60405180910390f35b34801561034c57600080fd5b50610355610960565b60405161036291906130f1565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d9190612be0565b610986565b005b3480156103a057600080fd5b506103bb60048036038101906103b69190612d3a565b610a76565b005b3480156103c957600080fd5b506103d2610b28565b005b3480156103e057600080fd5b506103fb60048036038101906103f69190612be0565b610bf9565b6040516104089190613324565b60405180910390f35b34801561041d57600080fd5b50610426610c4a565b005b34801561043457600080fd5b5061044f600480360381019061044a9190612d63565b610d9d565b005b34801561045d57600080fd5b50610466610e3c565b6040516104739190613324565b60405180910390f35b34801561048857600080fd5b50610491610e42565b60405161049e91906130f1565b60405180910390f35b3480156104b357600080fd5b506104ce60048036038101906104c99190612d3a565b610e6b565b005b3480156104dc57600080fd5b506104e5610f1d565b6040516104f29190613324565b60405180910390f35b34801561050757600080fd5b50610510610f23565b60405161051d9190613142565b60405180910390f35b34801561053257600080fd5b5061054d60048036038101906105489190612d63565b610f60565b005b34801561055b57600080fd5b5061057660048036038101906105719190612d8c565b610fff565b005b34801561058457600080fd5b5061059f600480360381019061059a9190612cbd565b6110b6565b6040516105ac919061310c565b60405180910390f35b3480156105c157600080fd5b506105dc60048036038101906105d79190612be0565b6110d4565b6040516105e9919061310c565b60405180910390f35b3480156105fe57600080fd5b506106076110f4565b005b34801561061557600080fd5b50610630600480360381019061062b9190612c32565b6111cd565b60405161063d9190613324565b60405180910390f35b34801561065257600080fd5b5061066d60048036038101906106689190612d63565b611254565b005b34801561067b57600080fd5b5061069660048036038101906106919190612be0565b6112f3565b005b6106a06114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461072d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072490613284565b60405180910390fd5b60005b81518110156107e457600160106000848481518110610778577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107dc9061365e565b915050610730565b5050565b60606040518060400160405280600e81526020017f31446f6c6c617250657065496e75000000000000000000000000000000000000815250905090565b60006108396108326114b5565b84846114bd565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000662386f26fc10000905090565b6000610885848484611688565b610946846108916114b5565b61094185604051806060016040528060288152602001613b6b60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108f76114b5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f0d9092919063ffffffff16565b6114bd565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61098e6114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1290613284565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610a7e6114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0290613284565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b696114b5565b73ffffffffffffffffffffffffffffffffffffffff161480610bdf5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bc76114b5565b73ffffffffffffffffffffffffffffffffffffffff16145b610be857600080fd5b6000479050610bf681611f71565b50565b6000610c43600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461206c565b9050919050565b610c526114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd690613284565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610da56114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2990613284565b60405180910390fd5b8060168190555050565b60165481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e736114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef790613284565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600681526020017f444f4c4c41520000000000000000000000000000000000000000000000000000815250905090565b610f686114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fec90613284565b60405180910390fd5b8060188190555050565b6110076114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108b90613284565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60006110ca6110c36114b5565b8484611688565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111356114b5565b73ffffffffffffffffffffffffffffffffffffffff1614806111ab5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111936114b5565b73ffffffffffffffffffffffffffffffffffffffff16145b6111b457600080fd5b60006111bf30610bf9565b90506111ca816120da565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61125c6114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e090613284565b60405180910390fd5b8060178190555050565b6112fb6114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f90613284565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ef906131e4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561152d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152490613304565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561159d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159490613204565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161167b9190613324565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ef906132c4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175f90613164565b60405180910390fd5b600081116117ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a2906132a4565b60405180910390fd5b6117b3610e42565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561182157506117f1610e42565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c0c57601560149054906101000a900460ff166118b057611842610e42565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a690613184565b60405180910390fd5b5b6016548111156118f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ec906131c4565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119995750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cf90613224565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611a855760175481611a3a84610bf9565b611a44919061345a565b10611a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7b906132e4565b60405180910390fd5b5b6000611a9030610bf9565b9050600060185482101590506016548210611aab5760165491505b808015611ac3575060158054906101000a900460ff16155b8015611b1d5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b355750601560169054906101000a900460ff165b8015611b8b5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611be15750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c0957611bef826120da565b60004790506000811115611c0757611c0647611f71565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cb35750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d665750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d655750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611d745760009050611efb565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e1f5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e3757600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ee25750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611efa57600a54600c81905550600b54600d819055505b5b611f07848484846123d2565b50505050565b6000838311158290611f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4c9190613142565b60405180910390fd5b5060008385611f64919061353b565b9050809150509392505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611fc16002846123ff90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611fec573d6000803e3d6000fd5b50601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61203d6002846123ff90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612068573d6000803e3d6000fd5b5050565b60006006548211156120b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120aa906131a4565b60405180910390fd5b60006120bd612449565b90506120d281846123ff90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612137577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156121655781602001602082028036833780820191505090505b50905030816000815181106121a3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561224557600080fd5b505afa158015612259573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227d9190612c09565b816001815181106122b7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061231e30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114bd565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161238295949392919061333f565b600060405180830381600087803b15801561239c57600080fd5b505af11580156123b0573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806123e0576123df612474565b5b6123eb8484846124b7565b806123f9576123f8612682565b5b50505050565b600061244183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612696565b905092915050565b60008060006124566126f9565b9150915061246d81836123ff90919063ffffffff16565b9250505090565b6000600c5414801561248857506000600d54145b15612492576124b5565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806124c987612755565b95509550955095509550955061252786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127bd90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125bc85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461280790919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061260881612865565b6126128483612922565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161266f9190613324565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080831182906126dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d49190613142565b60405180910390fd5b50600083856126ec91906134b0565b9050809150509392505050565b600080600060065490506000662386f26fc10000905061272b662386f26fc100006006546123ff90919063ffffffff16565b82101561274857600654662386f26fc10000935093505050612751565b81819350935050505b9091565b60008060008060008060008060006127728a600c54600d5461295c565b9250925092506000612782612449565b905060008060006127958e8787876129f2565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006127ff83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f0d565b905092915050565b6000808284612816919061345a565b90508381101561285b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285290613244565b60405180910390fd5b8091505092915050565b600061286f612449565b905060006128868284612a7b90919063ffffffff16565b90506128da81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461280790919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612937826006546127bd90919063ffffffff16565b6006819055506129528160075461280790919063ffffffff16565b6007819055505050565b600080600080612988606461297a888a612a7b90919063ffffffff16565b6123ff90919063ffffffff16565b905060006129b260646129a4888b612a7b90919063ffffffff16565b6123ff90919063ffffffff16565b905060006129db826129cd858c6127bd90919063ffffffff16565b6127bd90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a0b8589612a7b90919063ffffffff16565b90506000612a228689612a7b90919063ffffffff16565b90506000612a398789612a7b90919063ffffffff16565b90506000612a6282612a5485876127bd90919063ffffffff16565b6127bd90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612a8e5760009050612af0565b60008284612a9c91906134e1565b9050828482612aab91906134b0565b14612aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae290613264565b60405180910390fd5b809150505b92915050565b6000612b09612b04846133d9565b6133b4565b90508083825260208201905082856020860282011115612b2857600080fd5b60005b85811015612b585781612b3e8882612b62565b845260208401935060208301925050600181019050612b2b565b5050509392505050565b600081359050612b7181613b25565b92915050565b600081519050612b8681613b25565b92915050565b600082601f830112612b9d57600080fd5b8135612bad848260208601612af6565b91505092915050565b600081359050612bc581613b3c565b92915050565b600081359050612bda81613b53565b92915050565b600060208284031215612bf257600080fd5b6000612c0084828501612b62565b91505092915050565b600060208284031215612c1b57600080fd5b6000612c2984828501612b77565b91505092915050565b60008060408385031215612c4557600080fd5b6000612c5385828601612b62565b9250506020612c6485828601612b62565b9150509250929050565b600080600060608486031215612c8357600080fd5b6000612c9186828701612b62565b9350506020612ca286828701612b62565b9250506040612cb386828701612bcb565b9150509250925092565b60008060408385031215612cd057600080fd5b6000612cde85828601612b62565b9250506020612cef85828601612bcb565b9150509250929050565b600060208284031215612d0b57600080fd5b600082013567ffffffffffffffff811115612d2557600080fd5b612d3184828501612b8c565b91505092915050565b600060208284031215612d4c57600080fd5b6000612d5a84828501612bb6565b91505092915050565b600060208284031215612d7557600080fd5b6000612d8384828501612bcb565b91505092915050565b60008060008060808587031215612da257600080fd5b6000612db087828801612bcb565b9450506020612dc187828801612bcb565b9350506040612dd287828801612bcb565b9250506060612de387828801612bcb565b91505092959194509250565b6000612dfb8383612e07565b60208301905092915050565b612e108161356f565b82525050565b612e1f8161356f565b82525050565b6000612e3082613415565b612e3a8185613438565b9350612e4583613405565b8060005b83811015612e76578151612e5d8882612def565b9750612e688361342b565b925050600181019050612e49565b5085935050505092915050565b612e8c81613581565b82525050565b612e9b816135c4565b82525050565b612eaa816135e8565b82525050565b6000612ebb82613420565b612ec58185613449565b9350612ed58185602086016135fa565b612ede81613734565b840191505092915050565b6000612ef6602383613449565b9150612f0182613745565b604082019050919050565b6000612f19603f83613449565b9150612f2482613794565b604082019050919050565b6000612f3c602a83613449565b9150612f47826137e3565b604082019050919050565b6000612f5f601c83613449565b9150612f6a82613832565b602082019050919050565b6000612f82602683613449565b9150612f8d8261385b565b604082019050919050565b6000612fa5602283613449565b9150612fb0826138aa565b604082019050919050565b6000612fc8602383613449565b9150612fd3826138f9565b604082019050919050565b6000612feb601b83613449565b9150612ff682613948565b602082019050919050565b600061300e602183613449565b915061301982613971565b604082019050919050565b6000613031602083613449565b915061303c826139c0565b602082019050919050565b6000613054602983613449565b915061305f826139e9565b604082019050919050565b6000613077602583613449565b915061308282613a38565b604082019050919050565b600061309a602383613449565b91506130a582613a87565b604082019050919050565b60006130bd602483613449565b91506130c882613ad6565b604082019050919050565b6130dc816135ad565b82525050565b6130eb816135b7565b82525050565b60006020820190506131066000830184612e16565b92915050565b60006020820190506131216000830184612e83565b92915050565b600060208201905061313c6000830184612e92565b92915050565b6000602082019050818103600083015261315c8184612eb0565b905092915050565b6000602082019050818103600083015261317d81612ee9565b9050919050565b6000602082019050818103600083015261319d81612f0c565b9050919050565b600060208201905081810360008301526131bd81612f2f565b9050919050565b600060208201905081810360008301526131dd81612f52565b9050919050565b600060208201905081810360008301526131fd81612f75565b9050919050565b6000602082019050818103600083015261321d81612f98565b9050919050565b6000602082019050818103600083015261323d81612fbb565b9050919050565b6000602082019050818103600083015261325d81612fde565b9050919050565b6000602082019050818103600083015261327d81613001565b9050919050565b6000602082019050818103600083015261329d81613024565b9050919050565b600060208201905081810360008301526132bd81613047565b9050919050565b600060208201905081810360008301526132dd8161306a565b9050919050565b600060208201905081810360008301526132fd8161308d565b9050919050565b6000602082019050818103600083015261331d816130b0565b9050919050565b600060208201905061333960008301846130d3565b92915050565b600060a08201905061335460008301886130d3565b6133616020830187612ea1565b81810360408301526133738186612e25565b90506133826060830185612e16565b61338f60808301846130d3565b9695505050505050565b60006020820190506133ae60008301846130e2565b92915050565b60006133be6133cf565b90506133ca828261362d565b919050565b6000604051905090565b600067ffffffffffffffff8211156133f4576133f3613705565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613465826135ad565b9150613470836135ad565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156134a5576134a46136a7565b5b828201905092915050565b60006134bb826135ad565b91506134c6836135ad565b9250826134d6576134d56136d6565b5b828204905092915050565b60006134ec826135ad565b91506134f7836135ad565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156135305761352f6136a7565b5b828202905092915050565b6000613546826135ad565b9150613551836135ad565b925082821015613564576135636136a7565b5b828203905092915050565b600061357a8261358d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006135cf826135d6565b9050919050565b60006135e18261358d565b9050919050565b60006135f3826135ad565b9050919050565b60005b838110156136185780820151818401526020810190506135fd565b83811115613627576000848401525b50505050565b61363682613734565b810181811067ffffffffffffffff8211171561365557613654613705565b5b80604052505050565b6000613669826135ad565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561369c5761369b6136a7565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b613b2e8161356f565b8114613b3957600080fd5b50565b613b4581613581565b8114613b5057600080fd5b50565b613b5c816135ad565b8114613b6757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220347005d2a1627597dc140504cfb61031792130c2f0e61d0492456c77e31e6fa464736f6c63430008040033