6103e76009556003600a55660e35fa931a0000600b55610100604052604360808181529062002d1260a039600c9062000039908262000342565b503480156200004757600080fd5b50733cc6cdda760b79bafa08df41ecfa224f810dceb660016040518060400160405280601481526020017f546964657320627920307854617473756869726f0000000000000000000000008152506040518060400160405280601481526020017f546964657320627920307854617473756869726f0000000000000000000000008152508160029081620000dc919062000342565b506003620000eb828262000342565b5050600160005550620000fe336200024b565b6daaeb6d7670e522a718067333cd4e3b15620002435780156200019157604051633e9f1edf60e11b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e90637d3e3dbe906044015b600060405180830381600087803b1580156200017257600080fd5b505af115801562000187573d6000803e3d6000fd5b5050505062000243565b6001600160a01b03821615620001e25760405163a0af290360e01b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e9063a0af29039060440162000157565b604051632210724360e11b81523060048201526daaeb6d7670e522a718067333cd4e90634420e48690602401600060405180830381600087803b1580156200022957600080fd5b505af11580156200023e573d6000803e3d6000fd5b505050505b50506200040e565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c857607f821691505b602082108103620002e957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033d57600081815260208120601f850160051c81016020861015620003185750805b601f850160051c820191505b81811015620003395782815560010162000324565b5050505b505050565b81516001600160401b038111156200035e576200035e6200029d565b62000376816200036f8454620002b3565b84620002ef565b602080601f831160018114620003ae5760008415620003955750858301515b600019600386901b1c1916600185901b17855562000339565b600085815260208120601f198616915b82811015620003df57888601518255948401946001909101908401620003be565b5085821015620003fe5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6128f4806200041e6000396000f3fe6080604052600436106101fe5760003560e01c806385b27c851161011d578063b88d4fde116100b0578063c87b56dd1161007f578063d5abeb0111610064578063d5abeb01146105c2578063e985e9c5146105d8578063f2fde38b1461062e57600080fd5b8063c87b56dd1461058d578063d547cfb7146105ad57600080fd5b8063b88d4fde14610506578063bc63f02e14610519578063c19d93fb14610539578063c23dc68f1461056057600080fd5b806399a2557a116100ec57806399a2557a1461049d578063a035b1fe146104bd578063a0712d68146104d3578063a22cb465146104e657600080fd5b806385b27c85146104275780638d6cc56d1461043d5780638da5cb5b1461045d57806395d89b411461048857600080fd5b806341f43434116101955780636352211e116101645780636352211e146103a557806370a08231146103c5578063715018a6146103e55780638462151c146103fa57600080fd5b806341f434341461032357806342842e0e1461034557806355f804b3146103585780635bbb21771461037857600080fd5b8063095ea7b3116101d1578063095ea7b3146102c157806318160ddd146102d457806323b872dd146102fb5780633ccfd60b1461030e57600080fd5b806301ffc9a7146102035780630591d3ab1461023857806306fdde031461025a578063081812fc1461027c575b600080fd5b34801561020f57600080fd5b5061022361021e36600461203c565b61064e565b60405190151581526020015b60405180910390f35b34801561024457600080fd5b50610258610253366004612059565b610733565b005b34801561026657600080fd5b5061026f61077f565b60405161022f91906120e8565b34801561028857600080fd5b5061029c6102973660046120fb565b610811565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161022f565b6102586102cf36600461213d565b61087b565b3480156102e057600080fd5b5060015460005403600019015b60405190815260200161022f565b610258610309366004612167565b610966565b34801561031a57600080fd5b5061025861099e565b34801561032f57600080fd5b5061029c6daaeb6d7670e522a718067333cd4e81565b610258610353366004612167565b610a96565b34801561036457600080fd5b50610258610373366004612266565b610ac8565b34801561038457600080fd5b506103986103933660046122af565b610ae0565b60405161022f9190612324565b3480156103b157600080fd5b5061029c6103c03660046120fb565b610bac565b3480156103d157600080fd5b506102ed6103e03660046123ae565b610bb7565b3480156103f157600080fd5b50610258610c39565b34801561040657600080fd5b5061041a6104153660046123ae565b610c4d565b60405161022f91906123c9565b34801561043357600080fd5b506102ed600a5481565b34801561044957600080fd5b506102586104583660046120fb565b610d78565b34801561046957600080fd5b5060085473ffffffffffffffffffffffffffffffffffffffff1661029c565b34801561049457600080fd5b5061026f610d85565b3480156104a957600080fd5b5061041a6104b8366004612401565b610d94565b3480156104c957600080fd5b506102ed600b5481565b6102586104e13660046120fb565b610f5c565b3480156104f257600080fd5b50610258610501366004612442565b61114b565b610258610514366004612479565b6111e2565b34801561052557600080fd5b506102586105343660046124f5565b61121c565b34801561054557600080fd5b50600d546105539060ff1681565b60405161022f9190612550565b34801561056c57600080fd5b5061058061057b3660046120fb565b6112ae565b60405161022f9190612591565b34801561059957600080fd5b5061026f6105a83660046120fb565b611336565b3480156105b957600080fd5b5061026f6113d2565b3480156105ce57600080fd5b506102ed60095481565b3480156105e457600080fd5b506102236105f33660046125e3565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260076020908152604080832093909416825291909152205460ff1690565b34801561063a57600080fd5b506102586106493660046123ae565b611460565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614806106e157507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061072d57507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61073b611514565b600d80548291907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001838181111561077757610777612521565b021790555050565b60606002805461078e9061260d565b80601f01602080910402602001604051908101604052809291908181526020018280546107ba9061260d565b80156108075780601f106107dc57610100808354040283529160200191610807565b820191906000526020600020905b8154815290600101906020018083116107ea57829003601f168201915b5050505050905090565b600061081c82611595565b610852576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060009081526006602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061088682610bac565b90503373ffffffffffffffffffffffffffffffffffffffff8216146108e5576108af81336105f3565b6108e5576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b8273ffffffffffffffffffffffffffffffffffffffff8116331461098d5761098d336115e3565b6109988484846116e8565b50505050565b6109a6611514565b60006109c760085473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff164760405160006040518083038185875af1925050503d8060008114610a1e576040519150601f19603f3d011682016040523d82523d6000602084013e610a23565b606091505b5050905080610a93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4661696c656420746f207769746864726177204574686572000000000000000060448201526064015b60405180910390fd5b50565b8273ffffffffffffffffffffffffffffffffffffffff81163314610abd57610abd336115e3565b61099884848461195a565b610ad0611514565b600c610adc82826126a6565b5050565b60608160008167ffffffffffffffff811115610afe57610afe6121a3565b604051908082528060200260200182016040528015610b5057816020015b604080516080810182526000808252602080830182905292820181905260608201528252600019909201910181610b1c5790505b50905060005b828114610ba357610b7e868683818110610b7257610b72612784565b905060200201356112ae565b828281518110610b9057610b90612784565b6020908102919091010152600101610b56565b50949350505050565b600061072d8261197a565b600073ffffffffffffffffffffffffffffffffffffffff8216610c06576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205467ffffffffffffffff1690565b610c41611514565b610c4b6000611a1b565b565b60606000806000610c5d85610bb7565b905060008167ffffffffffffffff811115610c7a57610c7a6121a3565b604051908082528060200260200182016040528015610ca3578160200160208202803683370190505b5060408051608081018252600080825260208201819052918101829052606081019190915290915060015b838614610d6c57610cde81611a92565b91508160400151610d6457815173ffffffffffffffffffffffffffffffffffffffff1615610d0b57815194505b8773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610d645780838780600101985081518110610d5757610d57612784565b6020026020010181815250505b600101610cce565b50909695505050505050565b610d80611514565b600b55565b60606003805461078e9061260d565b6060818310610dcf576040517f32c1995a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610ddb60005490565b90506001851015610deb57600194505b80841115610df7578093505b6000610e0287610bb7565b905084861015610e215785850381811015610e1b578091505b50610e25565b5060005b60008167ffffffffffffffff811115610e4057610e406121a3565b604051908082528060200260200182016040528015610e69578160200160208202803683370190505b50905081600003610e7f579350610f5592505050565b6000610e8a886112ae565b905060008160400151610e9b575080515b885b888114158015610ead5750848714155b15610f4957610ebb81611a92565b92508260400151610f4157825173ffffffffffffffffffffffffffffffffffffffff1615610ee857825191505b8a73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f415780848880600101995081518110610f3457610f34612784565b6020026020010181815250505b600101610e9d565b50505092835250909150505b9392505050565b6001600d5460ff166001811115610f7557610f75612521565b14610fdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d696e7420697320636c6f7365000000000000000000000000000000000000006044820152606401610a8a565b6009546001546000548391900360001901610ff791906127e2565b111561105f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f536f6c64206f75740000000000000000000000000000000000000000000000006044820152606401610a8a565b600a548111156110cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4d617820706572207478206973203500000000000000000000000000000000006044820152606401610a8a565b600b546110d890826127f5565b341015611141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f596f75206e65656420746f20706179206d6f72650000000000000000000000006044820152606401610a8a565b610a933382611b37565b33600081815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b8373ffffffffffffffffffffffffffffffffffffffff8116331461120957611209336115e3565b61121585858585611b51565b5050505050565b611224611514565b600954600154600054036000190161123c90846127e2565b11156112a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f536f6c64206f75740000000000000000000000000000000000000000000000006044820152606401610a8a565b610adc8183611b37565b604080516080810182526000808252602082018190529181018290526060810191909152604080516080810182526000808252602082018190529181018290526060810191909152600183108061130757506000548310155b156113125792915050565b61131b83611a92565b905080604001511561132d5792915050565b610f5583611bbb565b606061134182611595565b611377576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611381611c59565b905080516000036113a15760405180602001604052806000815250610f55565b806113ab84611c68565b6040516020016113bc92919061280c565b6040516020818303038152906040529392505050565b600c80546113df9061260d565b80601f016020809104026020016040519081016040528092919081815260200182805461140b9061260d565b80156114585780601f1061142d57610100808354040283529160200191611458565b820191906000526020600020905b81548152906001019060200180831161143b57829003601f168201915b505050505081565b611468611514565b73ffffffffffffffffffffffffffffffffffffffff811661150b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610a8a565b610a9381611a1b565b60085473ffffffffffffffffffffffffffffffffffffffff163314610c4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a8a565b6000816001111580156115a9575060005482105b801561072d5750506000908152600460205260409020547c0100000000000000000000000000000000000000000000000000000000161590565b6daaeb6d7670e522a718067333cd4e3b15610a93576040517fc617113400000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015611676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169a919061283b565b610a93576040517fede71dcc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610a8a565b60006116f38261197a565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461175a576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260066020526040902080543380821473ffffffffffffffffffffffffffffffffffffffff8816909114176117cd5761179786336105f3565b6117cd576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff851661181a576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b801561182557600082555b73ffffffffffffffffffffffffffffffffffffffff8681166000908152600560205260408082208054600019019055918716808252919020805460010190554260a01b177c0200000000000000000000000000000000000000000000000000000000176000858152600460205260408120919091557c0200000000000000000000000000000000000000000000000000000000841690036118f6576001840160008181526004602052604081205490036118f45760005481146118f45760008181526004602052604090208490555b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b611975838383604051806020016040528060008152506111e2565b505050565b600081806001116119e9576000548110156119e957600081815260046020526040812054907c0100000000000000000000000000000000000000000000000000000000821690036119e7575b80600003610f555750600019016000818152600460205260409020546119c6565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6008805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60408051608081018252600080825260208201819052918101829052606081019190915260008281526004602052604090205461072d906040805160808101825273ffffffffffffffffffffffffffffffffffffffff8316815260a083901c67ffffffffffffffff1660208201527c0100000000000000000000000000000000000000000000000000000000831615159181019190915260e89190911c606082015290565b610adc828260405180602001604052806000815250611cca565b611b5c848484610966565b73ffffffffffffffffffffffffffffffffffffffff83163b1561099857611b8584848484611d56565b610998576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051608081018252600080825260208201819052918101829052606081019190915261072d611beb8361197a565b6040805160808101825273ffffffffffffffffffffffffffffffffffffffff8316815260a083901c67ffffffffffffffff1660208201527c0100000000000000000000000000000000000000000000000000000000831615159181019190915260e89190911c606082015290565b6060600c805461078e9061260d565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a900480611c8257508190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909101908152919050565b611cd48383611ed0565b73ffffffffffffffffffffffffffffffffffffffff83163b15611975576000548281035b611d0b6000868380600101945086611d56565b611d41576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818110611cf857816000541461121557600080fd5b6040517f150b7a0200000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611db1903390899088908890600401612858565b6020604051808303816000875af1925050508015611e0a575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611e07918101906128a1565b60015b611e81573d808015611e38576040519150601f19603f3d011682016040523d82523d6000602084013e611e3d565b606091505b508051600003611e79576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490505b949350505050565b6000805490829003611f0e576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660008181526005602090815260408083208054680100000000000000018802019055848352600490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b818114611fca57808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600101611f92565b5081600003612005576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005550505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610a9357600080fd5b60006020828403121561204e57600080fd5b8135610f558161200e565b60006020828403121561206b57600080fd5b813560028110610f5557600080fd5b60005b8381101561209557818101518382015260200161207d565b50506000910152565b600081518084526120b681602086016020860161207a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610f55602083018461209e565b60006020828403121561210d57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461213857600080fd5b919050565b6000806040838503121561215057600080fd5b61215983612114565b946020939093013593505050565b60008060006060848603121561217c57600080fd5b61218584612114565b925061219360208501612114565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff808411156121ed576121ed6121a3565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715612233576122336121a3565b8160405280935085815286868601111561224c57600080fd5b858560208301376000602087830101525050509392505050565b60006020828403121561227857600080fd5b813567ffffffffffffffff81111561228f57600080fd5b8201601f810184136122a057600080fd5b611ec8848235602084016121d2565b600080602083850312156122c257600080fd5b823567ffffffffffffffff808211156122da57600080fd5b818501915085601f8301126122ee57600080fd5b8135818111156122fd57600080fd5b8660208260051b850101111561231257600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b81811015610d6c5761239b83855173ffffffffffffffffffffffffffffffffffffffff815116825267ffffffffffffffff602082015116602083015260408101511515604083015262ffffff60608201511660608301525050565b9284019260809290920191600101612340565b6000602082840312156123c057600080fd5b610f5582612114565b6020808252825182820181905260009190848201906040850190845b81811015610d6c578351835292840192918401916001016123e5565b60008060006060848603121561241657600080fd5b61241f84612114565b95602085013595506040909401359392505050565b8015158114610a9357600080fd5b6000806040838503121561245557600080fd5b61245e83612114565b9150602083013561246e81612434565b809150509250929050565b6000806000806080858703121561248f57600080fd5b61249885612114565b93506124a660208601612114565b925060408501359150606085013567ffffffffffffffff8111156124c957600080fd5b8501601f810187136124da57600080fd5b6124e9878235602084016121d2565b91505092959194509250565b6000806040838503121561250857600080fd5b8235915061251860208401612114565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016002831061258b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b815173ffffffffffffffffffffffffffffffffffffffff16815260208083015167ffffffffffffffff169082015260408083015115159082015260608083015162ffffff16908201526080810161072d565b600080604083850312156125f657600080fd5b6125ff83612114565b915061251860208401612114565b600181811c9082168061262157607f821691505b60208210810361265a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561197557600081815260208120601f850160051c810160208610156126875750805b601f850160051c820191505b8181101561195257828155600101612693565b815167ffffffffffffffff8111156126c0576126c06121a3565b6126d4816126ce845461260d565b84612660565b602080601f83116001811461270957600084156126f15750858301515b600019600386901b1c1916600185901b178555611952565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561275657888601518255948401946001909101908401612737565b50858210156127745787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561072d5761072d6127b3565b808202811582820484141761072d5761072d6127b3565b6000835161281e81846020880161207a565b83519083019061283281836020880161207a565b01949350505050565b60006020828403121561284d57600080fd5b8151610f5581612434565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152612897608083018461209e565b9695505050505050565b6000602082840312156128b357600080fd5b8151610f558161200e56fea26469706673582212207a049ad7f9873df2eeae6fa64d555ee44fcc32238271986b5bd163e54061302d64736f6c63430008120033697066733a2f2f62616679626569656376796c6d6334757a6971666868706d6b7378636333327833627133366435686873753269646a626b376336716468736435712f