60806040526001600560146101000a81548160ff0219169083151502179055506000600560156101000a81548160ff0219169083151502179055506001600a60006101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff0219169083151502179055506000600c60006101000a81548160ff0219169083151502179055503480156200009857600080fd5b5060405162004809380380620048098339818101604052810190620000be919062000a21565b6040518060400160405280601081526020017f55736564205765626572204772696c6c000000000000000000000000000000008152506040518060400160405280600581526020017f4752494c4c00000000000000000000000000000000000000000000000000000081525081600390816200013b919062000ccd565b5080600490816200014d919062000ccd565b5050506200017062000164620005c260201b60201c565b620005ca60201b60201c565b6200019d62000184620005c260201b60201c565b6b078754b118352acb5a0000006200069060201b60201c565b6001600b6000620001b3620005c260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200030d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000333919062000a21565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e3919062000a21565b6040518363ffffffff1660e01b81526004016200040292919062000dc5565b6020604051808303816000875af115801562000422573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000448919062000a21565b90506200045d816001620007fd60201b60201c565b73f3caa5a68cd685f9e6e707a6ba26b01598e18ae2600a60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062015f9060088190555062015f906009819055506001600b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600a60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000fb9565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000702576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006f99062000e53565b60405180910390fd5b6200071660008383620008f260201b60201c565b80600260008282546200072a919062000ea4565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620007dd919062000ef0565b60405180910390a3620007f960008383620008f760201b60201c565b5050565b6200080d620008fc60201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200084757600080fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f3ce88d9221880ccac3da1d2b7bff84dc444bd01b3bb0d90da7826a6049f61ee582604051620008e6919062000f2a565b60405180910390a25050565b505050565b505050565b6200090c620005c260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620009326200098d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200098b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009829062000f97565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009e982620009bc565b9050919050565b620009fb81620009dc565b811462000a0757600080fd5b50565b60008151905062000a1b81620009f0565b92915050565b60006020828403121562000a3a5762000a39620009b7565b5b600062000a4a8482850162000a0a565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ad557607f821691505b60208210810362000aeb5762000aea62000a8d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b16565b62000b61868362000b16565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000bae62000ba862000ba28462000b79565b62000b83565b62000b79565b9050919050565b6000819050919050565b62000bca8362000b8d565b62000be262000bd98262000bb5565b84845462000b23565b825550505050565b600090565b62000bf962000bea565b62000c0681848462000bbf565b505050565b5b8181101562000c2e5762000c2260008262000bef565b60018101905062000c0c565b5050565b601f82111562000c7d5762000c478162000af1565b62000c528462000b06565b8101602085101562000c62578190505b62000c7a62000c718562000b06565b83018262000c0b565b50505b505050565b600082821c905092915050565b600062000ca26000198460080262000c82565b1980831691505092915050565b600062000cbd838362000c8f565b9150826002028217905092915050565b62000cd88262000a53565b67ffffffffffffffff81111562000cf45762000cf362000a5e565b5b62000d00825462000abc565b62000d0d82828562000c32565b600060209050601f83116001811462000d45576000841562000d30578287015190505b62000d3c858262000caf565b86555062000dac565b601f19841662000d558662000af1565b60005b8281101562000d7f5784890151825560018201915060208501945060208101905062000d58565b8683101562000d9f578489015162000d9b601f89168262000c8f565b8355505b6001600288020188555050505b505050505050565b62000dbf81620009dc565b82525050565b600060408201905062000ddc600083018562000db4565b62000deb602083018462000db4565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000e3b601f8362000df2565b915062000e488262000e03565b602082019050919050565b6000602082019050818103600083015262000e6e8162000e2c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000eb18262000b79565b915062000ebe8362000b79565b925082820190508082111562000ed95762000ed862000e75565b5b92915050565b62000eea8162000b79565b82525050565b600060208201905062000f07600083018462000edf565b92915050565b60008115159050919050565b62000f248162000f0d565b82525050565b600060208201905062000f41600083018462000f19565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000f7f60208362000df2565b915062000f8c8262000f47565b602082019050919050565b6000602082019050818103600083015262000fb28162000f70565b9050919050565b6138408062000fc96000396000f3fe6080604052600436106101f25760003560e01c806397a20cd91161010d578063c01569f9116100a0578063d70e7dc91161006f578063d70e7dc9146106c2578063dd62ed3e146106ed578063f196782c1461072a578063f2fde38b14610753578063f887ea401461077c576101f9565b8063c01569f91461062a578063c38ec0b614610655578063d24741801461066c578063d52b5aa014610697576101f9565b8063ac4ddd9f116100dc578063ac4ddd9f14610584578063ae26a488146105ad578063b29ee3dc146105d6578063bab88c1914610601576101f9565b806397a20cd9146104b6578063a457c2d7146104cd578063a752a7c11461050a578063a9059cbb14610547576101f9565b806344db94d011610185578063751039fc11610154578063751039fc1461040c5780637fb992f7146104235780638da5cb5b1461046057806395d89b411461048b576101f9565b806344db94d01461038a5780636f0be4b0146103a157806370a08231146103b8578063715018a6146103f5576101f9565b80632d99d32e116101c15780632d99d32e146102ce578063313ce567146102f757806339509351146103225780633ef57eaa1461035f576101f9565b806306fdde03146101fe578063095ea7b31461022957806318160ddd1461026657806323b872dd14610291576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b506102136107a7565b60405161022091906126f8565b60405180910390f35b34801561023557600080fd5b50610250600480360381019061024b91906127b3565b610839565b60405161025d919061280e565b60405180910390f35b34801561027257600080fd5b5061027b61085c565b6040516102889190612838565b60405180910390f35b34801561029d57600080fd5b506102b860048036038101906102b39190612853565b610866565b6040516102c5919061280e565b60405180910390f35b3480156102da57600080fd5b506102f560048036038101906102f091906128d2565b610895565b005b34801561030357600080fd5b5061030c61097f565b604051610319919061292e565b60405180910390f35b34801561032e57600080fd5b50610349600480360381019061034491906127b3565b610988565b604051610356919061280e565b60405180910390f35b34801561036b57600080fd5b506103746109bf565b604051610381919061280e565b60405180910390f35b34801561039657600080fd5b5061039f6109d2565b005b3480156103ad57600080fd5b506103b6610a73565b005b3480156103c457600080fd5b506103df60048036038101906103da9190612949565b610c4f565b6040516103ec9190612838565b60405180910390f35b34801561040157600080fd5b5061040a610c97565b005b34801561041857600080fd5b50610421610cab565b005b34801561042f57600080fd5b5061044a60048036038101906104459190612949565b610d4b565b604051610457919061280e565b60405180910390f35b34801561046c57600080fd5b50610475610d6b565b6040516104829190612985565b60405180910390f35b34801561049757600080fd5b506104a0610d95565b6040516104ad91906126f8565b60405180910390f35b3480156104c257600080fd5b506104cb610e27565b005b3480156104d957600080fd5b506104f460048036038101906104ef91906127b3565b610e9b565b604051610501919061280e565b60405180910390f35b34801561051657600080fd5b50610531600480360381019061052c9190612949565b610f12565b60405161053e919061280e565b60405180910390f35b34801561055357600080fd5b5061056e600480360381019061056991906127b3565b610f32565b60405161057b919061280e565b60405180910390f35b34801561059057600080fd5b506105ab60048036038101906105a69190612949565b610f55565b005b3480156105b957600080fd5b506105d460048036038101906105cf9190612949565b611080565b005b3480156105e257600080fd5b506105eb611244565b6040516105f89190612985565b60405180910390f35b34801561060d57600080fd5b50610628600480360381019061062391906129a0565b61126a565b005b34801561063657600080fd5b5061063f611338565b60405161064c9190612838565b60405180910390f35b34801561066157600080fd5b5061066a61133e565b005b34801561067857600080fd5b506106816114c2565b60405161068e919061280e565b60405180910390f35b3480156106a357600080fd5b506106ac6114d5565b6040516106b9919061280e565b60405180910390f35b3480156106ce57600080fd5b506106d76114e8565b6040516106e49190612838565b60405180910390f35b3480156106f957600080fd5b50610714600480360381019061070f91906129e0565b6114ee565b6040516107219190612838565b60405180910390f35b34801561073657600080fd5b50610751600480360381019061074c91906128d2565b611575565b005b34801561075f57600080fd5b5061077a60048036038101906107759190612949565b61165f565b005b34801561078857600080fd5b506107916116e2565b60405161079e9190612a7f565b60405180910390f35b6060600380546107b690612ac9565b80601f01602080910402602001604051908101604052809291908181526020018280546107e290612ac9565b801561082f5780601f106108045761010080835404028352916020019161082f565b820191906000526020600020905b81548152906001019060200180831161081257829003601f168201915b5050505050905090565b600080610844611708565b9050610851818585611710565b600191505092915050565b6000600254905090565b600080610871611708565b905061087e8582856118d9565b610889858585611965565b60019150509392505050565b61089d612061565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108d657600080fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f3ce88d9221880ccac3da1d2b7bff84dc444bd01b3bb0d90da7826a6049f61ee582604051610973919061280e565b60405180910390a25050565b60006012905090565b600080610993611708565b90506109b48185856109a585896114ee565b6109af9190612b29565b611710565b600191505092915050565b600c60009054906101000a900460ff1681565b6109da612061565b600c60009054906101000a900460ff1615610a2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2190612ba9565b60405180910390fd5b6001600c60006101000a81548160ff0219169083151502179055507f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c760405160405180910390a1565b6001600560156101000a81548160ff0219169083151502179055506000610a9930610c4f565b905060008103610ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad590612c15565b60405180910390fd5b6000819050610aec816120df565b600047905060008103610b34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2b90612c81565b60405180910390fd5b6000600a60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610b7c90612cd2565b60006040518083038185875af1925050503d8060008114610bb9576040519150601f19603f3d011682016040523d82523d6000602084013e610bbe565b606091505b5050905080610c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf990612d59565b60405180910390fd5b7fc7df6cf2d6251a33f6c831e4bf226f0f61d7e6d7c1368fcc7177a922580b78f460405160405180910390a1505050506000600560156101000a81548160ff021916908315150217905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c9f612061565b610ca96000612322565b565b610cb3612061565b600a60019054906101000a900460ff16610d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf990612dc5565b60405180910390fd5b6000600a60016101000a81548160ff0219169083151502179055507f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef60405160405180910390a1565b60076020528060005260406000206000915054906101000a900460ff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610da490612ac9565b80601f0160208091040260200160405190810160405280929190818152602001828054610dd090612ac9565b8015610e1d5780601f10610df257610100808354040283529160200191610e1d565b820191906000526020600020905b815481529060010190602001808311610e0057829003601f168201915b5050505050905090565b610e2f612061565b600560149054906101000a900460ff16610e7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7590612e31565b60405180910390fd5b6000600560146101000a81548160ff021916908315150217905550565b600080610ea6611708565b90506000610eb482866114ee565b905083811015610ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef090612ec3565b60405180910390fd5b610f068286868403611710565b60019250505092915050565b600b6020528060005260406000206000915054906101000a900460ff1681565b600080610f3d611708565b9050610f4a818585611965565b600191505092915050565b610f5d612061565b60008190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600a60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fda9190612985565b602060405180830381865afa158015610ff7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101b9190612ef8565b6040518363ffffffff1660e01b8152600401611038929190612f25565b6020604051808303816000875af1158015611057573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107b9190612f63565b505050565b611088612061565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee90612fdc565b60405180910390fd5b6000600b6000600a60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f917ec80f3dc8a27245b93b727e10847b0ca6a74f78890cf9e0f15a06436975e1816040516112399190612985565b60405180910390a150565b600a60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611272612061565b61753082111561128157600080fd5b61753081111561129057600080fd5b81600881905550806009819055506000821480156112ae5750600081145b156112fb576000600a60006101000a81548160ff0219169083151502179055507fb345a5158c487bb7fc2d2db42a6f3f28929a8bdc1b09a39238076ca82f48c3c860405160405180910390a15b7f6b12ba31420cba2eff5eb73d231327ae315db770252eb1497008877d248b576f828260405161132c929190612ffc565b60405180910390a15050565b60085481565b611346612061565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d9919061303a565b90508073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114309190612985565b602060405180830381865afa15801561144d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114719190612ef8565b6040518263ffffffff1660e01b815260040161148d9190612838565b600060405180830381600087803b1580156114a757600080fd5b505af11580156114bb573d6000803e3d6000fd5b5050505050565b600a60009054906101000a900460ff1681565b600a60019054906101000a900460ff1681565b60095481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61157d612061565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115b657600080fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f33e99dbd8a2fdf021abaf8531c98838a37f8e85fd3cbf0e897047074f9c4ecf482604051611653919061280e565b60405180910390a25050565b611667612061565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036116d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cd906130d9565b60405180910390fd5b6116df81612322565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361177f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117769061316b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e5906131fd565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118cc9190612838565b60405180910390a3505050565b60006118e584846114ee565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461195f5781811015611951576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194890613269565b60405180910390fd5b61195e8484848403611710565b5b50505050565b600c60009054906101000a900460ff16806119b25750611983610d6b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b6119bb57600080fd5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a5c5750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611a7157611a6c8383836123e8565b61205c565b600a60019054906101000a900460ff1615611e3957600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611b295750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611be2576a09a2fbc3f6069d2d400000811115611b7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b73906132d5565b60405180910390fd5b6a1345f787ec0d3a5a80000081611b9284610c4f565b611b9c9190612b29565b1115611bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd490613341565b60405180910390fd5b611e38565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611c855750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611cdd576a09a2fbc3f6069d2d400000811115611cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccf906132d5565b60405180910390fd5b611e37565b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d815750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e36576a09a2fbc3f6069d2d400000811115611dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcb906132d5565b60405180910390fd5b6a1345f787ec0d3a5a80000081611dea84610c4f565b611df49190612b29565b1115611e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2c90613341565b60405180910390fd5b5b5b5b5b6000819050600a60009054906101000a900460ff161561204f57600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ef45750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561204e576000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611fc257620186a060095483611f5f9190613361565b611f6991906133d2565b9050600560149054906101000a900460ff168015611f945750600560159054906101000a900460ff16155b8015611fb357506a04d17de1fb034e96a00000611fb030610c4f565b10155b15611fc157611fc0610a73565b5b5b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561203357620186a0600854836120269190613361565b61203091906133d2565b90505b808261203f9190613403565b915061204c8530836123e8565b505b5b61205a8484836123e8565b505b505050565b612069611708565b73ffffffffffffffffffffffffffffffffffffffff16612087610d6b565b73ffffffffffffffffffffffffffffffffffffffff16146120dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d490613483565b60405180910390fd5b565b6000600267ffffffffffffffff8111156120fc576120fb6134a3565b5b60405190808252806020026020018201604052801561212a5781602001602082028036833780820191505090505b5090503081600081518110612142576121416134d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220d919061303a565b81600181518110612221576122206134d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061228830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611710565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122ec9594939291906135fa565b600060405180830381600087803b15801561230657600080fd5b505af115801561231a573d6000803e3d6000fd5b505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244e906136c6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124bd90613758565b60405180910390fd5b6124d183838361265e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254e906137ea565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126459190612838565b60405180910390a3612658848484612663565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156126a2578082015181840152602081019050612687565b60008484015250505050565b6000601f19601f8301169050919050565b60006126ca82612668565b6126d48185612673565b93506126e4818560208601612684565b6126ed816126ae565b840191505092915050565b6000602082019050818103600083015261271281846126bf565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061274a8261271f565b9050919050565b61275a8161273f565b811461276557600080fd5b50565b60008135905061277781612751565b92915050565b6000819050919050565b6127908161277d565b811461279b57600080fd5b50565b6000813590506127ad81612787565b92915050565b600080604083850312156127ca576127c961271a565b5b60006127d885828601612768565b92505060206127e98582860161279e565b9150509250929050565b60008115159050919050565b612808816127f3565b82525050565b600060208201905061282360008301846127ff565b92915050565b6128328161277d565b82525050565b600060208201905061284d6000830184612829565b92915050565b60008060006060848603121561286c5761286b61271a565b5b600061287a86828701612768565b935050602061288b86828701612768565b925050604061289c8682870161279e565b9150509250925092565b6128af816127f3565b81146128ba57600080fd5b50565b6000813590506128cc816128a6565b92915050565b600080604083850312156128e9576128e861271a565b5b60006128f785828601612768565b9250506020612908858286016128bd565b9150509250929050565b600060ff82169050919050565b61292881612912565b82525050565b6000602082019050612943600083018461291f565b92915050565b60006020828403121561295f5761295e61271a565b5b600061296d84828501612768565b91505092915050565b61297f8161273f565b82525050565b600060208201905061299a6000830184612976565b92915050565b600080604083850312156129b7576129b661271a565b5b60006129c58582860161279e565b92505060206129d68582860161279e565b9150509250929050565b600080604083850312156129f7576129f661271a565b5b6000612a0585828601612768565b9250506020612a1685828601612768565b9150509250929050565b6000819050919050565b6000612a45612a40612a3b8461271f565b612a20565b61271f565b9050919050565b6000612a5782612a2a565b9050919050565b6000612a6982612a4c565b9050919050565b612a7981612a5e565b82525050565b6000602082019050612a946000830184612a70565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612ae157607f821691505b602082108103612af457612af3612a9a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b348261277d565b9150612b3f8361277d565b9250828201905080821115612b5757612b56612afa565b5b92915050565b7f4772696c6c696e6720697320616c726561647920656e61626c65640000000000600082015250565b6000612b93601b83612673565b9150612b9e82612b5d565b602082019050919050565b60006020820190508181036000830152612bc281612b86565b9050919050565b7f4e6f7468696e67206f6e20746865206772696c6c000000000000000000000000600082015250565b6000612bff601483612673565b9150612c0a82612bc9565b602082019050919050565b60006020820190508181036000830152612c2e81612bf2565b9050919050565b7f4554482062616c616e6365203000000000000000000000000000000000000000600082015250565b6000612c6b600d83612673565b9150612c7682612c35565b602082019050919050565b60006020820190508181036000830152612c9a81612c5e565b9050919050565b600081905092915050565b50565b6000612cbc600083612ca1565b9150612cc782612cac565b600082019050919050565b6000612cdd82612caf565b9150819050919050565b7f5472616e7366657220746f206772696c6c6d6569737465722077616c6c65742060008201527f6661696c65642e00000000000000000000000000000000000000000000000000602082015250565b6000612d43602783612673565b9150612d4e82612ce7565b604082019050919050565b60006020820190508181036000830152612d7281612d36565b9050919050565b7f4e6f206d6f726520636865636b73206f6e2070696563652073697a6573000000600082015250565b6000612daf601d83612673565b9150612dba82612d79565b602082019050919050565b60006020820190508181036000830152612dde81612da2565b9050919050565b7f4772696c6c6d65697374657220616c72656164792068617320656e6f75676800600082015250565b6000612e1b601f83612673565b9150612e2682612de5565b602082019050919050565b60006020820190508181036000830152612e4a81612e0e565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612ead602583612673565b9150612eb882612e51565b604082019050919050565b60006020820190508181036000830152612edc81612ea0565b9050919050565b600081519050612ef281612787565b92915050565b600060208284031215612f0e57612f0d61271a565b5b6000612f1c84828501612ee3565b91505092915050565b6000604082019050612f3a6000830185612976565b612f476020830184612829565b9392505050565b600081519050612f5d816128a6565b92915050565b600060208284031215612f7957612f7861271a565b5b6000612f8784828501612f4e565b91505092915050565b7f57616c6c65742063616e206e6f74206265206164647265737320307800000000600082015250565b6000612fc6601c83612673565b9150612fd182612f90565b602082019050919050565b60006020820190508181036000830152612ff581612fb9565b9050919050565b60006040820190506130116000830185612829565b61301e6020830184612829565b9392505050565b60008151905061303481612751565b92915050565b6000602082840312156130505761304f61271a565b5b600061305e84828501613025565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006130c3602683612673565b91506130ce82613067565b604082019050919050565b600060208201905081810360008301526130f2816130b6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613155602483612673565b9150613160826130f9565b604082019050919050565b6000602082019050818103600083015261318481613148565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006131e7602283612673565b91506131f28261318b565b604082019050919050565b60006020820190508181036000830152613216816131da565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613253601d83612673565b915061325e8261321d565b602082019050919050565b6000602082019050818103600083015261328281613246565b9050919050565b7f546f6f2062696720612070696563650000000000000000000000000000000000600082015250565b60006132bf600f83612673565b91506132ca82613289565b602082019050919050565b600060208201905081810360008301526132ee816132b2565b9050919050565b7f546f6f206d756368206f6e20746865206772696c6c0000000000000000000000600082015250565b600061332b601583612673565b9150613336826132f5565b602082019050919050565b6000602082019050818103600083015261335a8161331e565b9050919050565b600061336c8261277d565b91506133778361277d565b92508282026133858161277d565b9150828204841483151761339c5761339b612afa565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006133dd8261277d565b91506133e88361277d565b9250826133f8576133f76133a3565b5b828204905092915050565b600061340e8261277d565b91506134198361277d565b925082820390508181111561343157613430612afa565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061346d602083612673565b915061347882613437565b602082019050919050565b6000602082019050818103600083015261349c81613460565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061352661352161351c84613501565b612a20565b61277d565b9050919050565b6135368161350b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135718161273f565b82525050565b60006135838383613568565b60208301905092915050565b6000602082019050919050565b60006135a78261353c565b6135b18185613547565b93506135bc83613558565b8060005b838110156135ed5781516135d48882613577565b97506135df8361358f565b9250506001810190506135c0565b5085935050505092915050565b600060a08201905061360f6000830188612829565b61361c602083018761352d565b818103604083015261362e818661359c565b905061363d6060830185612976565b61364a6080830184612829565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006136b0602583612673565b91506136bb82613654565b604082019050919050565b600060208201905081810360008301526136df816136a3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613742602383612673565b915061374d826136e6565b604082019050919050565b6000602082019050818103600083015261377181613735565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006137d4602683612673565b91506137df82613778565b604082019050919050565b60006020820190508181036000830152613803816137c7565b905091905056fea2646970667358221220134368b04bf71ab163bf3dacca9ac6ecf7e50c8ccca0a6ed6bdca20846e2135064736f6c634300081700330000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad24