0x608060405234801561001057600080fd5b506001600055614f3a806100256000396000f3fe608060405234801561001057600080fd5b506004361061038e5760003560e01c8063780a00bb116101de578063b8f8bad41161010f578063ea19a063116100ad578063f553ccc91161007c578063f553ccc914610780578063fa52c7d814610793578063fd62e750146107a6578063fd9be522146107ae5761038e565b8063ea19a0631461074a578063f2d7e2b614610752578063f2fde38b1461075a578063f3ad31f41461076d5761038e565b8063c76ae8e7116100e9578063c76ae8e7146106fb578063c7a823e01461071c578063d2ae21041461072f578063e3a0fd8b146107375761038e565b8063b8f8bad4146106c2578063c3b04e7f146106d5578063c5e193cd146106e85761038e565b80639cf4364b1161017c578063abf785b211610156578063abf785b214610674578063ac353e0414610687578063aef18bf71461069c578063b12527f8146106af5761038e565b80639cf4364b146106465780639f0707f01461064e578063a7cd52cb146106615761038e565b80638644c578116101b85780638644c578146105f75780638da5cb5b146106185780638fc8684d146106205780639b19251a146106335761038e565b8063780a00bb146105be578063793e6410146105d15780638585c945146105e45761038e565b8063485cc955116102c35780636c459a2811610261578063724e78da11610230578063724e78da14610570578063736c0d5b14610583578063741bef1a14610596578063765a8a541461059e5761038e565b80636c459a281461052d5780636c473aff1461054057806370cb3acb14610555578063715018a6146105685761038e565b80635553fb8e1161029d5780635553fb8e146104df57806357d3a786146104ff5780636200d8cd14610512578063673448dd1461051a5761038e565b8063485cc955146104a65780634b0bddd2146104b957806353d6fd59146104cc5761038e565b806331d2609411610330578063429b62e51161030a578063429b62e51461046557806342cde4e8146104785780634623c91d1461048057806346f83b50146104935761038e565b806331d2609414610427578063321ab8ad1461043d5780633371bfff146104525761038e565b80631703a0181161036c5780631703a018146103d95780631c3ca45b146103ee5780632f1be6511461040157806331cb6105146104145761038e565b806301e3366714610393578063057f01b5146103a857806309310452146103c6575b600080fd5b6103a66103a1366004613dd7565b6107c1565b005b6103b0610843565b6040516103bd919061438a565b60405180910390f35b6103a66103d4366004614123565b610856565b6103e161093c565b6040516103bd9190614dd4565b6103a66103fc366004613f02565b610958565b6103b061040f366004614027565b6109e7565b6103a6610422366004613deb565b610a33565b61042f610a68565b6040516103bd929190614d2f565b610445610ab5565b6040516103bd9190614ce9565b6103b0610460366004613c7d565b610ac5565b6103b0610473366004613c7d565b610ada565b610445610aef565b6103a661048e366004613deb565b610b11565b6103a66104a1366004614027565b610d8f565b6103a66104b4366004613cc4565b610fe7565b6103a66104c7366004613deb565b6111f3565b6103a66104da366004613deb565b61137a565b6104f26104ed36600461415e565b611473565b6040516103bd9190614395565b6103b061050d366004613c7d565b61148a565b610445611519565b6103b0610528366004613c7d565b611523565b6103a661053b366004613e79565b61154c565b610548611748565b6040516103bd919061427c565b6103a6610563366004613cfc565b611764565b6103a661188f565b6103a661057e366004613c7d565b61198c565b6103b0610591366004613c7d565b611a5a565b610548611a6f565b6105b16105ac36600461400d565b611a8b565b6040516103bd9190614c7d565b6103a66105cc366004613deb565b611b78565b6103a66105df36600461400d565b611c4e565b6103a66105f23660046141d9565b611d9d565b61060a61060536600461400d565b611dd0565b6040516103bd929190614cc6565b610548611e0c565b6103a661062e366004613d3c565b611e28565b6103b0610641366004613c7d565b6121f7565b61044561220c565b6103b061065c366004613c7d565b612230565b6103b061066f366004613c7d565b612245565b6103b061068236600461405f565b61225a565b61068f6122e3565b6040516103bd9190614ca9565b6103b06106aa366004613f1c565b6122fb565b6103a66106bd366004613deb565b612310565b6103a66106d03660046140b2565b612341565b6103a66106e3366004613ff1565b612394565b6104f26106f636600461415e565b612453565b61070e610709366004614027565b61258f565b6040516103bd929190614cf8565b6103a661072a366004613f34565b6125ca565b6103e1612786565b6103e16107453660046140fa565b612796565b6104456127bd565b6104456127cf565b6103a6610768366004613c7d565b6127ed565b6104f261077b366004613e1f565b61295b565b6103a661078e366004613deb565b612994565b6103b06107a1366004613c7d565b6129c5565b6103e16129da565b6103a66107bc366004613c99565b6129ea565b336107ca611e0c565b73ffffffffffffffffffffffffffffffffffffffff161461081d573360009081526067602052604090205460ff1661081d5760405162461bcd60e51b815260040161081490614c46565b60405180910390fd5b61083e73ffffffffffffffffffffffffffffffffffffffff84168383612acb565b505050565b6071546601000000000000900460ff1681565b3361085f611e0c565b73ffffffffffffffffffffffffffffffffffffffff16146108a9573360009081526067602052604090205460ff166108a95760405162461bcd60e51b815260040161081490614c46565b61ffff8381166000908152606b60209081526040808320938616835292905281902080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8416179055517fa919b8179a0920376a5f6ac5b26cd567acf115c8b5af1400b09015dd862277d99061092f90859085908590614d44565b60405180910390a1505050565b60735468010000000000000000900467ffffffffffffffff1681565b33610961611e0c565b73ffffffffffffffffffffffffffffffffffffffff16146109ab573360009081526067602052604090205460ff166109ab5760405162461bcd60e51b815260040161081490614c46565b607180549115156601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff909216919091179055565b60006109f1612b58565b5061ffff84166000908152606c602090815260408083208684528252808320858452825280832084845290915290205462010000900460ff165b949350505050565b303314610a525760405162461bcd60e51b815260040161081490614af8565b610a5a612b87565b610a648282612bb3565b5050565b600080610a73612b58565b505060665461ffff7601000000000000000000000000000000000000000000008204811691740100000000000000000000000000000000000000009004169091565b60715462010000900461ffff1681565b60756020526000908152604090205460ff1681565b60676020526000908152604090205460ff1681565b60665474010000000000000000000000000000000000000000900461ffff1681565b610b19612d10565b73ffffffffffffffffffffffffffffffffffffffff16610b37611e0c565b73ffffffffffffffffffffffffffffffffffffffff1614610b9f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610ba7612b58565b73ffffffffffffffffffffffffffffffffffffffff821660009081526068602052604090205460ff1615158115151415610bf35760405162461bcd60e51b815260040161081490614bb2565b73ffffffffffffffffffffffffffffffffffffffff82166000908152606860205260409020805460ff19168215801591909117909155610c855760668054600161ffff76010000000000000000000000000000000000000000000080840482169290920116027fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff909116179055610cf8565b606680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61ffff76010000000000000000000000000000000000000000000080840482169290920116027fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff9091161790555b60665461ffff7401000000000000000000000000000000000000000082048116760100000000000000000000000000000000000000000000909204161015610d525760405162461bcd60e51b8152600401610814906149e1565b7f763b63b30e91c843bb39e4379603697003d3b7c1f192619cd782fa33bdc443968282604051610d839291906142c3565b60405180910390a15050565b3360009081526068602052604090205460ff16610dbe5760405162461bcd60e51b815260040161081490614791565b610dc6612b58565b61ffff84166000908152606c60209081526040808320868452825280832085845282528083208484529091529020805462010000900460ff1615610e1c5760405162461bcd60e51b81526004016108149061459e565b33600090815260018201602052604090205460ff1615610e4e5760405162461bcd60e51b81526004016108149061450a565b805460665461ffff9182169160018301811674010000000000000000000000000000000000000000909204161415610f3f576066546040517f704316e500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063704316e590610edc908990899089908990600401614d0e565b600060405180830381600087803b158015610ef657600080fd5b505af1158015610f0a573d6000803e3d6000fd5b505083547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff166201000017845550610f8b9050565b33600090815260018381016020526040909120805460ff19168217905582547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001690820161ffff161782555b3373ffffffffffffffffffffffffffffffffffffffff167f14b979ba7a996246f6721545d6bab2fafab7ff3738c512b4d0e9610b612faf1687878787604051610fd79493929190614d0e565b60405180910390a2505050505050565b6000610ff1612d14565b905073ffffffffffffffffffffffffffffffffffffffff811661104a5773ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035561106c565b3373ffffffffffffffffffffffffffffffffffffffff82161461106c57600080fd5b600154610100900460ff16806110855750611085612d39565b80611093575060015460ff16155b6110ce5760405162461bcd60e51b815260040180806020018281038252602e815260200180614e8c602e913960400191505060405180910390fd5b600154610100900460ff16158015611115576001805460ff197fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff9091166101001716811790555b61111d612d4a565b606680547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff87811691909117909255606e8054606d805490931693871693909317909155612ee07fffffffffffffffffffffffffffffffff00000000000000000000000000000000909216919091177fffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff1670840000000000000000000000000000000017905560405162461bcd60e51b815261081490600401614973565b336111fc611e0c565b73ffffffffffffffffffffffffffffffffffffffff1614611246573360009081526067602052604090205460ff166112465760405162461bcd60e51b815260040161081490614c46565b6071546601000000000000900460ff16156113175773ffffffffffffffffffffffffffffffffffffffff821660009081526067602052604090205460ff16151581151514156112a75760405162461bcd60e51b815260040161081490614541565b73ffffffffffffffffffffffffffffffffffffffff821660009081526067602052604090819020805460ff1916831515179055517fae0a768e1f5a7943e3f1bb8a4d503c6fbfea4c9bbbded6b463e48bebd28ef7259061130a90849084906142c3565b60405180910390a1610a64565b73ffffffffffffffffffffffffffffffffffffffff821660009081526067602052604090819020805460ff1916831515179055517f235bc17e7930760029e9f4d860a2a8089976de5b381cf8380fc11c1d88a1113390610d8390849084906142c3565b611382612d10565b73ffffffffffffffffffffffffffffffffffffffff166113a0611e0c565b73ffffffffffffffffffffffffffffffffffffffff1614611408576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b611410612b58565b73ffffffffffffffffffffffffffffffffffffffff821660009081526069602052604090819020805460ff1916831515179055517ff93f9a76c1bf3444d22400a00cb9fe990e6abe9dbb333fda48859cfee864543d90610d8390849084906142c3565b600061148185858585612e34565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526075602052604081205460ff16156114c057506000611514565b73ffffffffffffffffffffffffffffffffffffffff821660009081526074602052604090205460ff16156114f657506001611514565b60765467ffffffffffffffff161561151057506000611514565b5060015b919050565b60715461ffff1681565b600061152d612b58565b5073ffffffffffffffffffffffffffffffffffffffff81163014919050565b33611555611e0c565b73ffffffffffffffffffffffffffffffffffffffff161461159f573360009081526067602052604090205460ff1661159f5760405162461bcd60e51b815260040161081490614c46565b6115a7612b87565b73ffffffffffffffffffffffffffffffffffffffff86166000908152606f602052604090205460ff16806115f0575073ffffffffffffffffffffffffffffffffffffffff861630145b61160c5760405162461bcd60e51b815260040161081490614a3e565b42831161162b5760405162461bcd60e51b815260040161081490614734565b60006116398787878761295b565b60008181526070602052604090205490915060ff161561166b5760405162461bcd60e51b81526004016108149061485c565b6000818152607060205260409020805460ff1916600117905561168f8184846125ca565b6000808873ffffffffffffffffffffffffffffffffffffffff1688886040516116b992919061423b565b6000604051808303816000865af19150503d80600081146116f6576040519150601f19603f3d011682016040523d82523d6000602084013e6116fb565b606091505b50915091507f293e3a2153dc5c8d3667cbd6ede71a71674b2381e5dc4b40c91ad0e813447c0f8984848460405161173594939291906142eb565b60405180910390a1505050505050505050565b60665473ffffffffffffffffffffffffffffffffffffffff1681565b3361176d611e0c565b73ffffffffffffffffffffffffffffffffffffffff16146117b7573360009081526067602052604090205460ff166117b75760405162461bcd60e51b815260040161081490614c46565b6117bf612b87565b73ffffffffffffffffffffffffffffffffffffffff83166000908152606f602052604090205460ff166118045760405162461bcd60e51b8152600401610814906146a0565b6040517f07b18bde00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906307b18bde90611858908590859060040161429d565b600060405180830381600087803b15801561187257600080fd5b505af1158015611886573d6000803e3d6000fd5b50505050505050565b611897612d10565b73ffffffffffffffffffffffffffffffffffffffff166118b5611e0c565b73ffffffffffffffffffffffffffffffffffffffff161461191d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60345460405160009173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b33611995611e0c565b73ffffffffffffffffffffffffffffffffffffffff16146119df573360009081526067602052604090205460ff166119df5760405162461bcd60e51b815260040161081490614c46565b606d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790556040517f80674e26c002a5b7d07d752a8b75030a7d410c4d0178d254df106c7667c1cc8490611a4f90839061427c565b60405180910390a150565b60726020526000908152604090205460ff1681565b606d5473ffffffffffffffffffffffffffffffffffffffff1681565b611a93613b68565b606d546040517fe0ad121a00000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff169063e0ad121a90611aea908690600401614ce9565b60606040518083038186803b158015611b0257600080fd5b505afa158015611b16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3a9190613f7e565b6040805180820190915281516fffffffffffffffffffffffffffffffff16815260209182015167ffffffffffffffff16918101919091529392505050565b303314611b975760405162461bcd60e51b815260040161081490614af8565b611b9f612b87565b73ffffffffffffffffffffffffffffffffffffffff82166000908152606f602052604090205460ff1615158115151415611beb5760405162461bcd60e51b8152600401610814906148b9565b73ffffffffffffffffffffffffffffffffffffffff82166000908152606f602052604090819020805460ff1916831515179055517feabd2f190f320483b897651b13516f0547c3067bdce2d5080d7b4468c073364690610d8390849084906142c3565b611c56612d10565b73ffffffffffffffffffffffffffffffffffffffff16611c74611e0c565b73ffffffffffffffffffffffffffffffffffffffff1614611cdc576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b611ce4612b58565b60665461ffff76010000000000000000000000000000000000000000000090910481169082161115611d285760405162461bcd60e51b8152600401610814906147ff565b606680547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000061ffff8416021790556040517f0baa24fbe4923f2cbbb68c187f1fa407c0a09eb52cebbc4d36cf88f2733f153990611a4f908390614ce9565b303314611dbc5760405162461bcd60e51b815260040161081490614af8565b611dc4612b87565b611dcd81613166565b50565b606a602052600090815260409020546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041682565b60345473ffffffffffffffffffffffffffffffffffffffff1690565b6000611e32612d14565b905073ffffffffffffffffffffffffffffffffffffffff8116611e8b5773ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355611ead565b3373ffffffffffffffffffffffffffffffffffffffff821614611ead57600080fd5b606e8054606d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8916179055612ee07fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116177fffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff16708400000000000000000000000000000000179055835167ffffffffffffffff841611801590611f75575060008367ffffffffffffffff16115b611f915760405162461bcd60e51b8152600401610814906147c8565b6071805460447fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909116177fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff1662410000177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff1664e0000000001790556000805b85518110156120ba57600086828151811061202957fe5b602002602001015190508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161161207e5760405162461bcd60e51b8152600401610814906146fd565b73ffffffffffffffffffffffffffffffffffffffff81166000908152607260205260409020805460ff1916600190811790915590925001612012565b508451607380547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff928316177fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000009287169290920291909117905573ffffffffffffffffffffffffffffffffffffffff87166000908152606f60205260408120805460ff191660011790555b83518110156121bc5760016067600086848151811061217557fe5b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff168252810191909152604001600020805460ff191691151591909117905560010161215a565b5050607180547fffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff166601000000000000179055505050505050565b60696020526000908152604090205460ff1681565b606654760100000000000000000000000000000000000000000000900461ffff1681565b606f6020526000908152604090205460ff1681565b60746020526000908152604090205460ff1681565b6000612264612b58565b61ffff86166000908152606c60209081526040808320888452825280832087845282528083208684529091529020805462010000900460ff16156122ac576001915050611481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001909101602052604090205460ff16905095945050505050565b606e546fffffffffffffffffffffffffffffffff1681565b60706020526000908152604090205460ff1681565b30331461232f5760405162461bcd60e51b815260040161081490614af8565b612337612b87565b610a64828261321b565b3361234a611e0c565b73ffffffffffffffffffffffffffffffffffffffff161461083e573360009081526067602052604090205460ff1661083e5760405162461bcd60e51b815260040161081490614c46565b3361239d611e0c565b73ffffffffffffffffffffffffffffffffffffffff16146123e7573360009081526067602052604090205460ff166123e75760405162461bcd60e51b815260040161081490614c46565b606e80547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff83161790556040517f2725008ed0736b4e89059cba21b291a6964c242e0fa2ed00574cfb7adbbffc2c90611a4f908390614ca9565b6071546000906601000000000000900460ff16156124ec57336000908152606f602052604090205460ff1661249a5760405162461bcd60e51b815260040161081490614b55565b6124a685858585612e34565b90507f4e41ee13e03cd5e0446487b524fdc48af6acf26c074dacdbdfb6b574b42c814685858585856040516124df959493929190614d6c565b60405180910390a1610a2b565b60665473ffffffffffffffffffffffffffffffffffffffff16331461253a573360009081526069602052604090205460ff1661253a5760405162461bcd60e51b815260040161081490614669565b61254685858585612e34565b90507f4e41ee13e03cd5e0446487b524fdc48af6acf26c074dacdbdfb6b574b42c8146858585858560405161257f959493929190614d6c565b60405180910390a1949350505050565b606c60209081526000948552604080862082529385528385208152918452828420909152825290205461ffff81169062010000900460ff1682565b6073546125ee9068010000000000000000900467ffffffffffffffff16604161334d565b81101561260d5760405162461bcd60e51b815260040161081490614c0f565b6000612618846133af565b90506000805b60735468010000000000000000900467ffffffffffffffff1681101561277e57600080600061268488888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508892506133df915050565b9250925092506000600187858585604051600081526020016040526040516126af949392919061439e565b6020604051602081039080840390855afa1580156126d1573d6000803e3d6000fd5b5050506020604051035190508573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16116127285760405162461bcd60e51b815260040161081490614916565b73ffffffffffffffffffffffffffffffffffffffff811660009081526072602052604090205460ff1661276d5760405162461bcd60e51b815260040161081490614476565b9450506001909201915061261e9050565b505050505050565b60765467ffffffffffffffff1681565b606b60209081526000928352604080842090915290825290205467ffffffffffffffff1681565b607154640100000000900461ffff1681565b606e54700100000000000000000000000000000000900461ffff1681565b6127f5612d10565b73ffffffffffffffffffffffffffffffffffffffff16612813611e0c565b73ffffffffffffffffffffffffffffffffffffffff161461287b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166128cd5760405162461bcd60e51b8152600401808060200182810382526026815260200180614e406026913960400191505060405180910390fd5b60345460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008482858560405160200161297494939291906141f5565b604051602081830303815290604052805190602001209050949350505050565b3033146129b35760405162461bcd60e51b815260040161081490614af8565b6129bb612b87565b610a6482826133fd565b60686020526000908152604090205460ff1681565b60735467ffffffffffffffff1681565b336129f3611e0c565b73ffffffffffffffffffffffffffffffffffffffff1614612a3d573360009081526067602052604090205460ff16612a3d5760405162461bcd60e51b815260040161081490614c46565b612a45612b58565b6066546040517f07b18bde00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906307b18bde90612a9d908590859060040161429d565b600060405180830381600087803b158015612ab757600080fd5b505af115801561277e573d6000803e3d6000fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261083e9084906134ac565b6071546601000000000000900460ff1615612b855760405162461bcd60e51b8152600401610814906149aa565b565b6071546601000000000000900460ff16612b855760405162461bcd60e51b815260040161081490614632565b73ffffffffffffffffffffffffffffffffffffffff821660009081526072602052604090205460ff1615158115151415612bff5760405162461bcd60e51b8152600401610814906143bc565b73ffffffffffffffffffffffffffffffffffffffff82166000908152607260205260409020805460ff191682151517905580612c695760735467ffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01612c7a565b60735467ffffffffffffffff166001015b607380547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9283161790819055680100000000000000008104821691161015612cdf5760405162461bcd60e51b815260040161081490614a9b565b7f863d338cad74814b108a06288ad5e0e80d56495e0332238b1d2cdcfa0ca8e5ce8282604051610d839291906142c3565b3390565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6000612d443061356a565b15905090565b600154610100900460ff1680612d635750612d63612d39565b80612d71575060015460ff16155b612dac5760405162461bcd60e51b815260040180806020018281038252602e815260200180614e8c602e913960400191505060405180910390fd5b600154610100900460ff16158015612df3576001805460ff197fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff9091166101001716811790555b612dfb613570565b612e03613649565b8015611dcd57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b6071546000906601000000000000900460ff161561301657612e558261148a565b612e715760405162461bcd60e51b815260040161081490614419565b61ffff8086166000908152606b60209081526040808320888516845290915281205460715460735467ffffffffffffffff92831694612ec79368010000000000000000909204909116916201000090041661334d565b905080612ed58160206137a0565b15612efc57612ef96020612ef3612eec85836137a0565b8590613807565b90613864565b90505b6000612f28612f0c836040613864565b607154612ef39061ffff80821691640100000000900416613864565b606d546040517f7bc3c9ab0000000000000000000000000000000000000000000000000000000081529192508a9160009173ffffffffffffffffffffffffffffffffffffffff1690637bc3c9ab90612f8890859087908b90600401614db8565b604080518083038186803b158015612f9f57600080fd5b505afa158015612fb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd791906141b5565b50606e5490915061300990612710906130039084906fffffffffffffffffffffffffffffffff1661334d565b906138be565b9650505050505050610a2b565b61ffff8086166000908152606b60209081526040808320888516845290915280822054606d54606e5492517f7bc3c9ab00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff9092169473ffffffffffffffffffffffffffffffffffffffff90911692637bc3c9ab926130b6928c92700100000000000000000000000000000000900416908790600401614d44565b604080518083038186803b1580156130cd57600080fd5b505afa1580156130e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310591906141b5565b50606e5460665491925061315d9161271091613003916fffffffffffffffffffffffffffffffff9091169061315790869074010000000000000000000000000000000000000000900461ffff1661334d565b9061334d565b92505050610a2b565b60735467ffffffffffffffff90811690821611801590613190575060008167ffffffffffffffff16115b6131ac5760405162461bcd60e51b8152600401610814906144d3565b607380547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff166801000000000000000067ffffffffffffffff8416021790556040517fb600f3cf7f38a4b49bb0c75f722ef69f7e3e39ef3bb4aa8207fd86e724a2324990611a4f908390614dd4565b73ffffffffffffffffffffffffffffffffffffffff821660009081526074602052604090205460ff16151581151514156132675760405162461bcd60e51b8152600401610814906145d5565b73ffffffffffffffffffffffffffffffffffffffff82166000908152607460205260409020805460ff1916821515179055806132d15760765467ffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016132e2565b60765467ffffffffffffffff166001015b607680547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff929092169190911790556040517f9352a101313f915f658cc62aeaa4913eeab9d5732c545d05fc379042a162532290610d8390849084906142c3565b60008261335c575060006133a9565b8282028284828161336957fe5b04146133a65760405162461bcd60e51b8152600401808060200182810382526021815260200180614eba6021913960400191505060405180910390fd5b90505b92915050565b6000816040516020016133c2919061424b565b604051602081830303815290604052805190602001209050919050565b60419081029190910160208101516040820151919092015160ff1692565b73ffffffffffffffffffffffffffffffffffffffff821660009081526075602052604090205460ff16151581151514156134495760405162461bcd60e51b8152600401610814906145d5565b73ffffffffffffffffffffffffffffffffffffffff821660009081526075602052604090819020805460ff1916831515179055517f4b4231060768ee40d7781b20f37f18e43e4bac84908227f9d487ed96bd7f1dc790610d8390849084906142c3565b600061350e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166139259092919063ffffffff16565b80519091501561083e5780806020019051602081101561352d57600080fd5b505161083e5760405162461bcd60e51b815260040180806020018281038252602a815260200180614edb602a913960400191505060405180910390fd5b3b151590565b600154610100900460ff16806135895750613589612d39565b80613597575060015460ff16155b6135d25760405162461bcd60e51b815260040180806020018281038252602e815260200180614e8c602e913960400191505060405180910390fd5b600154610100900460ff16158015612e03576001805460ff197fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff9091166101001716811790558015611dcd57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b600154610100900460ff16806136625750613662612d39565b80613670575060015460ff16155b6136ab5760405162461bcd60e51b815260040180806020018281038252602e815260200180614e8c602e913960400191505060405180910390fd5b600154610100900460ff161580156136f2576001805460ff197fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff9091166101001716811790555b60006136fc612d10565b603480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015611dcd57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b60008082116137f6576040805162461bcd60e51b815260206004820152601860248201527f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000604482015290519081900360640190fd5b8183816137ff57fe5b069392505050565b60008282111561385e576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156133a6576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000808211613914576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161391d57fe5b049392505050565b6060613934848460008561393e565b90505b9392505050565b60608247101561397f5760405162461bcd60e51b8152600401808060200182810382526026815260200180614e666026913960400191505060405180910390fd5b6139888561356a565b6139d9576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310613a4257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613a05565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613aa4576040519150601f19603f3d011682016040523d82523d6000602084013e613aa9565b606091505b5091509150613ab9828286613ac4565b979650505050505050565b60608315613ad3575081613937565b825115613ae35782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613b2d578181015183820152602001613b15565b50505050905090810190601f168015613b5a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b604080518082019091526000808252602082015290565b600082601f830112613b8f578081fd5b8135602067ffffffffffffffff80831115613ba657fe5b81830260405183828201018181108482111715613bbf57fe5b60405284815283810192508684018288018501891015613bdd578687fd5b8692505b85831015613c08578035613bf481614de9565b845292840192600192909201918401613be1565b50979650505050505050565b8035801515811461151457600080fd5b60008083601f840112613c35578182fd5b50813567ffffffffffffffff811115613c4c578182fd5b602083019150836020828501011115613c6457600080fd5b9250929050565b803561ffff8116811461151457600080fd5b600060208284031215613c8e578081fd5b81356133a681614de9565b60008060408385031215613cab578081fd5b8235613cb681614de9565b946020939093013593505050565b60008060408385031215613cd6578182fd5b8235613ce181614de9565b91506020830135613cf181614de9565b809150509250929050565b600080600060608486031215613d10578081fd5b8335613d1b81614de9565b92506020840135613d2b81614de9565b929592945050506040919091013590565b600080600080600060a08688031215613d53578081fd5b8535613d5e81614de9565b94506020860135613d6e81614de9565b9350604086013567ffffffffffffffff80821115613d8a578283fd5b613d9689838a01613b7f565b945060608801359150613da882614e29565b90925060808701359080821115613dbd578283fd5b50613dca88828901613b7f565b9150509295509295909350565b600080600060608486031215613d10578283fd5b60008060408385031215613dfd578182fd5b8235613e0881614de9565b9150613e1660208401613c14565b90509250929050565b60008060008060608587031215613e34578384fd5b8435613e3f81614de9565b9350602085013567ffffffffffffffff811115613e5a578384fd5b613e6687828801613c24565b9598909750949560400135949350505050565b60008060008060008060808789031215613e91578384fd5b8635613e9c81614de9565b9550602087013567ffffffffffffffff80821115613eb8578586fd5b613ec48a838b01613c24565b9097509550604089013594506060890135915080821115613ee3578283fd5b50613ef089828a01613c24565b979a9699509497509295939492505050565b600060208284031215613f13578081fd5b61393782613c14565b600060208284031215613f2d578081fd5b5035919050565b600080600060408486031215613f48578081fd5b83359250602084013567ffffffffffffffff811115613f65578182fd5b613f7186828701613c24565b9497909650939450505050565b600060608284031215613f8f578081fd5b6040516060810181811067ffffffffffffffff82111715613fac57fe5b6040528251613fba81614e0b565b81526020830151613fca81614e29565b6020820152604083015163ffffffff81168114613fe5578283fd5b60408201529392505050565b600060208284031215614002578081fd5b81356133a681614e0b565b60006020828403121561401e578081fd5b61393782613c6b565b6000806000806080858703121561403c578182fd5b61404585613c6b565b966020860135965060408601359560600135945092505050565b600080600080600060a08688031215614076578283fd5b61407f86613c6b565b945060208601359350604086013592506060860135915060808601356140a481614de9565b809150509295509295909350565b6000806000606084860312156140c6578081fd5b6140cf84613c6b565b925060208401356140df81614e0b565b915060408401356140ef81614e0b565b809150509250925092565b6000806040838503121561410c578182fd5b61411583613c6b565b9150613e1660208401613c6b565b600080600060608486031215614137578081fd5b61414084613c6b565b925061414e60208501613c6b565b915060408401356140ef81614e29565b60008060008060808587031215614173578182fd5b61417c85613c6b565b935061418a60208601613c6b565b9250604085013561419a81614e29565b915060608501356141aa81614de9565b939692955090935050565b600080604083850312156141c7578182fd5b825191506020830151613cf181614e0b565b6000602082840312156141ea578081fd5b81356133a681614e29565b60007fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b1682528460148301528284603484013791016034019081529392505050565b6000828483379101908152919050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9290921682521515602082015260400190565b600073ffffffffffffffffffffffffffffffffffffffff86168252602085818401528415156040840152608060608401528351806080850152825b818110156143425785810183015185820160a001528201614326565b81811115614353578360a083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160a0019695505050505050565b901515815260200190565b90815260200190565b93845260ff9290921660208401526040830152606082015260800190565b60208082526026908201527f4d756c74695369673a207369676e657220616c726561647920696e207468617460408201527f2073746174650000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602f908201527f4d756c74695369674f7261636c653a205f757365724170706c69636174696f6e60408201527f206973206e6f7420616c6c6f7765640000000000000000000000000000000000606082015260800190565b60208082526028908201527f4d756c74695369673a207369676e6174757265206973206e6f742066726f6d2060408201527f61207369676e6572000000000000000000000000000000000000000000000000606082015260800190565b60208082526018908201527f4d756c74695369673a20696e76616c69642071756f72756d0000000000000000604082015260600190565b6020808252601e908201527f4f7261636c653a20616c726561647920617070726f76656420626c6f636b0000604082015260600190565b6020808252602b908201527f4d756c74695369674f7261636c653a2061646d696e20616c726561647920696e60408201527f2074686174207374617465000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f4f7261636c653a20616c7265616479207375626d697474656400000000000000604082015260600190565b6020808252602c908201527f416363657373436f6e74726f6c3a206164647265737320616c7265616479206960408201527f6e20746861742073746174650000000000000000000000000000000000000000606082015260800190565b60208082526017908201527f4f7261636c653a206e6f7420696d706c656d656e746564000000000000000000604082015260600190565b60208082526018908201527f4f7261636c653a206e6f7420696e2077686974656c6973740000000000000000604082015260600190565b60208082526023908201527f4d756c74695369674f7261636c653a205f756c6e206973206e6f7420616c6c6f60408201527f7765640000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f4d756c74695369673a207369676e657273206e6f7420736f7274656400000000604082015260600190565b60208082526021908201527f4d756c74695369674f7261636c653a2063616c6c20646174612065787069726560408201527f6400000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526015908201527f4f7261636c653a206e6f742076616c696461746f720000000000000000000000604082015260600190565b60208082526019908201527f4d756c74695369673a207369676e65727320746f6f2066657700000000000000604082015260600190565b60208082526022908201527f4f7261636c653a207468726573686f6c64203e20636f6d6d697474656520736960408201527f7a65000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f4d756c74695369674f7261636c653a2063616c6c206461746120616c7265616460408201527f7920657865637574656400000000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4d756c74695369674f7261636c653a20756c6e20616c726561647920696e207460408201527f6861742073746174650000000000000000000000000000000000000000000000606082015260800190565b6020808252602f908201527f4d756c74695369673a207369676e617475726573206d75737420626520696e2060408201527f617363656e64696e67206f726465720000000000000000000000000000000000606082015260800190565b60208082526014908201527f4f7261636c653a2075706772616465206f6e6c79000000000000000000000000604082015260600190565b6020808252601a908201527f4d756c74695369674f7261636c653a2064657072656361746564000000000000604082015260600190565b60208082526022908201527f4f7261636c653a20636f6d6d69747465652073697a65203c207468726573686f60408201527f6c64000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f4d756c74695369674f7261636c653a20746172676574206d757374206265207560408201527f6c6e206f722073656c6600000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f4d756c74695369673a20636f6d6d69747465652073697a65203c20746872657360408201527f686f6c6400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f4d756c74695369674f7261636c653a2063616c6c6572206d757374206265207360408201527f656c660000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526022908201527f4d756c74695369674f7261636c653a2063616c6c6572206d757374206265207560408201527f6c6e000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526027908201527f4f7261636c653a2076616c696461746f7220616c726561647920696e2074686160408201527f7420737461746500000000000000000000000000000000000000000000000000606082015260800190565b6020808252601e908201527f4d756c74695369673a207369676e61747572657320746f6f2073686f72740000604082015260600190565b60208082526011908201527f4f7261636c653a206e6f742061646d696e000000000000000000000000000000604082015260600190565b81516fffffffffffffffffffffffffffffffff9081168252602092830151169181019190915260400190565b6fffffffffffffffffffffffffffffffff91909116815260200190565b6fffffffffffffffffffffffffffffffff92831681529116602082015260400190565b61ffff91909116815260200190565b61ffff9290921682521515602082015260400190565b61ffff94909416845260208401929092526040830152606082015260800190565b61ffff92831681529116602082015260400190565b61ffff938416815291909216602082015267ffffffffffffffff909116604082015260600190565b61ffff958616815293909416602084015267ffffffffffffffff91909116604083015273ffffffffffffffffffffffffffffffffffffffff166060820152608081019190915260a00190565b61ffff9390931683526020830191909152604082015260600190565b67ffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff81168114611dcd57600080fd5b6fffffffffffffffffffffffffffffffff81168114611dcd57600080fd5b67ffffffffffffffff81168114611dcd57600080fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220866307cd056817bef908560053c7114999d512ffc1213a5356785b8b866680a164736f6c63430007060033