Contract Address Details

0x63fdcC3D6e1713927401088535b79156b75C5ae3

Token
SatoshiDOGE (STDG)
Creator
0x6d0425–542d35 at 0x0e9674–ad969d
Balance
0.000000000000000177 Doge
Tokens
Fetching tokens...
Transactions
59 Transactions
Transfers
318 Transfers
Gas Used
2,792,422
Last Balance Update
29038324
Contract name:
SatoshiDOGE




Optimization enabled
false
Compiler version
v0.8.16+commit.07a7930e




EVM Version
default




Verified at
2022-08-23T22:41:56.596914Z

Constructor Arguments

0x60806040526000600760146101000a81548160ff0219169083151502179055506000600760156101000a81548160ff0219169083151502179055506000600760166101000a81548160ff0219169083151502179055506a0c685fa11e01ec6f0000006008556b01cbd27f7e4616d9e1e000006009556b01cbd27f7e4616d9e1e00000600a556b11f638faeebce482d2c00000600b556004600d556063600e55736d0425006c2a52100f54f65b27d2ca964e542d35600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736d0425006c2a52100f54f65b27d2ca964e542d35601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736d0425006c2a52100f54f65b27d2ca964e542d35601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180608001604052806004815260200160028152602001600181526020016001815250601260008201518160000155602082015181600101556040820151816002015560608201518160030155505060405180608001604052806004815260200160028152602001600181526020016001815250601660008201518160000155602082015181600101556040820151816002015560608201518160030155505060126003015460126002015460126001015460126000015462000263919062000ab3565b6200026f919062000ab3565b6200027b919062000ab3565b601a55601660030154601660020154601660010154601660000154620002a2919062000ab3565b620002ae919062000ab3565b620002ba919062000ab3565b601b556000601f60006101000a81548160ff021916908315150217905550603c602055348015620002ea57600080fd5b506040518060400160405280600b81526020017f5361746f736869444f47450000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5354444700000000000000000000000000000000000000000000000000000000815250816003908162000368919062000d5e565b5080600490816200037a919062000d5e565b5050506200039d620003916200086260201b60201c565b6200086a60201b60201c565b620003de33620003b26200093060201b60201c565b600b620003c0919062000fa6565b64174876e800620003d2919062000ff7565b6200093960201b60201c565b6001601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600073a4ee06ce40cb7e8c04e127c1f7d3dfb7f7039c81905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200049d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c39190620010c2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff16634ed154606040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200052b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005519190620010c2565b6040518363ffffffff1660e01b81526004016200057092919062001105565b6020604051808303816000875af115801562000590573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005b69190620010c2565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062001209565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009ab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009a290620011b9565b60405180910390fd5b620009bf6000838362000a7560201b60201c565b80600281905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a699190620011ec565b60405180910390a35050565b505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000ac08262000a7a565b915062000acd8362000a7a565b925082820190508082111562000ae85762000ae762000a84565b5b92915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b7057607f821691505b60208210810362000b865762000b8562000b28565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000bf07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000bb1565b62000bfc868362000bb1565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000c3f62000c3962000c338462000a7a565b62000c14565b62000a7a565b9050919050565b6000819050919050565b62000c5b8362000c1e565b62000c7362000c6a8262000c46565b84845462000bbe565b825550505050565b600090565b62000c8a62000c7b565b62000c9781848462000c50565b505050565b5b8181101562000cbf5762000cb360008262000c80565b60018101905062000c9d565b5050565b601f82111562000d0e5762000cd88162000b8c565b62000ce38462000ba1565b8101602085101562000cf3578190505b62000d0b62000d028562000ba1565b83018262000c9c565b50505b505050565b600082821c905092915050565b600062000d336000198460080262000d13565b1980831691505092915050565b600062000d4e838362000d20565b9150826002028217905092915050565b62000d698262000aee565b67ffffffffffffffff81111562000d855762000d8462000af9565b5b62000d91825462000b57565b62000d9e82828562000cc3565b600060209050601f83116001811462000dd6576000841562000dc1578287015190505b62000dcd858262000d40565b86555062000e3d565b601f19841662000de68662000b8c565b60005b8281101562000e105784890151825560018201915060208501945060208101905062000de9565b8683101562000e30578489015162000e2c601f89168262000d20565b8355505b6001600288020188555050505b505050505050565b60008160011c9050919050565b6000808291508390505b600185111562000ea45780860481111562000e7c5762000e7b62000a84565b5b600185161562000e8c5780820291505b808102905062000e9c8562000e45565b945062000e5c565b94509492505050565b60008262000ebf576001905062000f92565b8162000ecf576000905062000f92565b816001811462000ee8576002811462000ef35762000f29565b600191505062000f92565b60ff84111562000f085762000f0762000a84565b5b8360020a91508482111562000f225762000f2162000a84565b5b5062000f92565b5060208310610133831016604e8410600b841016171562000f635782820a90508381111562000f5d5762000f5c62000a84565b5b62000f92565b62000f72848484600162000e52565b9250905081840481111562000f8c5762000f8b62000a84565b5b81810290505b9392505050565b600060ff82169050919050565b600062000fb38262000a7a565b915062000fc08362000f99565b925062000fef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ead565b905092915050565b6000620010048262000a7a565b9150620010118362000a7a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200104d576200104c62000a84565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200108a826200105d565b9050919050565b6200109c816200107d565b8114620010a857600080fd5b50565b600081519050620010bc8162001091565b92915050565b600060208284031215620010db57620010da62001058565b5b6000620010eb84828501620010ab565b91505092915050565b620010ff816200107d565b82525050565b60006040820190506200111c6000830185620010f4565b6200112b6020830184620010f4565b9392505050565b600082825260208201905092915050565b7f45524332303a2067656e65726174696f6e20746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000620011a160258362001132565b9150620011ae8262001143565b604082019050919050565b60006020820190508181036000830152620011d48162001192565b9050919050565b620011e68162000a7a565b82525050565b6000602082019050620012036000830184620011db565b92915050565b615b4380620012196000396000f3fe6080604052600436106103395760003560e01c806375f0a874116101ab578063d2ce0db2116100f7578063f2fde38b11610095578063f887ea401161006f578063f887ea4014610bf5578063f8bba9e814610c20578063fbe6324e14610c49578063fe575a8714610c7457610340565b8063f2fde38b14610b75578063f66895a314610b9e578063f770c37914610bcc57610340565b8063e1b450ad116100d1578063e1b450ad14610acf578063e517f2b914610af8578063edaa116814610b21578063ee36e35914610b4a57610340565b8063d2ce0db214610a3c578063dc89f88c14610a67578063dd62ed3e14610a9257610340565b80639321b67611610164578063a8aa1b311161013e578063a8aa1b311461096e578063a9059cbb14610999578063aacebbe3146109d6578063c5d32bb2146109ff57610340565b80639321b676146108dd57806395d89b4114610906578063a457c2d71461093157610340565b806375f0a874146107ef5780637b46eee51461081a57806385141a77146108455780638a8c523c146108705780638da5cb5b146108875780638ea5220f146108b257610340565b8063355496ca1161028557806366a88d9611610223578063706f6937116101fd578063706f69371461074457806370a082311461076d578063715018a6146107aa578063728f8eea146107c157610340565b806366a88d96146106c357806368db925a146106ee5780636aa5b37f1461071957610340565b806342b6fa111161025f57806342b6fa111461061b5780634ada218b146106445780635b24ea5e1461066f578063652e2f041461069857610340565b8063355496ca1461058c57806339509351146105b557806340b28c2f146105f257610340565b80631675d802116102f25780631c3909e6116102cc5780631c3909e6146104d057806323b872dd146104f9578063274a533c14610536578063313ce5671461056157610340565b80631675d8021461045157806318160ddd1461047c5780631816467f146104a757610340565b806306fdde0314610345578063095ea7b3146103705780630e375a5c146103ad578063105cafb6146103d65780631340538f146103ff57806313f97a8e1461042857610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610cb1565b6040516103679190613e65565b60405180910390f35b34801561037c57600080fd5b5061039760048036038101906103929190613f2f565b610d43565b6040516103a49190613f8a565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf9190614119565b610d61565b005b3480156103e257600080fd5b506103fd60048036038101906103f89190614175565b610e72565b005b34801561040b57600080fd5b50610426600480360381019061042191906141dc565b610fb0565b005b34801561043457600080fd5b5061044f600480360381019061044a9190614119565b611049565b005b34801561045d57600080fd5b5061046661115a565b6040516104739190614218565b60405180910390f35b34801561048857600080fd5b50610491611160565b60405161049e9190614218565b60405180910390f35b3480156104b357600080fd5b506104ce60048036038101906104c99190614233565b61116a565b005b3480156104dc57600080fd5b506104f760048036038101906104f29190614233565b61122a565b005b34801561050557600080fd5b50610520600480360381019061051b9190614260565b6112ea565b60405161052d9190613f8a565b60405180910390f35b34801561054257600080fd5b5061054b6113eb565b6040516105589190614218565b60405180910390f35b34801561056d57600080fd5b506105766113f1565b60405161058391906142cf565b60405180910390f35b34801561059857600080fd5b506105b360048036038101906105ae91906142ea565b6113fa565b005b3480156105c157600080fd5b506105dc60048036038101906105d79190613f2f565b6114d1565b6040516105e99190613f8a565b60405180910390f35b3480156105fe57600080fd5b506106196004803603810190610614919061432a565b61157d565b005b34801561062757600080fd5b50610642600480360381019061063d919061436a565b61167f565b005b34801561065057600080fd5b50610659611723565b6040516106669190613f8a565b60405180910390f35b34801561067b57600080fd5b50610696600480360381019061069191906142ea565b611736565b005b3480156106a457600080fd5b506106ad61180d565b6040516106ba9190614218565b60405180910390f35b3480156106cf57600080fd5b506106d8611813565b6040516106e59190614218565b60405180910390f35b3480156106fa57600080fd5b50610703611819565b60405161071091906143a6565b60405180910390f35b34801561072557600080fd5b5061072e61183f565b60405161073b9190614218565b60405180910390f35b34801561075057600080fd5b5061076b60048036038101906107669190614484565b611845565b005b34801561077957600080fd5b50610794600480360381019061078f9190614233565b611968565b6040516107a19190614218565b60405180910390f35b3480156107b657600080fd5b506107bf6119b0565b005b3480156107cd57600080fd5b506107d6611a38565b6040516107e694939291906144fc565b60405180910390f35b3480156107fb57600080fd5b50610804611a56565b60405161081191906143a6565b60405180910390f35b34801561082657600080fd5b5061082f611a7c565b60405161083c9190614218565b60405180910390f35b34801561085157600080fd5b5061085a611a82565b60405161086791906143a6565b60405180910390f35b34801561087c57600080fd5b50610885611a88565b005b34801561089357600080fd5b5061089c611b93565b6040516108a991906143a6565b60405180910390f35b3480156108be57600080fd5b506108c7611bbd565b6040516108d491906143a6565b60405180910390f35b3480156108e957600080fd5b5061090460048036038101906108ff9190614175565b611be3565b005b34801561091257600080fd5b5061091b611d21565b6040516109289190613e65565b60405180910390f35b34801561093d57600080fd5b5061095860048036038101906109539190613f2f565b611db3565b6040516109659190613f8a565b60405180910390f35b34801561097a57600080fd5b50610983611ea7565b60405161099091906143a6565b60405180910390f35b3480156109a557600080fd5b506109c060048036038101906109bb9190613f2f565b611ecd565b6040516109cd9190613f8a565b60405180910390f35b3480156109e257600080fd5b506109fd60048036038101906109f89190614233565b611ee4565b005b348015610a0b57600080fd5b50610a266004803603810190610a219190614233565b611fa4565b604051610a339190613f8a565b60405180910390f35b348015610a4857600080fd5b50610a51611fc4565b604051610a5e9190614218565b60405180910390f35b348015610a7357600080fd5b50610a7c611fca565b604051610a899190614218565b60405180910390f35b348015610a9e57600080fd5b50610ab96004803603810190610ab4919061432a565b611fd0565b604051610ac69190614218565b60405180910390f35b348015610adb57600080fd5b50610af66004803603810190610af19190614541565b612057565b005b348015610b0457600080fd5b50610b1f6004803603810190610b1a9190614594565b61221d565b005b348015610b2d57600080fd5b50610b486004803603810190610b43919061436a565b61230e565b005b348015610b5657600080fd5b50610b5f612427565b604051610b6c9190613f8a565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b979190614233565b61243a565b005b348015610baa57600080fd5b50610bb3612531565b604051610bc394939291906144fc565b60405180910390f35b348015610bd857600080fd5b50610bf36004803603810190610bee9190613f2f565b61254f565b005b348015610c0157600080fd5b50610c0a612655565b604051610c179190614633565b60405180910390f35b348015610c2c57600080fd5b50610c476004803603810190610c42919061436a565b61267b565b005b348015610c5557600080fd5b50610c5e612748565b604051610c6b9190613f8a565b60405180910390f35b348015610c8057600080fd5b50610c9b6004803603810190610c969190614233565b61275b565b604051610ca89190613f8a565b60405180910390f35b606060038054610cc09061467d565b80601f0160208091040260200160405190810160405280929190818152602001828054610cec9061467d565b8015610d395780601f10610d0e57610100808354040283529160200191610d39565b820191906000526020600020905b815481529060010190602001808311610d1c57829003601f168201915b5050505050905090565b6000610d57610d5061277b565b8484612783565b6001905092915050565b610d6961277b565b73ffffffffffffffffffffffffffffffffffffffff16610d87611b93565b73ffffffffffffffffffffffffffffffffffffffff1614610ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd4906146fa565b60405180910390fd5b60005b8251811015610e6d5781601c6000858481518110610e0157610e0061471a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e6590614778565b915050610de0565b505050565b610e7a61277b565b73ffffffffffffffffffffffffffffffffffffffff16610e98611b93565b73ffffffffffffffffffffffffffffffffffffffff1614610eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee5906146fa565b60405180910390fd5b80828486610efc91906147c0565b610f0691906147c0565b610f1091906147c0565b601b81905550601e601b541115610f5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5390614840565b60405180910390fd5b60405180608001604052808581526020018481526020018381526020018281525060166000820151816000015560208201518160010155604082015181600201556060820151816003015590505050505050565b610fb861277b565b73ffffffffffffffffffffffffffffffffffffffff16610fd6611b93565b73ffffffffffffffffffffffffffffffffffffffff161461102c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611023906146fa565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b61105161277b565b73ffffffffffffffffffffffffffffffffffffffff1661106f611b93565b73ffffffffffffffffffffffffffffffffffffffff16146110c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bc906146fa565b60405180910390fd5b60005b82518110156111555781601d60008584815181106110e9576110e861471a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061114d90614778565b9150506110c8565b505050565b60085481565b6000600254905090565b61117261277b565b73ffffffffffffffffffffffffffffffffffffffff16611190611b93565b73ffffffffffffffffffffffffffffffffffffffff16146111e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111dd906146fa565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61123261277b565b73ffffffffffffffffffffffffffffffffffffffff16611250611b93565b73ffffffffffffffffffffffffffffffffffffffff16146112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d906146fa565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006112f784848461294c565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061134261277b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156113c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b9906148d2565b60405180910390fd5b6113df856113ce61277b565b85846113da91906148f2565b612783565b60019150509392505050565b600c5481565b60006012905090565b61140261277b565b73ffffffffffffffffffffffffffffffffffffffff16611420611b93565b73ffffffffffffffffffffffffffffffffffffffff1614611476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146d906146fa565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006115736114de61277b565b8484600160006114ec61277b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461156e91906147c0565b612783565b6001905092915050565b61158561277b565b73ffffffffffffffffffffffffffffffffffffffff166115a3611b93565b73ffffffffffffffffffffffffffffffffffffffff16146115f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f0906146fa565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61168761277b565b73ffffffffffffffffffffffffffffffffffffffff166116a5611b93565b73ffffffffffffffffffffffffffffffffffffffff16146116fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f2906146fa565b60405180910390fd5b6117036113f1565b600a61170f9190614a59565b8161171a9190614aa4565b60088190555050565b600760169054906101000a900460ff1681565b61173e61277b565b73ffffffffffffffffffffffffffffffffffffffff1661175c611b93565b73ffffffffffffffffffffffffffffffffffffffff16146117b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a9906146fa565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a5481565b600b5481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b61184d61277b565b73ffffffffffffffffffffffffffffffffffffffff1661186b611b93565b73ffffffffffffffffffffffffffffffffffffffff16146118c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b8906146fa565b60405180910390fd5b8051825114611905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fc90614b4a565b60405180910390fd5b60005b825181101561196357611950338483815181106119285761192761471a565b5b60200260200101518484815181106119435761194261471a565b5b60200260200101516133b9565b808061195b90614778565b915050611908565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6119b861277b565b73ffffffffffffffffffffffffffffffffffffffff166119d6611b93565b73ffffffffffffffffffffffffffffffffffffffff1614611a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a23906146fa565b60405180910390fd5b611a366000613636565b565b60128060000154908060010154908060020154908060030154905084565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a5481565b61dead81565b611a9061277b565b73ffffffffffffffffffffffffffffffffffffffff16611aae611b93565b73ffffffffffffffffffffffffffffffffffffffff1614611b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afb906146fa565b60405180910390fd5b600760169054906101000a900460ff1615611b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4b90614bb6565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600c81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611beb61277b565b73ffffffffffffffffffffffffffffffffffffffff16611c09611b93565b73ffffffffffffffffffffffffffffffffffffffff1614611c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c56906146fa565b60405180910390fd5b80828486611c6d91906147c0565b611c7791906147c0565b611c8191906147c0565b601a81905550600f601a541115611ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc490614c22565b60405180910390fd5b60405180608001604052808581526020018481526020018381526020018281525060126000820151816000015560208201518160010155604082015181600201556060820151816003015590505050505050565b606060048054611d309061467d565b80601f0160208091040260200160405190810160405280929190818152602001828054611d5c9061467d565b8015611da95780601f10611d7e57610100808354040283529160200191611da9565b820191906000526020600020905b815481529060010190602001808311611d8c57829003601f168201915b5050505050905090565b60008060016000611dc261277b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7690614cb4565b60405180910390fd5b611e9c611e8a61277b565b858584611e9791906148f2565b612783565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611eda33848461294c565b6001905092915050565b611eec61277b565b73ffffffffffffffffffffffffffffffffffffffff16611f0a611b93565b73ffffffffffffffffffffffffffffffffffffffff1614611f60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f57906146fa565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c6020528060005260406000206000915054906101000a900460ff1681565b60205481565b601b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61205f61277b565b73ffffffffffffffffffffffffffffffffffffffff1661207d611b93565b73ffffffffffffffffffffffffffffffffffffffff16146120d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ca906146fa565b60405180910390fd5b632122393883101561211a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211190614d46565b60405180910390fd5b6321223938821015612161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215890614dd8565b60405180910390fd5b64014b563c308110156121a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a090614e6a565b60405180910390fd5b6121b16113f1565b600a6121bd9190614a59565b836121c89190614aa4565b6009819055506121d66113f1565b600a6121e29190614a59565b826121ed9190614aa4565b600a819055506121fb6113f1565b600a6122079190614a59565b816122129190614aa4565b600b81905550505050565b61222561277b565b73ffffffffffffffffffffffffffffffffffffffff16612243611b93565b73ffffffffffffffffffffffffffffffffffffffff1614612299576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612290906146fa565b60405180910390fd5b6001816122a69190614aa4565b60208190555081601f60006101000a81548160ff021916908315150217905550603c81111561230a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230190614efc565b60405180910390fd5b5050565b61231661277b565b73ffffffffffffffffffffffffffffffffffffffff16612334611b93565b73ffffffffffffffffffffffffffffffffffffffff161461238a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612381906146fa565b60405180910390fd5b600760169054906101000a900460ff16156123da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d190614f8e565b60405180910390fd5b6005811061241d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241490614ffa565b60405180910390fd5b80600d8190555050565b601f60009054906101000a900460ff1681565b61244261277b565b73ffffffffffffffffffffffffffffffffffffffff16612460611b93565b73ffffffffffffffffffffffffffffffffffffffff16146124b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ad906146fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251c9061508c565b60405180910390fd5b61252e81613636565b50565b60168060000154908060010154908060020154908060030154905084565b61255761277b565b73ffffffffffffffffffffffffffffffffffffffff16612575611b93565b73ffffffffffffffffffffffffffffffffffffffff16146125cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c2906146fa565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6125ef611b93565b836040518363ffffffff1660e01b815260040161260d9291906150ac565b6020604051808303816000875af115801561262c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265091906150ea565b505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61268361277b565b73ffffffffffffffffffffffffffffffffffffffff166126a1611b93565b73ffffffffffffffffffffffffffffffffffffffff16146126f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ee906146fa565b60405180910390fd5b6126ff611b93565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612744573d6000803e3d6000fd5b5050565b600760159054906101000a900460ff1681565b601d6020528060005260406000206000915054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e990615189565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612861576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128589061521b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161293f9190614218565b60405180910390a3505050565b6000811161298f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612986906152ad565b60405180910390fd5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612a335750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6990615319565b60405180910390fd5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b165750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b6b57600760169054906101000a900460ff16612b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6190615385565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612c125750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c2b5750600760149054906101000a900460ff16155b15612cce57600954811115612c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6c906153f1565b60405180910390fd5b600b5481612c8284611968565b612c8c91906147c0565b1115612ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc49061545d565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612d765750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612dcc5750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612de55750600760149054906101000a900460ff16155b15612fcd57600a54811115612e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e26906154c9565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612edd57600b5481612e9184611968565b612e9b91906147c0565b1115612edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed39061545d565b60405180910390fd5b5b601f60009054906101000a900460ff1615612fcc576000601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442612f3f91906148f2565b9050602054811015612f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7d90615535565b60405180910390fd5b42601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b5b6000806000612fda613dad565b6000601c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130805750601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561309a5750600d54600c5461309791906147c0565b43105b9050600760149054906101000a900460ff16806131005750601c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806131545750601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561316257600092506132c9565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161480156131bd575080155b15613239576016600301546016600101546016600001546016600201546131e491906147c0565b6131ee91906147c0565b6131f891906147c0565b9450849350601660405180608001604052908160008201548152602001600182015481526020016002820154815260200160038201548152505091506132c8565b806132b55760126003015460126001015460126000015460126002015461326091906147c0565b61326a91906147c0565b61327491906147c0565b9450849350601260405180608001604052908160008201548152602001600182015481526020016002820154815260200160038201548152505091506132c7565b80156132c657600e549450600e5493505b5b5b5b606484876132d79190614aa4565b6132e19190615584565b9250600760159054906101000a900460ff16801561334d5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b1561335d5761335c85836136fc565b5b6133738888858961336e91906148f2565b6133b9565b60008311156133af5760008511156133ae576000606486886133959190614aa4565b61339f9190615584565b90506133ac8930836133b9565b505b5b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161341f90615627565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161348e906156b9565b60405180910390fd5b6134a283838361398c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161351f9061574b565b60405180910390fd5b818161353491906148f2565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546135c491906147c0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516136289190614218565b60405180910390a350505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16613988576001600760146101000a81548160ff021916908315150217905550600082031561396c57600061373f30611968565b9050600854811061396a576001600854111561375b5760085490505b600060028461376a9190614aa4565b905060008184604001518461377f9190614aa4565b6137899190615584565b90506000818461379991906148f2565b905060004790506137a982613991565b600081476137b791906148f2565b905060008760400151866137cb91906148f2565b826137d69190615584565b905060008860400151826137ea9190614aa4565b90506000811115613800576137ff8682613bd4565b5b600089600001516002846138149190614aa4565b61381e9190614aa4565b905060008111156138755761387481600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613cb990919063ffffffff16565b5b60008a602001516002856138899190614aa4565b6138939190614aa4565b905060008111156138ea576138e981601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613cb990919063ffffffff16565b5b60008b606001516002866138fe9190614aa4565b6139089190614aa4565b9050600081111561395f5761395e81601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613cb990919063ffffffff16565b5b505050505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b505050565b6000600267ffffffffffffffff8111156139ae576139ad613faa565b5b6040519080825280602002602001820160405280156139dc5781602001602082028036833780820191505090505b50905030816000815181106139f4576139f361471a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634ed154606040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613abf9190615780565b81600181518110613ad357613ad261471a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613b3a30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612783565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b43d9bbb8360008430426040518663ffffffff1660e01b8152600401613b9e9594939291906158a6565b600060405180830381600087803b158015613bb857600080fd5b505af1158015613bcc573d6000803e3d6000fd5b505050505050565b613c0130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612783565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6529ab4823085600080613c4d611b93565b426040518863ffffffff1660e01b8152600401613c6f96959493929190615900565b60606040518083038185885af1158015613c8d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613cb29190615976565b5050505050565b80471015613cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cf390615a15565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051613d2290615a66565b60006040518083038185875af1925050503d8060008114613d5f576040519150601f19603f3d011682016040523d82523d6000602084013e613d64565b606091505b5050905080613da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d9f90615aed565b60405180910390fd5b505050565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613e0f578082015181840152602081019050613df4565b60008484015250505050565b6000601f19601f8301169050919050565b6000613e3782613dd5565b613e418185613de0565b9350613e51818560208601613df1565b613e5a81613e1b565b840191505092915050565b60006020820190508181036000830152613e7f8184613e2c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613ec682613e9b565b9050919050565b613ed681613ebb565b8114613ee157600080fd5b50565b600081359050613ef381613ecd565b92915050565b6000819050919050565b613f0c81613ef9565b8114613f1757600080fd5b50565b600081359050613f2981613f03565b92915050565b60008060408385031215613f4657613f45613e91565b5b6000613f5485828601613ee4565b9250506020613f6585828601613f1a565b9150509250929050565b60008115159050919050565b613f8481613f6f565b82525050565b6000602082019050613f9f6000830184613f7b565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613fe282613e1b565b810181811067ffffffffffffffff8211171561400157614000613faa565b5b80604052505050565b6000614014613e87565b90506140208282613fd9565b919050565b600067ffffffffffffffff8211156140405761403f613faa565b5b602082029050602081019050919050565b600080fd5b600061406961406484614025565b61400a565b9050808382526020820190506020840283018581111561408c5761408b614051565b5b835b818110156140b557806140a18882613ee4565b84526020840193505060208101905061408e565b5050509392505050565b600082601f8301126140d4576140d3613fa5565b5b81356140e4848260208601614056565b91505092915050565b6140f681613f6f565b811461410157600080fd5b50565b600081359050614113816140ed565b92915050565b600080604083850312156141305761412f613e91565b5b600083013567ffffffffffffffff81111561414e5761414d613e96565b5b61415a858286016140bf565b925050602061416b85828601614104565b9150509250929050565b6000806000806080858703121561418f5761418e613e91565b5b600061419d87828801613f1a565b94505060206141ae87828801613f1a565b93505060406141bf87828801613f1a565b92505060606141d087828801613f1a565b91505092959194509250565b6000602082840312156141f2576141f1613e91565b5b600061420084828501614104565b91505092915050565b61421281613ef9565b82525050565b600060208201905061422d6000830184614209565b92915050565b60006020828403121561424957614248613e91565b5b600061425784828501613ee4565b91505092915050565b60008060006060848603121561427957614278613e91565b5b600061428786828701613ee4565b935050602061429886828701613ee4565b92505060406142a986828701613f1a565b9150509250925092565b600060ff82169050919050565b6142c9816142b3565b82525050565b60006020820190506142e460008301846142c0565b92915050565b6000806040838503121561430157614300613e91565b5b600061430f85828601613ee4565b925050602061432085828601614104565b9150509250929050565b6000806040838503121561434157614340613e91565b5b600061434f85828601613ee4565b925050602061436085828601613ee4565b9150509250929050565b6000602082840312156143805761437f613e91565b5b600061438e84828501613f1a565b91505092915050565b6143a081613ebb565b82525050565b60006020820190506143bb6000830184614397565b92915050565b600067ffffffffffffffff8211156143dc576143db613faa565b5b602082029050602081019050919050565b60006144006143fb846143c1565b61400a565b9050808382526020820190506020840283018581111561442357614422614051565b5b835b8181101561444c57806144388882613f1a565b845260208401935050602081019050614425565b5050509392505050565b600082601f83011261446b5761446a613fa5565b5b813561447b8482602086016143ed565b91505092915050565b6000806040838503121561449b5761449a613e91565b5b600083013567ffffffffffffffff8111156144b9576144b8613e96565b5b6144c5858286016140bf565b925050602083013567ffffffffffffffff8111156144e6576144e5613e96565b5b6144f285828601614456565b9150509250929050565b60006080820190506145116000830187614209565b61451e6020830186614209565b61452b6040830185614209565b6145386060830184614209565b95945050505050565b60008060006060848603121561455a57614559613e91565b5b600061456886828701613f1a565b935050602061457986828701613f1a565b925050604061458a86828701613f1a565b9150509250925092565b600080604083850312156145ab576145aa613e91565b5b60006145b985828601614104565b92505060206145ca85828601613f1a565b9150509250929050565b6000819050919050565b60006145f96145f46145ef84613e9b565b6145d4565b613e9b565b9050919050565b600061460b826145de565b9050919050565b600061461d82614600565b9050919050565b61462d81614612565b82525050565b60006020820190506146486000830184614624565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061469557607f821691505b6020821081036146a8576146a761464e565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146e4602083613de0565b91506146ef826146ae565b602082019050919050565b60006020820190508181036000830152614713816146d7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061478382613ef9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036147b5576147b4614749565b5b600182019050919050565b60006147cb82613ef9565b91506147d683613ef9565b92508282019050808211156147ee576147ed614749565b5b92915050565b7f4d757374206b656570206665657320617420333025206f72206c657373000000600082015250565b600061482a601d83613de0565b9150614835826147f4565b602082019050919050565b600060208201905081810360008301526148598161481d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006148bc602883613de0565b91506148c782614860565b604082019050919050565b600060208201905081810360008301526148eb816148af565b9050919050565b60006148fd82613ef9565b915061490883613ef9565b92508282039050818111156149205761491f614749565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111561497d5780860481111561495957614958614749565b5b60018516156149685780820291505b808102905061497685614926565b945061493d565b94509492505050565b6000826149965760019050614a52565b816149a45760009050614a52565b81600181146149ba57600281146149c4576149f3565b6001915050614a52565b60ff8411156149d6576149d5614749565b5b8360020a9150848211156149ed576149ec614749565b5b50614a52565b5060208310610133831016604e8410600b8410161715614a285782820a905083811115614a2357614a22614749565b5b614a52565b614a358484846001614933565b92509050818404811115614a4c57614a4b614749565b5b81810290505b9392505050565b6000614a6482613ef9565b9150614a6f836142b3565b9250614a9c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614986565b905092915050565b6000614aaf82613ef9565b9150614aba83613ef9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614af357614af2614749565b5b828202905092915050565b7f417272617973206d75737420686176652073616d652073697a65000000000000600082015250565b6000614b34601a83613de0565b9150614b3f82614afe565b602082019050919050565b60006020820190508181036000830152614b6381614b27565b9050919050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b6000614ba0601a83613de0565b9150614bab82614b6a565b602082019050919050565b60006020820190508181036000830152614bcf81614b93565b9050919050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b6000614c0c601d83613de0565b9150614c1782614bd6565b602082019050919050565b60006020820190508181036000830152614c3b81614bff565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614c9e602583613de0565b9150614ca982614c42565b604082019050919050565b60006020820190508181036000830152614ccd81614c91565b9050919050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614d30602983613de0565b9150614d3b82614cd4565b604082019050919050565b60006020820190508181036000830152614d5f81614d23565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b6000614dc2602a83613de0565b9150614dcd82614d66565b604082019050919050565b60006020820190508181036000830152614df181614db5565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e31250000000000000000000000000000000000000000602082015250565b6000614e54602c83613de0565b9150614e5f82614df8565b604082019050919050565b60006020820190508181036000830152614e8381614e47565b9050919050565b7f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642031206d60008201527f696e757465730000000000000000000000000000000000000000000000000000602082015250565b6000614ee6602683613de0565b9150614ef182614e8a565b604082019050919050565b60006020820190508181036000830152614f1581614ed9565b9050919050565b7f43616e2774206368616e6765207768656e2074726164696e672068617320737460008201527f6172746564000000000000000000000000000000000000000000000000000000602082015250565b6000614f78602583613de0565b9150614f8382614f1c565b604082019050919050565b60006020820190508181036000830152614fa781614f6b565b9050919050565b7f446561646c696e652073686f756c64206265206c657373207468616e20350000600082015250565b6000614fe4601e83613de0565b9150614fef82614fae565b602082019050919050565b6000602082019050818103600083015261501381614fd7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615076602683613de0565b91506150818261501a565b604082019050919050565b600060208201905081810360008301526150a581615069565b9050919050565b60006040820190506150c16000830185614397565b6150ce6020830184614209565b9392505050565b6000815190506150e4816140ed565b92915050565b600060208284031215615100576150ff613e91565b5b600061510e848285016150d5565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615173602483613de0565b915061517e82615117565b604082019050919050565b600060208201905081810360008301526151a281615166565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615205602283613de0565b9150615210826151a9565b604082019050919050565b60006020820190508181036000830152615234816151f8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000615297602983613de0565b91506152a28261523b565b604082019050919050565b600060208201905081810360008301526152c68161528a565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b6000615303601983613de0565b915061530e826152cd565b602082019050919050565b60006020820190508181036000830152615332816152f6565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b600061536f601383613de0565b915061537a82615339565b602082019050919050565b6000602082019050818103600083015261539e81615362565b9050919050565b7f596f752061726520657863656564696e67206d61784275794c696d6974000000600082015250565b60006153db601d83613de0565b91506153e6826153a5565b602082019050919050565b6000602082019050818103600083015261540a816153ce565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d6974600082015250565b6000615447602083613de0565b915061545282615411565b602082019050919050565b600060208201905081810360008301526154768161543a565b9050919050565b7f596f752061726520657863656564696e67206d617853656c6c4c696d69740000600082015250565b60006154b3601e83613de0565b91506154be8261547d565b602082019050919050565b600060208201905081810360008301526154e2816154a6565b9050919050565b7f436f6f6c646f776e20656e61626c656400000000000000000000000000000000600082015250565b600061551f601083613de0565b915061552a826154e9565b602082019050919050565b6000602082019050818103600083015261554e81615512565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061558f82613ef9565b915061559a83613ef9565b9250826155aa576155a9615555565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000615611602583613de0565b915061561c826155b5565b604082019050919050565b6000602082019050818103600083015261564081615604565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006156a3602383613de0565b91506156ae82615647565b604082019050919050565b600060208201905081810360008301526156d281615696565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615735602683613de0565b9150615740826156d9565b604082019050919050565b6000602082019050818103600083015261576481615728565b9050919050565b60008151905061577a81613ecd565b92915050565b60006020828403121561579657615795613e91565b5b60006157a48482850161576b565b91505092915050565b6000819050919050565b60006157d26157cd6157c8846157ad565b6145d4565b613ef9565b9050919050565b6157e2816157b7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61581d81613ebb565b82525050565b600061582f8383615814565b60208301905092915050565b6000602082019050919050565b6000615853826157e8565b61585d81856157f3565b935061586883615804565b8060005b838110156158995781516158808882615823565b975061588b8361583b565b92505060018101905061586c565b5085935050505092915050565b600060a0820190506158bb6000830188614209565b6158c860208301876157d9565b81810360408301526158da8186615848565b90506158e96060830185614397565b6158f66080830184614209565b9695505050505050565b600060c0820190506159156000830189614397565b6159226020830188614209565b61592f60408301876157d9565b61593c60608301866157d9565b6159496080830185614397565b61595660a0830184614209565b979650505050505050565b60008151905061597081613f03565b92915050565b60008060006060848603121561598f5761598e613e91565b5b600061599d86828701615961565b93505060206159ae86828701615961565b92505060406159bf86828701615961565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006159ff601d83613de0565b9150615a0a826159c9565b602082019050919050565b60006020820190508181036000830152615a2e816159f2565b9050919050565b600081905092915050565b50565b6000615a50600083615a35565b9150615a5b82615a40565b600082019050919050565b6000615a7182615a43565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000615ad7603a83613de0565b9150615ae282615a7b565b604082019050919050565b60006020820190508181036000830152615b0681615aca565b905091905056fea264697066735822122001e2b4bd3e8ec6d81bb9a44ebc8c506ba0f6dd213172420a4a11ef5b9688d0ce64736f6c63430008100033
              

Contract source code

// File: Test.sol
//Twitter: https://twitter.com/SatoDoge
//TG: https://t.co/E34JDOE2zA
//SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.16;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;

    mapping(address => mapping(address => uint256)) internal _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     */
    function _tokengeneration(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: generation to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = amount;
        _balances[account] = amount;
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * generation and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be generated for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library Address {
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);

    function WWDOGE() external pure returns (address);

    function addLiquidityWDOGE(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountWDOGEMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountWDOGE,
            uint256 liquidity
        );

    function swapExactTokensForWDOGESupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

    contract SatoshiDOGE is ERC20, Ownable {
    using Address for address payable;

    IRouter public router;
    address public pair;

    bool private _liquidityMutex = false;
    bool public providingLiquidity = false;
    bool public tradingEnabled = false;

    uint256 public tokenLiquidityThreshold = 15_000_000 * 10**18;
    uint256 public maxBuyLimit = 555_891_000 * 10**18;
    uint256 public maxSellLimit = 555_891_000 * 10**18;
    uint256 public maxWalletLimit = 5_558_910_000 * 10**18;

    uint256 public genesis_block;
    uint256 private deadline = 4;
    uint256 private launchtax = 99;

    address public marketingWallet = 0x6d0425006C2a52100f54f65b27d2CA964e542d35;
    address public devWallet = 0x6d0425006C2a52100f54f65b27d2CA964e542d35;
    address public opsWallet = 0x6d0425006C2a52100f54f65b27d2CA964e542d35;
	address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 marketing;
        uint256 ops;
        uint256 liquidity;
        uint256 dev;        
    }

    Taxes public taxes = Taxes(4, 2, 1, 1);
    Taxes public sellTaxes = Taxes(4, 2, 1, 1);

    uint256 public TotalBuyFee = taxes.marketing + taxes.ops + taxes.liquidity + taxes.dev;
    uint256 public TotalSellFee = sellTaxes.marketing + sellTaxes.ops + sellTaxes.liquidity + sellTaxes.dev;

    mapping(address => bool) public exemptFee;
    mapping(address => bool) public isBlacklisted;

    //Anti Dump
    mapping(address => uint256) private _lastSell;
    bool public coolDownEnabled = false;
    uint256 public coolDownTime = 60 seconds;

    modifier mutexLock() {
        if (!_liquidityMutex) {
            _liquidityMutex = true;
            _;
            _liquidityMutex = false;
        }
    }

    constructor() ERC20("SatoshiDOGE", "STDG") {
        _tokengeneration(msg.sender, 1e11 * 11**decimals());
        exemptFee[msg.sender] = true;

        IRouter _router = IRouter(0xa4EE06Ce40cb7e8c04E127c1F7D3dFB7F7039C81);
        // Create a pair for this new token
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WWDOGE());

        router = _router;
        pair = _pair;
        exemptFee[address(this)] = true;
        exemptFee[marketingWallet] = true;
        exemptFee[opsWallet] = true;
        exemptFee[devWallet] = true;
        exemptFee[deadWallet] = true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        override
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        require(
            !isBlacklisted[sender] && !isBlacklisted[recipient],
            "You can't transfer tokens"
        );

        if (!exemptFee[sender] && !exemptFee[recipient]) {
            require(tradingEnabled, "Trading not enabled");
        }

        if (sender == pair && !exemptFee[recipient] && !_liquidityMutex) {
            require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit");
            require(
                balanceOf(recipient) + amount <= maxWalletLimit,
                "You are exceeding maxWalletLimit"
            );
        }

        if (
            sender != pair && !exemptFee[recipient] && !exemptFee[sender] && !_liquidityMutex
        ) {
            require(amount <= maxSellLimit, "You are exceeding maxSellLimit");
            if (recipient != pair) {
                require(
                    balanceOf(recipient) + amount <= maxWalletLimit,
                    "You are exceeding maxWalletLimit"
                );
            }
            if (coolDownEnabled) {
                uint256 timePassed = block.timestamp - _lastSell[sender];
                require(timePassed >= coolDownTime, "Cooldown enabled");
                _lastSell[sender] = block.timestamp;
            }
        }

        uint256 feeswap;
        uint256 feesum;
        uint256 fee;
        Taxes memory currentTaxes;

        bool useLaunchFee = !exemptFee[sender] &&
            !exemptFee[recipient] &&
            block.number < genesis_block + deadline;

        //set fee to zero if fees in contract are handled or exempted
        if (_liquidityMutex || exemptFee[sender] || exemptFee[recipient])
            fee = 0;

            //calculate fee
        else if (recipient == pair && !useLaunchFee) {
            feeswap =
                sellTaxes.liquidity +
                sellTaxes.marketing +           
                sellTaxes.ops +
                sellTaxes.dev ;
            feesum = feeswap;
            currentTaxes = sellTaxes;
        } else if (!useLaunchFee) {
            feeswap =
                taxes.liquidity +
                taxes.marketing +
                taxes.ops +
                taxes.dev ;
            feesum = feeswap;
            currentTaxes = taxes;
        } else if (useLaunchFee) {
            feeswap = launchtax;
            feesum = launchtax;
        }

        fee = (amount * feesum) / 100;

        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (providingLiquidity && sender != pair) handle_fees(feeswap, currentTaxes);

        //rest to recipient
        super._transfer(sender, recipient, amount - fee);
        if (fee > 0) {
            //send the fee to the contract
            if (feeswap > 0) {
                uint256 feeAmount = (amount * feeswap) / 100;
                super._transfer(sender, address(this), feeAmount);
            }

        }
    }

    function handle_fees(uint256 feeswap, Taxes memory swapTaxes) private mutexLock {

        if(feeswap == 0){
            return;
        }	

        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= tokenLiquidityThreshold) {
            if (tokenLiquidityThreshold > 1) {
                contractBalance = tokenLiquidityThreshold;
            }

            // Split the contract balance into halves
            uint256 denominator = feeswap * 2;
            uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) /
                denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

            uint256 initialBalance = address(this).balance;

            swapTokensForWDOGE(toSwap);

            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity);
            uint256 dogeToAddLiquidityWith = unitBalance * swapTaxes.liquidity;

            if (dogeToAddLiquidityWith > 0) {
                // Add liquidity
                addLiquidity(tokensToAddLiquidityWith, dogeToAddLiquidityWith);
            }

            uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing;
            if (marketingAmt > 0) {
                payable(marketingWallet).sendValue(marketingAmt);
            }

            uint256 opsAmt = unitBalance * 2 * swapTaxes.ops;
            if (opsAmt > 0) {
                payable(opsWallet).sendValue(opsAmt);
            }

            uint256 devAmt = unitBalance * 2 * swapTaxes.dev;
            if (devAmt > 0) {
                payable(devWallet).sendValue(devAmt);
            }

        }
    }

    function swapTokensForWDOGE(uint256 tokenAmount) private {
        // generate the  pair path of token -> WDOGE
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WWDOGE();

        _approve(address(this), address(router), tokenAmount);

        // make the swap
        router.swapExactTokensForWDOGESupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 wdogeAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityWDOGE{ value: wdogeAmount }(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function updateLiquidityProvide(bool state) external onlyOwner {
        //update liquidity providing state
        providingLiquidity = state;
    }

    function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner {
        //update the treshhold
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }

        function UpdateBuyTaxes(
        uint256 _marketing,
        uint256 _ops,
        uint256 _liquidity,
        uint256 _dev
    ) external onlyOwner {
        TotalBuyFee = _marketing + _ops + _liquidity + _dev;
        require((TotalBuyFee) <= 15, "Must keep fees at 15% or less");
        taxes = Taxes(_marketing,_ops,_liquidity, _dev);
    }

    function SetSellTaxes(
        uint256 _marketing,
        uint256 _ops,
        uint256 _liquidity,
        uint256 _dev
    ) external onlyOwner {
        TotalSellFee = _marketing + _ops + _liquidity + _dev;
        require((TotalSellFee) <= 30, "Must keep fees at 30% or less");
        sellTaxes = Taxes(_marketing,_ops,_liquidity, _dev);
    }

    function updateRouterAndPair(address newRouter, address newPair) external onlyOwner {
        router = IRouter(newRouter);
        pair = newPair;
    }

   function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Trading is already enabled");
        tradingEnabled = true;
        providingLiquidity = true;
        genesis_block = block.number;
    }

    function updatedeadline(uint256 _deadline) external onlyOwner {
        require(!tradingEnabled, "Can't change when trading has started");
        require (_deadline < 5,"Deadline should be less than 5");
        deadline = _deadline;
    }

    function updateMarketingWallet(address newWallet) external onlyOwner {
        marketingWallet = newWallet;
    }

    function updateOpsWallet(address newWallet) external onlyOwner {
        opsWallet = newWallet;
    }

    function updateDevWallet(address newWallet) external onlyOwner{
        devWallet = newWallet;
    }

    function airdropTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner{
        require(accounts.length == amounts.length, "Arrays must have same size");
        for(uint256 i; i< accounts.length; i++){
            super._transfer(msg.sender, accounts[i], amounts[i]);
        }
    }

    function updateCooldown(bool state, uint256 time) external onlyOwner {
        coolDownTime = time * 1 seconds;
        coolDownEnabled = state;
        require(time <= 60, "cooldown timer cannot exceed 1 minutes");
    }

    function updateIsBlacklisted(address account, bool state) external onlyOwner {
        isBlacklisted[account] = state;
    }

    function bulkIsBlacklisted(address[] memory accounts, bool state) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            isBlacklisted[accounts[i]] = state;
        }
    }

    function updateExemptFee(address _address, bool state) external onlyOwner {
        exemptFee[_address] = state;
    }

    function bulkExemptFee(address[] memory accounts, bool state) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            exemptFee[accounts[i]] = state;
        }
    }

    function updateMaxTxLimit(uint256 maxBuy, uint256 maxSell, uint256 maxWallet) external onlyOwner {
        require(maxBuy >= 555_891_000, "Cannot set max buy amount lower than 0.1%");
        require(maxSell >= 555_891_000, "Cannot set max sell amount lower than 0.1%");
        require(maxWallet >= 5_558_910_000, "Cannot set max wallet amount lower than 0.1%");
        maxBuyLimit = maxBuy * 10**decimals();
        maxSellLimit = maxSell * 10**decimals();
        maxWalletLimit = maxWallet * 10**decimals(); 
    }

    function rescueDOGE(uint256 weiAmount) external onlyOwner {
        payable(owner()).transfer(weiAmount);
    }

    function rescueDOGETOKENS(address tokenAdd, uint256 amount) external onlyOwner {
        IERC20(tokenAdd).transfer(owner(), amount);
    }

    // fallbacks
    receive() external payable {}
}
        

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"SetSellTaxes","inputs":[{"type":"uint256","name":"_marketing","internalType":"uint256"},{"type":"uint256","name":"_ops","internalType":"uint256"},{"type":"uint256","name":"_liquidity","internalType":"uint256"},{"type":"uint256","name":"_dev","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"TotalBuyFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"TotalSellFee","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"UpdateBuyTaxes","inputs":[{"type":"uint256","name":"_marketing","internalType":"uint256"},{"type":"uint256","name":"_ops","internalType":"uint256"},{"type":"uint256","name":"_liquidity","internalType":"uint256"},{"type":"uint256","name":"_dev","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"airdropTokens","inputs":[{"type":"address[]","name":"accounts","internalType":"address[]"},{"type":"uint256[]","name":"amounts","internalType":"uint256[]"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"bulkExemptFee","inputs":[{"type":"address[]","name":"accounts","internalType":"address[]"},{"type":"bool","name":"state","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"bulkIsBlacklisted","inputs":[{"type":"address[]","name":"accounts","internalType":"address[]"},{"type":"bool","name":"state","internalType":"bool"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"coolDownEnabled","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"coolDownTime","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"deadWallet","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"decreaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"subtractedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"devWallet","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"enableTrading","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"exemptFee","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"genesis_block","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"increaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"addedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isBlacklisted","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"marketingWallet","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"maxBuyLimit","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"maxSellLimit","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"maxWalletLimit","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"opsWallet","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"pair","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"providingLiquidity","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"rescueDOGE","inputs":[{"type":"uint256","name":"weiAmount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"rescueDOGETOKENS","inputs":[{"type":"address","name":"tokenAdd","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IRouter"}],"name":"router","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"marketing","internalType":"uint256"},{"type":"uint256","name":"ops","internalType":"uint256"},{"type":"uint256","name":"liquidity","internalType":"uint256"},{"type":"uint256","name":"dev","internalType":"uint256"}],"name":"sellTaxes","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"marketing","internalType":"uint256"},{"type":"uint256","name":"ops","internalType":"uint256"},{"type":"uint256","name":"liquidity","internalType":"uint256"},{"type":"uint256","name":"dev","internalType":"uint256"}],"name":"taxes","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"tokenLiquidityThreshold","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"tradingEnabled","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateCooldown","inputs":[{"type":"bool","name":"state","internalType":"bool"},{"type":"uint256","name":"time","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateDevWallet","inputs":[{"type":"address","name":"newWallet","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateExemptFee","inputs":[{"type":"address","name":"_address","internalType":"address"},{"type":"bool","name":"state","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateIsBlacklisted","inputs":[{"type":"address","name":"account","internalType":"address"},{"type":"bool","name":"state","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateLiquidityProvide","inputs":[{"type":"bool","name":"state","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateLiquidityTreshhold","inputs":[{"type":"uint256","name":"new_amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateMarketingWallet","inputs":[{"type":"address","name":"newWallet","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateMaxTxLimit","inputs":[{"type":"uint256","name":"maxBuy","internalType":"uint256"},{"type":"uint256","name":"maxSell","internalType":"uint256"},{"type":"uint256","name":"maxWallet","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateOpsWallet","inputs":[{"type":"address","name":"newWallet","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateRouterAndPair","inputs":[{"type":"address","name":"newRouter","internalType":"address"},{"type":"address","name":"newPair","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updatedeadline","inputs":[{"type":"uint256","name":"_deadline","internalType":"uint256"}]},{"type":"receive","stateMutability":"payable"}]
            

Contract Creation Code

0x60806040526000600760146101000a81548160ff0219169083151502179055506000600760156101000a81548160ff0219169083151502179055506000600760166101000a81548160ff0219169083151502179055506a0c685fa11e01ec6f0000006008556b01cbd27f7e4616d9e1e000006009556b01cbd27f7e4616d9e1e00000600a556b11f638faeebce482d2c00000600b556004600d556063600e55736d0425006c2a52100f54f65b27d2ca964e542d35600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736d0425006c2a52100f54f65b27d2ca964e542d35601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736d0425006c2a52100f54f65b27d2ca964e542d35601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180608001604052806004815260200160028152602001600181526020016001815250601260008201518160000155602082015181600101556040820151816002015560608201518160030155505060405180608001604052806004815260200160028152602001600181526020016001815250601660008201518160000155602082015181600101556040820151816002015560608201518160030155505060126003015460126002015460126001015460126000015462000263919062000ab3565b6200026f919062000ab3565b6200027b919062000ab3565b601a55601660030154601660020154601660010154601660000154620002a2919062000ab3565b620002ae919062000ab3565b620002ba919062000ab3565b601b556000601f60006101000a81548160ff021916908315150217905550603c602055348015620002ea57600080fd5b506040518060400160405280600b81526020017f5361746f736869444f47450000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5354444700000000000000000000000000000000000000000000000000000000815250816003908162000368919062000d5e565b5080600490816200037a919062000d5e565b5050506200039d620003916200086260201b60201c565b6200086a60201b60201c565b620003de33620003b26200093060201b60201c565b600b620003c0919062000fa6565b64174876e800620003d2919062000ff7565b6200093960201b60201c565b6001601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600073a4ee06ce40cb7e8c04e127c1f7d3dfb7f7039c81905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200049d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c39190620010c2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff16634ed154606040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200052b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005519190620010c2565b6040518363ffffffff1660e01b81526004016200057092919062001105565b6020604051808303816000875af115801562000590573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005b69190620010c2565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062001209565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009ab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009a290620011b9565b60405180910390fd5b620009bf6000838362000a7560201b60201c565b80600281905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a699190620011ec565b60405180910390a35050565b505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000ac08262000a7a565b915062000acd8362000a7a565b925082820190508082111562000ae85762000ae762000a84565b5b92915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b7057607f821691505b60208210810362000b865762000b8562000b28565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000bf07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000bb1565b62000bfc868362000bb1565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000c3f62000c3962000c338462000a7a565b62000c14565b62000a7a565b9050919050565b6000819050919050565b62000c5b8362000c1e565b62000c7362000c6a8262000c46565b84845462000bbe565b825550505050565b600090565b62000c8a62000c7b565b62000c9781848462000c50565b505050565b5b8181101562000cbf5762000cb360008262000c80565b60018101905062000c9d565b5050565b601f82111562000d0e5762000cd88162000b8c565b62000ce38462000ba1565b8101602085101562000cf3578190505b62000d0b62000d028562000ba1565b83018262000c9c565b50505b505050565b600082821c905092915050565b600062000d336000198460080262000d13565b1980831691505092915050565b600062000d4e838362000d20565b9150826002028217905092915050565b62000d698262000aee565b67ffffffffffffffff81111562000d855762000d8462000af9565b5b62000d91825462000b57565b62000d9e82828562000cc3565b600060209050601f83116001811462000dd6576000841562000dc1578287015190505b62000dcd858262000d40565b86555062000e3d565b601f19841662000de68662000b8c565b60005b8281101562000e105784890151825560018201915060208501945060208101905062000de9565b8683101562000e30578489015162000e2c601f89168262000d20565b8355505b6001600288020188555050505b505050505050565b60008160011c9050919050565b6000808291508390505b600185111562000ea45780860481111562000e7c5762000e7b62000a84565b5b600185161562000e8c5780820291505b808102905062000e9c8562000e45565b945062000e5c565b94509492505050565b60008262000ebf576001905062000f92565b8162000ecf576000905062000f92565b816001811462000ee8576002811462000ef35762000f29565b600191505062000f92565b60ff84111562000f085762000f0762000a84565b5b8360020a91508482111562000f225762000f2162000a84565b5b5062000f92565b5060208310610133831016604e8410600b841016171562000f635782820a90508381111562000f5d5762000f5c62000a84565b5b62000f92565b62000f72848484600162000e52565b9250905081840481111562000f8c5762000f8b62000a84565b5b81810290505b9392505050565b600060ff82169050919050565b600062000fb38262000a7a565b915062000fc08362000f99565b925062000fef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ead565b905092915050565b6000620010048262000a7a565b9150620010118362000a7a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200104d576200104c62000a84565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200108a826200105d565b9050919050565b6200109c816200107d565b8114620010a857600080fd5b50565b600081519050620010bc8162001091565b92915050565b600060208284031215620010db57620010da62001058565b5b6000620010eb84828501620010ab565b91505092915050565b620010ff816200107d565b82525050565b60006040820190506200111c6000830185620010f4565b6200112b6020830184620010f4565b9392505050565b600082825260208201905092915050565b7f45524332303a2067656e65726174696f6e20746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000620011a160258362001132565b9150620011ae8262001143565b604082019050919050565b60006020820190508181036000830152620011d48162001192565b9050919050565b620011e68162000a7a565b82525050565b6000602082019050620012036000830184620011db565b92915050565b615b4380620012196000396000f3fe6080604052600436106103395760003560e01c806375f0a874116101ab578063d2ce0db2116100f7578063f2fde38b11610095578063f887ea401161006f578063f887ea4014610bf5578063f8bba9e814610c20578063fbe6324e14610c49578063fe575a8714610c7457610340565b8063f2fde38b14610b75578063f66895a314610b9e578063f770c37914610bcc57610340565b8063e1b450ad116100d1578063e1b450ad14610acf578063e517f2b914610af8578063edaa116814610b21578063ee36e35914610b4a57610340565b8063d2ce0db214610a3c578063dc89f88c14610a67578063dd62ed3e14610a9257610340565b80639321b67611610164578063a8aa1b311161013e578063a8aa1b311461096e578063a9059cbb14610999578063aacebbe3146109d6578063c5d32bb2146109ff57610340565b80639321b676146108dd57806395d89b4114610906578063a457c2d71461093157610340565b806375f0a874146107ef5780637b46eee51461081a57806385141a77146108455780638a8c523c146108705780638da5cb5b146108875780638ea5220f146108b257610340565b8063355496ca1161028557806366a88d9611610223578063706f6937116101fd578063706f69371461074457806370a082311461076d578063715018a6146107aa578063728f8eea146107c157610340565b806366a88d96146106c357806368db925a146106ee5780636aa5b37f1461071957610340565b806342b6fa111161025f57806342b6fa111461061b5780634ada218b146106445780635b24ea5e1461066f578063652e2f041461069857610340565b8063355496ca1461058c57806339509351146105b557806340b28c2f146105f257610340565b80631675d802116102f25780631c3909e6116102cc5780631c3909e6146104d057806323b872dd146104f9578063274a533c14610536578063313ce5671461056157610340565b80631675d8021461045157806318160ddd1461047c5780631816467f146104a757610340565b806306fdde0314610345578063095ea7b3146103705780630e375a5c146103ad578063105cafb6146103d65780631340538f146103ff57806313f97a8e1461042857610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610cb1565b6040516103679190613e65565b60405180910390f35b34801561037c57600080fd5b5061039760048036038101906103929190613f2f565b610d43565b6040516103a49190613f8a565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf9190614119565b610d61565b005b3480156103e257600080fd5b506103fd60048036038101906103f89190614175565b610e72565b005b34801561040b57600080fd5b50610426600480360381019061042191906141dc565b610fb0565b005b34801561043457600080fd5b5061044f600480360381019061044a9190614119565b611049565b005b34801561045d57600080fd5b5061046661115a565b6040516104739190614218565b60405180910390f35b34801561048857600080fd5b50610491611160565b60405161049e9190614218565b60405180910390f35b3480156104b357600080fd5b506104ce60048036038101906104c99190614233565b61116a565b005b3480156104dc57600080fd5b506104f760048036038101906104f29190614233565b61122a565b005b34801561050557600080fd5b50610520600480360381019061051b9190614260565b6112ea565b60405161052d9190613f8a565b60405180910390f35b34801561054257600080fd5b5061054b6113eb565b6040516105589190614218565b60405180910390f35b34801561056d57600080fd5b506105766113f1565b60405161058391906142cf565b60405180910390f35b34801561059857600080fd5b506105b360048036038101906105ae91906142ea565b6113fa565b005b3480156105c157600080fd5b506105dc60048036038101906105d79190613f2f565b6114d1565b6040516105e99190613f8a565b60405180910390f35b3480156105fe57600080fd5b506106196004803603810190610614919061432a565b61157d565b005b34801561062757600080fd5b50610642600480360381019061063d919061436a565b61167f565b005b34801561065057600080fd5b50610659611723565b6040516106669190613f8a565b60405180910390f35b34801561067b57600080fd5b50610696600480360381019061069191906142ea565b611736565b005b3480156106a457600080fd5b506106ad61180d565b6040516106ba9190614218565b60405180910390f35b3480156106cf57600080fd5b506106d8611813565b6040516106e59190614218565b60405180910390f35b3480156106fa57600080fd5b50610703611819565b60405161071091906143a6565b60405180910390f35b34801561072557600080fd5b5061072e61183f565b60405161073b9190614218565b60405180910390f35b34801561075057600080fd5b5061076b60048036038101906107669190614484565b611845565b005b34801561077957600080fd5b50610794600480360381019061078f9190614233565b611968565b6040516107a19190614218565b60405180910390f35b3480156107b657600080fd5b506107bf6119b0565b005b3480156107cd57600080fd5b506107d6611a38565b6040516107e694939291906144fc565b60405180910390f35b3480156107fb57600080fd5b50610804611a56565b60405161081191906143a6565b60405180910390f35b34801561082657600080fd5b5061082f611a7c565b60405161083c9190614218565b60405180910390f35b34801561085157600080fd5b5061085a611a82565b60405161086791906143a6565b60405180910390f35b34801561087c57600080fd5b50610885611a88565b005b34801561089357600080fd5b5061089c611b93565b6040516108a991906143a6565b60405180910390f35b3480156108be57600080fd5b506108c7611bbd565b6040516108d491906143a6565b60405180910390f35b3480156108e957600080fd5b5061090460048036038101906108ff9190614175565b611be3565b005b34801561091257600080fd5b5061091b611d21565b6040516109289190613e65565b60405180910390f35b34801561093d57600080fd5b5061095860048036038101906109539190613f2f565b611db3565b6040516109659190613f8a565b60405180910390f35b34801561097a57600080fd5b50610983611ea7565b60405161099091906143a6565b60405180910390f35b3480156109a557600080fd5b506109c060048036038101906109bb9190613f2f565b611ecd565b6040516109cd9190613f8a565b60405180910390f35b3480156109e257600080fd5b506109fd60048036038101906109f89190614233565b611ee4565b005b348015610a0b57600080fd5b50610a266004803603810190610a219190614233565b611fa4565b604051610a339190613f8a565b60405180910390f35b348015610a4857600080fd5b50610a51611fc4565b604051610a5e9190614218565b60405180910390f35b348015610a7357600080fd5b50610a7c611fca565b604051610a899190614218565b60405180910390f35b348015610a9e57600080fd5b50610ab96004803603810190610ab4919061432a565b611fd0565b604051610ac69190614218565b60405180910390f35b348015610adb57600080fd5b50610af66004803603810190610af19190614541565b612057565b005b348015610b0457600080fd5b50610b1f6004803603810190610b1a9190614594565b61221d565b005b348015610b2d57600080fd5b50610b486004803603810190610b43919061436a565b61230e565b005b348015610b5657600080fd5b50610b5f612427565b604051610b6c9190613f8a565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b979190614233565b61243a565b005b348015610baa57600080fd5b50610bb3612531565b604051610bc394939291906144fc565b60405180910390f35b348015610bd857600080fd5b50610bf36004803603810190610bee9190613f2f565b61254f565b005b348015610c0157600080fd5b50610c0a612655565b604051610c179190614633565b60405180910390f35b348015610c2c57600080fd5b50610c476004803603810190610c42919061436a565b61267b565b005b348015610c5557600080fd5b50610c5e612748565b604051610c6b9190613f8a565b60405180910390f35b348015610c8057600080fd5b50610c9b6004803603810190610c969190614233565b61275b565b604051610ca89190613f8a565b60405180910390f35b606060038054610cc09061467d565b80601f0160208091040260200160405190810160405280929190818152602001828054610cec9061467d565b8015610d395780601f10610d0e57610100808354040283529160200191610d39565b820191906000526020600020905b815481529060010190602001808311610d1c57829003601f168201915b5050505050905090565b6000610d57610d5061277b565b8484612783565b6001905092915050565b610d6961277b565b73ffffffffffffffffffffffffffffffffffffffff16610d87611b93565b73ffffffffffffffffffffffffffffffffffffffff1614610ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd4906146fa565b60405180910390fd5b60005b8251811015610e6d5781601c6000858481518110610e0157610e0061471a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e6590614778565b915050610de0565b505050565b610e7a61277b565b73ffffffffffffffffffffffffffffffffffffffff16610e98611b93565b73ffffffffffffffffffffffffffffffffffffffff1614610eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee5906146fa565b60405180910390fd5b80828486610efc91906147c0565b610f0691906147c0565b610f1091906147c0565b601b81905550601e601b541115610f5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5390614840565b60405180910390fd5b60405180608001604052808581526020018481526020018381526020018281525060166000820151816000015560208201518160010155604082015181600201556060820151816003015590505050505050565b610fb861277b565b73ffffffffffffffffffffffffffffffffffffffff16610fd6611b93565b73ffffffffffffffffffffffffffffffffffffffff161461102c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611023906146fa565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b61105161277b565b73ffffffffffffffffffffffffffffffffffffffff1661106f611b93565b73ffffffffffffffffffffffffffffffffffffffff16146110c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bc906146fa565b60405180910390fd5b60005b82518110156111555781601d60008584815181106110e9576110e861471a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061114d90614778565b9150506110c8565b505050565b60085481565b6000600254905090565b61117261277b565b73ffffffffffffffffffffffffffffffffffffffff16611190611b93565b73ffffffffffffffffffffffffffffffffffffffff16146111e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111dd906146fa565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61123261277b565b73ffffffffffffffffffffffffffffffffffffffff16611250611b93565b73ffffffffffffffffffffffffffffffffffffffff16146112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d906146fa565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006112f784848461294c565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061134261277b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156113c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b9906148d2565b60405180910390fd5b6113df856113ce61277b565b85846113da91906148f2565b612783565b60019150509392505050565b600c5481565b60006012905090565b61140261277b565b73ffffffffffffffffffffffffffffffffffffffff16611420611b93565b73ffffffffffffffffffffffffffffffffffffffff1614611476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146d906146fa565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006115736114de61277b565b8484600160006114ec61277b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461156e91906147c0565b612783565b6001905092915050565b61158561277b565b73ffffffffffffffffffffffffffffffffffffffff166115a3611b93565b73ffffffffffffffffffffffffffffffffffffffff16146115f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f0906146fa565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61168761277b565b73ffffffffffffffffffffffffffffffffffffffff166116a5611b93565b73ffffffffffffffffffffffffffffffffffffffff16146116fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f2906146fa565b60405180910390fd5b6117036113f1565b600a61170f9190614a59565b8161171a9190614aa4565b60088190555050565b600760169054906101000a900460ff1681565b61173e61277b565b73ffffffffffffffffffffffffffffffffffffffff1661175c611b93565b73ffffffffffffffffffffffffffffffffffffffff16146117b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a9906146fa565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a5481565b600b5481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b61184d61277b565b73ffffffffffffffffffffffffffffffffffffffff1661186b611b93565b73ffffffffffffffffffffffffffffffffffffffff16146118c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b8906146fa565b60405180910390fd5b8051825114611905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fc90614b4a565b60405180910390fd5b60005b825181101561196357611950338483815181106119285761192761471a565b5b60200260200101518484815181106119435761194261471a565b5b60200260200101516133b9565b808061195b90614778565b915050611908565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6119b861277b565b73ffffffffffffffffffffffffffffffffffffffff166119d6611b93565b73ffffffffffffffffffffffffffffffffffffffff1614611a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a23906146fa565b60405180910390fd5b611a366000613636565b565b60128060000154908060010154908060020154908060030154905084565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a5481565b61dead81565b611a9061277b565b73ffffffffffffffffffffffffffffffffffffffff16611aae611b93565b73ffffffffffffffffffffffffffffffffffffffff1614611b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afb906146fa565b60405180910390fd5b600760169054906101000a900460ff1615611b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4b90614bb6565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600c81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611beb61277b565b73ffffffffffffffffffffffffffffffffffffffff16611c09611b93565b73ffffffffffffffffffffffffffffffffffffffff1614611c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c56906146fa565b60405180910390fd5b80828486611c6d91906147c0565b611c7791906147c0565b611c8191906147c0565b601a81905550600f601a541115611ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc490614c22565b60405180910390fd5b60405180608001604052808581526020018481526020018381526020018281525060126000820151816000015560208201518160010155604082015181600201556060820151816003015590505050505050565b606060048054611d309061467d565b80601f0160208091040260200160405190810160405280929190818152602001828054611d5c9061467d565b8015611da95780601f10611d7e57610100808354040283529160200191611da9565b820191906000526020600020905b815481529060010190602001808311611d8c57829003601f168201915b5050505050905090565b60008060016000611dc261277b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7690614cb4565b60405180910390fd5b611e9c611e8a61277b565b858584611e9791906148f2565b612783565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611eda33848461294c565b6001905092915050565b611eec61277b565b73ffffffffffffffffffffffffffffffffffffffff16611f0a611b93565b73ffffffffffffffffffffffffffffffffffffffff1614611f60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f57906146fa565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c6020528060005260406000206000915054906101000a900460ff1681565b60205481565b601b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61205f61277b565b73ffffffffffffffffffffffffffffffffffffffff1661207d611b93565b73ffffffffffffffffffffffffffffffffffffffff16146120d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ca906146fa565b60405180910390fd5b632122393883101561211a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211190614d46565b60405180910390fd5b6321223938821015612161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215890614dd8565b60405180910390fd5b64014b563c308110156121a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a090614e6a565b60405180910390fd5b6121b16113f1565b600a6121bd9190614a59565b836121c89190614aa4565b6009819055506121d66113f1565b600a6121e29190614a59565b826121ed9190614aa4565b600a819055506121fb6113f1565b600a6122079190614a59565b816122129190614aa4565b600b81905550505050565b61222561277b565b73ffffffffffffffffffffffffffffffffffffffff16612243611b93565b73ffffffffffffffffffffffffffffffffffffffff1614612299576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612290906146fa565b60405180910390fd5b6001816122a69190614aa4565b60208190555081601f60006101000a81548160ff021916908315150217905550603c81111561230a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230190614efc565b60405180910390fd5b5050565b61231661277b565b73ffffffffffffffffffffffffffffffffffffffff16612334611b93565b73ffffffffffffffffffffffffffffffffffffffff161461238a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612381906146fa565b60405180910390fd5b600760169054906101000a900460ff16156123da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d190614f8e565b60405180910390fd5b6005811061241d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241490614ffa565b60405180910390fd5b80600d8190555050565b601f60009054906101000a900460ff1681565b61244261277b565b73ffffffffffffffffffffffffffffffffffffffff16612460611b93565b73ffffffffffffffffffffffffffffffffffffffff16146124b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ad906146fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251c9061508c565b60405180910390fd5b61252e81613636565b50565b60168060000154908060010154908060020154908060030154905084565b61255761277b565b73ffffffffffffffffffffffffffffffffffffffff16612575611b93565b73ffffffffffffffffffffffffffffffffffffffff16146125cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c2906146fa565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6125ef611b93565b836040518363ffffffff1660e01b815260040161260d9291906150ac565b6020604051808303816000875af115801561262c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265091906150ea565b505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61268361277b565b73ffffffffffffffffffffffffffffffffffffffff166126a1611b93565b73ffffffffffffffffffffffffffffffffffffffff16146126f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ee906146fa565b60405180910390fd5b6126ff611b93565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612744573d6000803e3d6000fd5b5050565b600760159054906101000a900460ff1681565b601d6020528060005260406000206000915054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e990615189565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612861576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128589061521b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161293f9190614218565b60405180910390a3505050565b6000811161298f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612986906152ad565b60405180910390fd5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612a335750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6990615319565b60405180910390fd5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b165750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b6b57600760169054906101000a900460ff16612b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6190615385565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612c125750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c2b5750600760149054906101000a900460ff16155b15612cce57600954811115612c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6c906153f1565b60405180910390fd5b600b5481612c8284611968565b612c8c91906147c0565b1115612ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc49061545d565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612d765750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612dcc5750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612de55750600760149054906101000a900460ff16155b15612fcd57600a54811115612e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e26906154c9565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612edd57600b5481612e9184611968565b612e9b91906147c0565b1115612edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed39061545d565b60405180910390fd5b5b601f60009054906101000a900460ff1615612fcc576000601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442612f3f91906148f2565b9050602054811015612f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7d90615535565b60405180910390fd5b42601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b5b6000806000612fda613dad565b6000601c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130805750601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561309a5750600d54600c5461309791906147c0565b43105b9050600760149054906101000a900460ff16806131005750601c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806131545750601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561316257600092506132c9565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161480156131bd575080155b15613239576016600301546016600101546016600001546016600201546131e491906147c0565b6131ee91906147c0565b6131f891906147c0565b9450849350601660405180608001604052908160008201548152602001600182015481526020016002820154815260200160038201548152505091506132c8565b806132b55760126003015460126001015460126000015460126002015461326091906147c0565b61326a91906147c0565b61327491906147c0565b9450849350601260405180608001604052908160008201548152602001600182015481526020016002820154815260200160038201548152505091506132c7565b80156132c657600e549450600e5493505b5b5b5b606484876132d79190614aa4565b6132e19190615584565b9250600760159054906101000a900460ff16801561334d5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b1561335d5761335c85836136fc565b5b6133738888858961336e91906148f2565b6133b9565b60008311156133af5760008511156133ae576000606486886133959190614aa4565b61339f9190615584565b90506133ac8930836133b9565b505b5b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161341f90615627565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161348e906156b9565b60405180910390fd5b6134a283838361398c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161351f9061574b565b60405180910390fd5b818161353491906148f2565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546135c491906147c0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516136289190614218565b60405180910390a350505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16613988576001600760146101000a81548160ff021916908315150217905550600082031561396c57600061373f30611968565b9050600854811061396a576001600854111561375b5760085490505b600060028461376a9190614aa4565b905060008184604001518461377f9190614aa4565b6137899190615584565b90506000818461379991906148f2565b905060004790506137a982613991565b600081476137b791906148f2565b905060008760400151866137cb91906148f2565b826137d69190615584565b905060008860400151826137ea9190614aa4565b90506000811115613800576137ff8682613bd4565b5b600089600001516002846138149190614aa4565b61381e9190614aa4565b905060008111156138755761387481600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613cb990919063ffffffff16565b5b60008a602001516002856138899190614aa4565b6138939190614aa4565b905060008111156138ea576138e981601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613cb990919063ffffffff16565b5b60008b606001516002866138fe9190614aa4565b6139089190614aa4565b9050600081111561395f5761395e81601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613cb990919063ffffffff16565b5b505050505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b505050565b6000600267ffffffffffffffff8111156139ae576139ad613faa565b5b6040519080825280602002602001820160405280156139dc5781602001602082028036833780820191505090505b50905030816000815181106139f4576139f361471a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634ed154606040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613abf9190615780565b81600181518110613ad357613ad261471a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613b3a30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612783565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b43d9bbb8360008430426040518663ffffffff1660e01b8152600401613b9e9594939291906158a6565b600060405180830381600087803b158015613bb857600080fd5b505af1158015613bcc573d6000803e3d6000fd5b505050505050565b613c0130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612783565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6529ab4823085600080613c4d611b93565b426040518863ffffffff1660e01b8152600401613c6f96959493929190615900565b60606040518083038185885af1158015613c8d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613cb29190615976565b5050505050565b80471015613cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cf390615a15565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051613d2290615a66565b60006040518083038185875af1925050503d8060008114613d5f576040519150601f19603f3d011682016040523d82523d6000602084013e613d64565b606091505b5050905080613da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d9f90615aed565b60405180910390fd5b505050565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613e0f578082015181840152602081019050613df4565b60008484015250505050565b6000601f19601f8301169050919050565b6000613e3782613dd5565b613e418185613de0565b9350613e51818560208601613df1565b613e5a81613e1b565b840191505092915050565b60006020820190508181036000830152613e7f8184613e2c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613ec682613e9b565b9050919050565b613ed681613ebb565b8114613ee157600080fd5b50565b600081359050613ef381613ecd565b92915050565b6000819050919050565b613f0c81613ef9565b8114613f1757600080fd5b50565b600081359050613f2981613f03565b92915050565b60008060408385031215613f4657613f45613e91565b5b6000613f5485828601613ee4565b9250506020613f6585828601613f1a565b9150509250929050565b60008115159050919050565b613f8481613f6f565b82525050565b6000602082019050613f9f6000830184613f7b565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613fe282613e1b565b810181811067ffffffffffffffff8211171561400157614000613faa565b5b80604052505050565b6000614014613e87565b90506140208282613fd9565b919050565b600067ffffffffffffffff8211156140405761403f613faa565b5b602082029050602081019050919050565b600080fd5b600061406961406484614025565b61400a565b9050808382526020820190506020840283018581111561408c5761408b614051565b5b835b818110156140b557806140a18882613ee4565b84526020840193505060208101905061408e565b5050509392505050565b600082601f8301126140d4576140d3613fa5565b5b81356140e4848260208601614056565b91505092915050565b6140f681613f6f565b811461410157600080fd5b50565b600081359050614113816140ed565b92915050565b600080604083850312156141305761412f613e91565b5b600083013567ffffffffffffffff81111561414e5761414d613e96565b5b61415a858286016140bf565b925050602061416b85828601614104565b9150509250929050565b6000806000806080858703121561418f5761418e613e91565b5b600061419d87828801613f1a565b94505060206141ae87828801613f1a565b93505060406141bf87828801613f1a565b92505060606141d087828801613f1a565b91505092959194509250565b6000602082840312156141f2576141f1613e91565b5b600061420084828501614104565b91505092915050565b61421281613ef9565b82525050565b600060208201905061422d6000830184614209565b92915050565b60006020828403121561424957614248613e91565b5b600061425784828501613ee4565b91505092915050565b60008060006060848603121561427957614278613e91565b5b600061428786828701613ee4565b935050602061429886828701613ee4565b92505060406142a986828701613f1a565b9150509250925092565b600060ff82169050919050565b6142c9816142b3565b82525050565b60006020820190506142e460008301846142c0565b92915050565b6000806040838503121561430157614300613e91565b5b600061430f85828601613ee4565b925050602061432085828601614104565b9150509250929050565b6000806040838503121561434157614340613e91565b5b600061434f85828601613ee4565b925050602061436085828601613ee4565b9150509250929050565b6000602082840312156143805761437f613e91565b5b600061438e84828501613f1a565b91505092915050565b6143a081613ebb565b82525050565b60006020820190506143bb6000830184614397565b92915050565b600067ffffffffffffffff8211156143dc576143db613faa565b5b602082029050602081019050919050565b60006144006143fb846143c1565b61400a565b9050808382526020820190506020840283018581111561442357614422614051565b5b835b8181101561444c57806144388882613f1a565b845260208401935050602081019050614425565b5050509392505050565b600082601f83011261446b5761446a613fa5565b5b813561447b8482602086016143ed565b91505092915050565b6000806040838503121561449b5761449a613e91565b5b600083013567ffffffffffffffff8111156144b9576144b8613e96565b5b6144c5858286016140bf565b925050602083013567ffffffffffffffff8111156144e6576144e5613e96565b5b6144f285828601614456565b9150509250929050565b60006080820190506145116000830187614209565b61451e6020830186614209565b61452b6040830185614209565b6145386060830184614209565b95945050505050565b60008060006060848603121561455a57614559613e91565b5b600061456886828701613f1a565b935050602061457986828701613f1a565b925050604061458a86828701613f1a565b9150509250925092565b600080604083850312156145ab576145aa613e91565b5b60006145b985828601614104565b92505060206145ca85828601613f1a565b9150509250929050565b6000819050919050565b60006145f96145f46145ef84613e9b565b6145d4565b613e9b565b9050919050565b600061460b826145de565b9050919050565b600061461d82614600565b9050919050565b61462d81614612565b82525050565b60006020820190506146486000830184614624565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061469557607f821691505b6020821081036146a8576146a761464e565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146e4602083613de0565b91506146ef826146ae565b602082019050919050565b60006020820190508181036000830152614713816146d7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061478382613ef9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036147b5576147b4614749565b5b600182019050919050565b60006147cb82613ef9565b91506147d683613ef9565b92508282019050808211156147ee576147ed614749565b5b92915050565b7f4d757374206b656570206665657320617420333025206f72206c657373000000600082015250565b600061482a601d83613de0565b9150614835826147f4565b602082019050919050565b600060208201905081810360008301526148598161481d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006148bc602883613de0565b91506148c782614860565b604082019050919050565b600060208201905081810360008301526148eb816148af565b9050919050565b60006148fd82613ef9565b915061490883613ef9565b92508282039050818111156149205761491f614749565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111561497d5780860481111561495957614958614749565b5b60018516156149685780820291505b808102905061497685614926565b945061493d565b94509492505050565b6000826149965760019050614a52565b816149a45760009050614a52565b81600181146149ba57600281146149c4576149f3565b6001915050614a52565b60ff8411156149d6576149d5614749565b5b8360020a9150848211156149ed576149ec614749565b5b50614a52565b5060208310610133831016604e8410600b8410161715614a285782820a905083811115614a2357614a22614749565b5b614a52565b614a358484846001614933565b92509050818404811115614a4c57614a4b614749565b5b81810290505b9392505050565b6000614a6482613ef9565b9150614a6f836142b3565b9250614a9c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614986565b905092915050565b6000614aaf82613ef9565b9150614aba83613ef9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614af357614af2614749565b5b828202905092915050565b7f417272617973206d75737420686176652073616d652073697a65000000000000600082015250565b6000614b34601a83613de0565b9150614b3f82614afe565b602082019050919050565b60006020820190508181036000830152614b6381614b27565b9050919050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b6000614ba0601a83613de0565b9150614bab82614b6a565b602082019050919050565b60006020820190508181036000830152614bcf81614b93565b9050919050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b6000614c0c601d83613de0565b9150614c1782614bd6565b602082019050919050565b60006020820190508181036000830152614c3b81614bff565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614c9e602583613de0565b9150614ca982614c42565b604082019050919050565b60006020820190508181036000830152614ccd81614c91565b9050919050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614d30602983613de0565b9150614d3b82614cd4565b604082019050919050565b60006020820190508181036000830152614d5f81614d23565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b6000614dc2602a83613de0565b9150614dcd82614d66565b604082019050919050565b60006020820190508181036000830152614df181614db5565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e31250000000000000000000000000000000000000000602082015250565b6000614e54602c83613de0565b9150614e5f82614df8565b604082019050919050565b60006020820190508181036000830152614e8381614e47565b9050919050565b7f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642031206d60008201527f696e757465730000000000000000000000000000000000000000000000000000602082015250565b6000614ee6602683613de0565b9150614ef182614e8a565b604082019050919050565b60006020820190508181036000830152614f1581614ed9565b9050919050565b7f43616e2774206368616e6765207768656e2074726164696e672068617320737460008201527f6172746564000000000000000000000000000000000000000000000000000000602082015250565b6000614f78602583613de0565b9150614f8382614f1c565b604082019050919050565b60006020820190508181036000830152614fa781614f6b565b9050919050565b7f446561646c696e652073686f756c64206265206c657373207468616e20350000600082015250565b6000614fe4601e83613de0565b9150614fef82614fae565b602082019050919050565b6000602082019050818103600083015261501381614fd7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615076602683613de0565b91506150818261501a565b604082019050919050565b600060208201905081810360008301526150a581615069565b9050919050565b60006040820190506150c16000830185614397565b6150ce6020830184614209565b9392505050565b6000815190506150e4816140ed565b92915050565b600060208284031215615100576150ff613e91565b5b600061510e848285016150d5565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615173602483613de0565b915061517e82615117565b604082019050919050565b600060208201905081810360008301526151a281615166565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615205602283613de0565b9150615210826151a9565b604082019050919050565b60006020820190508181036000830152615234816151f8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000615297602983613de0565b91506152a28261523b565b604082019050919050565b600060208201905081810360008301526152c68161528a565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b6000615303601983613de0565b915061530e826152cd565b602082019050919050565b60006020820190508181036000830152615332816152f6565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b600061536f601383613de0565b915061537a82615339565b602082019050919050565b6000602082019050818103600083015261539e81615362565b9050919050565b7f596f752061726520657863656564696e67206d61784275794c696d6974000000600082015250565b60006153db601d83613de0565b91506153e6826153a5565b602082019050919050565b6000602082019050818103600083015261540a816153ce565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d6974600082015250565b6000615447602083613de0565b915061545282615411565b602082019050919050565b600060208201905081810360008301526154768161543a565b9050919050565b7f596f752061726520657863656564696e67206d617853656c6c4c696d69740000600082015250565b60006154b3601e83613de0565b91506154be8261547d565b602082019050919050565b600060208201905081810360008301526154e2816154a6565b9050919050565b7f436f6f6c646f776e20656e61626c656400000000000000000000000000000000600082015250565b600061551f601083613de0565b915061552a826154e9565b602082019050919050565b6000602082019050818103600083015261554e81615512565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061558f82613ef9565b915061559a83613ef9565b9250826155aa576155a9615555565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000615611602583613de0565b915061561c826155b5565b604082019050919050565b6000602082019050818103600083015261564081615604565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006156a3602383613de0565b91506156ae82615647565b604082019050919050565b600060208201905081810360008301526156d281615696565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615735602683613de0565b9150615740826156d9565b604082019050919050565b6000602082019050818103600083015261576481615728565b9050919050565b60008151905061577a81613ecd565b92915050565b60006020828403121561579657615795613e91565b5b60006157a48482850161576b565b91505092915050565b6000819050919050565b60006157d26157cd6157c8846157ad565b6145d4565b613ef9565b9050919050565b6157e2816157b7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61581d81613ebb565b82525050565b600061582f8383615814565b60208301905092915050565b6000602082019050919050565b6000615853826157e8565b61585d81856157f3565b935061586883615804565b8060005b838110156158995781516158808882615823565b975061588b8361583b565b92505060018101905061586c565b5085935050505092915050565b600060a0820190506158bb6000830188614209565b6158c860208301876157d9565b81810360408301526158da8186615848565b90506158e96060830185614397565b6158f66080830184614209565b9695505050505050565b600060c0820190506159156000830189614397565b6159226020830188614209565b61592f60408301876157d9565b61593c60608301866157d9565b6159496080830185614397565b61595660a0830184614209565b979650505050505050565b60008151905061597081613f03565b92915050565b60008060006060848603121561598f5761598e613e91565b5b600061599d86828701615961565b93505060206159ae86828701615961565b92505060406159bf86828701615961565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006159ff601d83613de0565b9150615a0a826159c9565b602082019050919050565b60006020820190508181036000830152615a2e816159f2565b9050919050565b600081905092915050565b50565b6000615a50600083615a35565b9150615a5b82615a40565b600082019050919050565b6000615a7182615a43565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000615ad7603a83613de0565b9150615ae282615a7b565b604082019050919050565b60006020820190508181036000830152615b0681615aca565b905091905056fea264697066735822122001e2b4bd3e8ec6d81bb9a44ebc8c506ba0f6dd213172420a4a11ef5b9688d0ce64736f6c63430008100033

Deployed ByteCode

0x6080604052600436106103395760003560e01c806375f0a874116101ab578063d2ce0db2116100f7578063f2fde38b11610095578063f887ea401161006f578063f887ea4014610bf5578063f8bba9e814610c20578063fbe6324e14610c49578063fe575a8714610c7457610340565b8063f2fde38b14610b75578063f66895a314610b9e578063f770c37914610bcc57610340565b8063e1b450ad116100d1578063e1b450ad14610acf578063e517f2b914610af8578063edaa116814610b21578063ee36e35914610b4a57610340565b8063d2ce0db214610a3c578063dc89f88c14610a67578063dd62ed3e14610a9257610340565b80639321b67611610164578063a8aa1b311161013e578063a8aa1b311461096e578063a9059cbb14610999578063aacebbe3146109d6578063c5d32bb2146109ff57610340565b80639321b676146108dd57806395d89b4114610906578063a457c2d71461093157610340565b806375f0a874146107ef5780637b46eee51461081a57806385141a77146108455780638a8c523c146108705780638da5cb5b146108875780638ea5220f146108b257610340565b8063355496ca1161028557806366a88d9611610223578063706f6937116101fd578063706f69371461074457806370a082311461076d578063715018a6146107aa578063728f8eea146107c157610340565b806366a88d96146106c357806368db925a146106ee5780636aa5b37f1461071957610340565b806342b6fa111161025f57806342b6fa111461061b5780634ada218b146106445780635b24ea5e1461066f578063652e2f041461069857610340565b8063355496ca1461058c57806339509351146105b557806340b28c2f146105f257610340565b80631675d802116102f25780631c3909e6116102cc5780631c3909e6146104d057806323b872dd146104f9578063274a533c14610536578063313ce5671461056157610340565b80631675d8021461045157806318160ddd1461047c5780631816467f146104a757610340565b806306fdde0314610345578063095ea7b3146103705780630e375a5c146103ad578063105cafb6146103d65780631340538f146103ff57806313f97a8e1461042857610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610cb1565b6040516103679190613e65565b60405180910390f35b34801561037c57600080fd5b5061039760048036038101906103929190613f2f565b610d43565b6040516103a49190613f8a565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf9190614119565b610d61565b005b3480156103e257600080fd5b506103fd60048036038101906103f89190614175565b610e72565b005b34801561040b57600080fd5b50610426600480360381019061042191906141dc565b610fb0565b005b34801561043457600080fd5b5061044f600480360381019061044a9190614119565b611049565b005b34801561045d57600080fd5b5061046661115a565b6040516104739190614218565b60405180910390f35b34801561048857600080fd5b50610491611160565b60405161049e9190614218565b60405180910390f35b3480156104b357600080fd5b506104ce60048036038101906104c99190614233565b61116a565b005b3480156104dc57600080fd5b506104f760048036038101906104f29190614233565b61122a565b005b34801561050557600080fd5b50610520600480360381019061051b9190614260565b6112ea565b60405161052d9190613f8a565b60405180910390f35b34801561054257600080fd5b5061054b6113eb565b6040516105589190614218565b60405180910390f35b34801561056d57600080fd5b506105766113f1565b60405161058391906142cf565b60405180910390f35b34801561059857600080fd5b506105b360048036038101906105ae91906142ea565b6113fa565b005b3480156105c157600080fd5b506105dc60048036038101906105d79190613f2f565b6114d1565b6040516105e99190613f8a565b60405180910390f35b3480156105fe57600080fd5b506106196004803603810190610614919061432a565b61157d565b005b34801561062757600080fd5b50610642600480360381019061063d919061436a565b61167f565b005b34801561065057600080fd5b50610659611723565b6040516106669190613f8a565b60405180910390f35b34801561067b57600080fd5b50610696600480360381019061069191906142ea565b611736565b005b3480156106a457600080fd5b506106ad61180d565b6040516106ba9190614218565b60405180910390f35b3480156106cf57600080fd5b506106d8611813565b6040516106e59190614218565b60405180910390f35b3480156106fa57600080fd5b50610703611819565b60405161071091906143a6565b60405180910390f35b34801561072557600080fd5b5061072e61183f565b60405161073b9190614218565b60405180910390f35b34801561075057600080fd5b5061076b60048036038101906107669190614484565b611845565b005b34801561077957600080fd5b50610794600480360381019061078f9190614233565b611968565b6040516107a19190614218565b60405180910390f35b3480156107b657600080fd5b506107bf6119b0565b005b3480156107cd57600080fd5b506107d6611a38565b6040516107e694939291906144fc565b60405180910390f35b3480156107fb57600080fd5b50610804611a56565b60405161081191906143a6565b60405180910390f35b34801561082657600080fd5b5061082f611a7c565b60405161083c9190614218565b60405180910390f35b34801561085157600080fd5b5061085a611a82565b60405161086791906143a6565b60405180910390f35b34801561087c57600080fd5b50610885611a88565b005b34801561089357600080fd5b5061089c611b93565b6040516108a991906143a6565b60405180910390f35b3480156108be57600080fd5b506108c7611bbd565b6040516108d491906143a6565b60405180910390f35b3480156108e957600080fd5b5061090460048036038101906108ff9190614175565b611be3565b005b34801561091257600080fd5b5061091b611d21565b6040516109289190613e65565b60405180910390f35b34801561093d57600080fd5b5061095860048036038101906109539190613f2f565b611db3565b6040516109659190613f8a565b60405180910390f35b34801561097a57600080fd5b50610983611ea7565b60405161099091906143a6565b60405180910390f35b3480156109a557600080fd5b506109c060048036038101906109bb9190613f2f565b611ecd565b6040516109cd9190613f8a565b60405180910390f35b3480156109e257600080fd5b506109fd60048036038101906109f89190614233565b611ee4565b005b348015610a0b57600080fd5b50610a266004803603810190610a219190614233565b611fa4565b604051610a339190613f8a565b60405180910390f35b348015610a4857600080fd5b50610a51611fc4565b604051610a5e9190614218565b60405180910390f35b348015610a7357600080fd5b50610a7c611fca565b604051610a899190614218565b60405180910390f35b348015610a9e57600080fd5b50610ab96004803603810190610ab4919061432a565b611fd0565b604051610ac69190614218565b60405180910390f35b348015610adb57600080fd5b50610af66004803603810190610af19190614541565b612057565b005b348015610b0457600080fd5b50610b1f6004803603810190610b1a9190614594565b61221d565b005b348015610b2d57600080fd5b50610b486004803603810190610b43919061436a565b61230e565b005b348015610b5657600080fd5b50610b5f612427565b604051610b6c9190613f8a565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b979190614233565b61243a565b005b348015610baa57600080fd5b50610bb3612531565b604051610bc394939291906144fc565b60405180910390f35b348015610bd857600080fd5b50610bf36004803603810190610bee9190613f2f565b61254f565b005b348015610c0157600080fd5b50610c0a612655565b604051610c179190614633565b60405180910390f35b348015610c2c57600080fd5b50610c476004803603810190610c42919061436a565b61267b565b005b348015610c5557600080fd5b50610c5e612748565b604051610c6b9190613f8a565b60405180910390f35b348015610c8057600080fd5b50610c9b6004803603810190610c969190614233565b61275b565b604051610ca89190613f8a565b60405180910390f35b606060038054610cc09061467d565b80601f0160208091040260200160405190810160405280929190818152602001828054610cec9061467d565b8015610d395780601f10610d0e57610100808354040283529160200191610d39565b820191906000526020600020905b815481529060010190602001808311610d1c57829003601f168201915b5050505050905090565b6000610d57610d5061277b565b8484612783565b6001905092915050565b610d6961277b565b73ffffffffffffffffffffffffffffffffffffffff16610d87611b93565b73ffffffffffffffffffffffffffffffffffffffff1614610ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd4906146fa565b60405180910390fd5b60005b8251811015610e6d5781601c6000858481518110610e0157610e0061471a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e6590614778565b915050610de0565b505050565b610e7a61277b565b73ffffffffffffffffffffffffffffffffffffffff16610e98611b93565b73ffffffffffffffffffffffffffffffffffffffff1614610eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee5906146fa565b60405180910390fd5b80828486610efc91906147c0565b610f0691906147c0565b610f1091906147c0565b601b81905550601e601b541115610f5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5390614840565b60405180910390fd5b60405180608001604052808581526020018481526020018381526020018281525060166000820151816000015560208201518160010155604082015181600201556060820151816003015590505050505050565b610fb861277b565b73ffffffffffffffffffffffffffffffffffffffff16610fd6611b93565b73ffffffffffffffffffffffffffffffffffffffff161461102c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611023906146fa565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b61105161277b565b73ffffffffffffffffffffffffffffffffffffffff1661106f611b93565b73ffffffffffffffffffffffffffffffffffffffff16146110c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bc906146fa565b60405180910390fd5b60005b82518110156111555781601d60008584815181106110e9576110e861471a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061114d90614778565b9150506110c8565b505050565b60085481565b6000600254905090565b61117261277b565b73ffffffffffffffffffffffffffffffffffffffff16611190611b93565b73ffffffffffffffffffffffffffffffffffffffff16146111e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111dd906146fa565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61123261277b565b73ffffffffffffffffffffffffffffffffffffffff16611250611b93565b73ffffffffffffffffffffffffffffffffffffffff16146112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d906146fa565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006112f784848461294c565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061134261277b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156113c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b9906148d2565b60405180910390fd5b6113df856113ce61277b565b85846113da91906148f2565b612783565b60019150509392505050565b600c5481565b60006012905090565b61140261277b565b73ffffffffffffffffffffffffffffffffffffffff16611420611b93565b73ffffffffffffffffffffffffffffffffffffffff1614611476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146d906146fa565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006115736114de61277b565b8484600160006114ec61277b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461156e91906147c0565b612783565b6001905092915050565b61158561277b565b73ffffffffffffffffffffffffffffffffffffffff166115a3611b93565b73ffffffffffffffffffffffffffffffffffffffff16146115f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f0906146fa565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61168761277b565b73ffffffffffffffffffffffffffffffffffffffff166116a5611b93565b73ffffffffffffffffffffffffffffffffffffffff16146116fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f2906146fa565b60405180910390fd5b6117036113f1565b600a61170f9190614a59565b8161171a9190614aa4565b60088190555050565b600760169054906101000a900460ff1681565b61173e61277b565b73ffffffffffffffffffffffffffffffffffffffff1661175c611b93565b73ffffffffffffffffffffffffffffffffffffffff16146117b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a9906146fa565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a5481565b600b5481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b61184d61277b565b73ffffffffffffffffffffffffffffffffffffffff1661186b611b93565b73ffffffffffffffffffffffffffffffffffffffff16146118c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b8906146fa565b60405180910390fd5b8051825114611905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fc90614b4a565b60405180910390fd5b60005b825181101561196357611950338483815181106119285761192761471a565b5b60200260200101518484815181106119435761194261471a565b5b60200260200101516133b9565b808061195b90614778565b915050611908565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6119b861277b565b73ffffffffffffffffffffffffffffffffffffffff166119d6611b93565b73ffffffffffffffffffffffffffffffffffffffff1614611a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a23906146fa565b60405180910390fd5b611a366000613636565b565b60128060000154908060010154908060020154908060030154905084565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a5481565b61dead81565b611a9061277b565b73ffffffffffffffffffffffffffffffffffffffff16611aae611b93565b73ffffffffffffffffffffffffffffffffffffffff1614611b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afb906146fa565b60405180910390fd5b600760169054906101000a900460ff1615611b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4b90614bb6565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600c81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611beb61277b565b73ffffffffffffffffffffffffffffffffffffffff16611c09611b93565b73ffffffffffffffffffffffffffffffffffffffff1614611c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c56906146fa565b60405180910390fd5b80828486611c6d91906147c0565b611c7791906147c0565b611c8191906147c0565b601a81905550600f601a541115611ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc490614c22565b60405180910390fd5b60405180608001604052808581526020018481526020018381526020018281525060126000820151816000015560208201518160010155604082015181600201556060820151816003015590505050505050565b606060048054611d309061467d565b80601f0160208091040260200160405190810160405280929190818152602001828054611d5c9061467d565b8015611da95780601f10611d7e57610100808354040283529160200191611da9565b820191906000526020600020905b815481529060010190602001808311611d8c57829003601f168201915b5050505050905090565b60008060016000611dc261277b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7690614cb4565b60405180910390fd5b611e9c611e8a61277b565b858584611e9791906148f2565b612783565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611eda33848461294c565b6001905092915050565b611eec61277b565b73ffffffffffffffffffffffffffffffffffffffff16611f0a611b93565b73ffffffffffffffffffffffffffffffffffffffff1614611f60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f57906146fa565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c6020528060005260406000206000915054906101000a900460ff1681565b60205481565b601b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61205f61277b565b73ffffffffffffffffffffffffffffffffffffffff1661207d611b93565b73ffffffffffffffffffffffffffffffffffffffff16146120d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ca906146fa565b60405180910390fd5b632122393883101561211a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211190614d46565b60405180910390fd5b6321223938821015612161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215890614dd8565b60405180910390fd5b64014b563c308110156121a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a090614e6a565b60405180910390fd5b6121b16113f1565b600a6121bd9190614a59565b836121c89190614aa4565b6009819055506121d66113f1565b600a6121e29190614a59565b826121ed9190614aa4565b600a819055506121fb6113f1565b600a6122079190614a59565b816122129190614aa4565b600b81905550505050565b61222561277b565b73ffffffffffffffffffffffffffffffffffffffff16612243611b93565b73ffffffffffffffffffffffffffffffffffffffff1614612299576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612290906146fa565b60405180910390fd5b6001816122a69190614aa4565b60208190555081601f60006101000a81548160ff021916908315150217905550603c81111561230a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230190614efc565b60405180910390fd5b5050565b61231661277b565b73ffffffffffffffffffffffffffffffffffffffff16612334611b93565b73ffffffffffffffffffffffffffffffffffffffff161461238a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612381906146fa565b60405180910390fd5b600760169054906101000a900460ff16156123da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d190614f8e565b60405180910390fd5b6005811061241d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241490614ffa565b60405180910390fd5b80600d8190555050565b601f60009054906101000a900460ff1681565b61244261277b565b73ffffffffffffffffffffffffffffffffffffffff16612460611b93565b73ffffffffffffffffffffffffffffffffffffffff16146124b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ad906146fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251c9061508c565b60405180910390fd5b61252e81613636565b50565b60168060000154908060010154908060020154908060030154905084565b61255761277b565b73ffffffffffffffffffffffffffffffffffffffff16612575611b93565b73ffffffffffffffffffffffffffffffffffffffff16146125cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c2906146fa565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6125ef611b93565b836040518363ffffffff1660e01b815260040161260d9291906150ac565b6020604051808303816000875af115801561262c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265091906150ea565b505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61268361277b565b73ffffffffffffffffffffffffffffffffffffffff166126a1611b93565b73ffffffffffffffffffffffffffffffffffffffff16146126f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ee906146fa565b60405180910390fd5b6126ff611b93565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612744573d6000803e3d6000fd5b5050565b600760159054906101000a900460ff1681565b601d6020528060005260406000206000915054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e990615189565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612861576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128589061521b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161293f9190614218565b60405180910390a3505050565b6000811161298f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612986906152ad565b60405180910390fd5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612a335750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6990615319565b60405180910390fd5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b165750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b6b57600760169054906101000a900460ff16612b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6190615385565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612c125750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c2b5750600760149054906101000a900460ff16155b15612cce57600954811115612c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6c906153f1565b60405180910390fd5b600b5481612c8284611968565b612c8c91906147c0565b1115612ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc49061545d565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612d765750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612dcc5750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612de55750600760149054906101000a900460ff16155b15612fcd57600a54811115612e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e26906154c9565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612edd57600b5481612e9184611968565b612e9b91906147c0565b1115612edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed39061545d565b60405180910390fd5b5b601f60009054906101000a900460ff1615612fcc576000601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442612f3f91906148f2565b9050602054811015612f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7d90615535565b60405180910390fd5b42601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b5b6000806000612fda613dad565b6000601c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130805750601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561309a5750600d54600c5461309791906147c0565b43105b9050600760149054906101000a900460ff16806131005750601c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806131545750601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561316257600092506132c9565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161480156131bd575080155b15613239576016600301546016600101546016600001546016600201546131e491906147c0565b6131ee91906147c0565b6131f891906147c0565b9450849350601660405180608001604052908160008201548152602001600182015481526020016002820154815260200160038201548152505091506132c8565b806132b55760126003015460126001015460126000015460126002015461326091906147c0565b61326a91906147c0565b61327491906147c0565b9450849350601260405180608001604052908160008201548152602001600182015481526020016002820154815260200160038201548152505091506132c7565b80156132c657600e549450600e5493505b5b5b5b606484876132d79190614aa4565b6132e19190615584565b9250600760159054906101000a900460ff16801561334d5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b1561335d5761335c85836136fc565b5b6133738888858961336e91906148f2565b6133b9565b60008311156133af5760008511156133ae576000606486886133959190614aa4565b61339f9190615584565b90506133ac8930836133b9565b505b5b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161341f90615627565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161348e906156b9565b60405180910390fd5b6134a283838361398c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161351f9061574b565b60405180910390fd5b818161353491906148f2565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546135c491906147c0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516136289190614218565b60405180910390a350505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16613988576001600760146101000a81548160ff021916908315150217905550600082031561396c57600061373f30611968565b9050600854811061396a576001600854111561375b5760085490505b600060028461376a9190614aa4565b905060008184604001518461377f9190614aa4565b6137899190615584565b90506000818461379991906148f2565b905060004790506137a982613991565b600081476137b791906148f2565b905060008760400151866137cb91906148f2565b826137d69190615584565b905060008860400151826137ea9190614aa4565b90506000811115613800576137ff8682613bd4565b5b600089600001516002846138149190614aa4565b61381e9190614aa4565b905060008111156138755761387481600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613cb990919063ffffffff16565b5b60008a602001516002856138899190614aa4565b6138939190614aa4565b905060008111156138ea576138e981601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613cb990919063ffffffff16565b5b60008b606001516002866138fe9190614aa4565b6139089190614aa4565b9050600081111561395f5761395e81601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613cb990919063ffffffff16565b5b505050505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b505050565b6000600267ffffffffffffffff8111156139ae576139ad613faa565b5b6040519080825280602002602001820160405280156139dc5781602001602082028036833780820191505090505b50905030816000815181106139f4576139f361471a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634ed154606040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613abf9190615780565b81600181518110613ad357613ad261471a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613b3a30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612783565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b43d9bbb8360008430426040518663ffffffff1660e01b8152600401613b9e9594939291906158a6565b600060405180830381600087803b158015613bb857600080fd5b505af1158015613bcc573d6000803e3d6000fd5b505050505050565b613c0130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612783565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6529ab4823085600080613c4d611b93565b426040518863ffffffff1660e01b8152600401613c6f96959493929190615900565b60606040518083038185885af1158015613c8d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613cb29190615976565b5050505050565b80471015613cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cf390615a15565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051613d2290615a66565b60006040518083038185875af1925050503d8060008114613d5f576040519150601f19603f3d011682016040523d82523d6000602084013e613d64565b606091505b5050905080613da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d9f90615aed565b60405180910390fd5b505050565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613e0f578082015181840152602081019050613df4565b60008484015250505050565b6000601f19601f8301169050919050565b6000613e3782613dd5565b613e418185613de0565b9350613e51818560208601613df1565b613e5a81613e1b565b840191505092915050565b60006020820190508181036000830152613e7f8184613e2c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613ec682613e9b565b9050919050565b613ed681613ebb565b8114613ee157600080fd5b50565b600081359050613ef381613ecd565b92915050565b6000819050919050565b613f0c81613ef9565b8114613f1757600080fd5b50565b600081359050613f2981613f03565b92915050565b60008060408385031215613f4657613f45613e91565b5b6000613f5485828601613ee4565b9250506020613f6585828601613f1a565b9150509250929050565b60008115159050919050565b613f8481613f6f565b82525050565b6000602082019050613f9f6000830184613f7b565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613fe282613e1b565b810181811067ffffffffffffffff8211171561400157614000613faa565b5b80604052505050565b6000614014613e87565b90506140208282613fd9565b919050565b600067ffffffffffffffff8211156140405761403f613faa565b5b602082029050602081019050919050565b600080fd5b600061406961406484614025565b61400a565b9050808382526020820190506020840283018581111561408c5761408b614051565b5b835b818110156140b557806140a18882613ee4565b84526020840193505060208101905061408e565b5050509392505050565b600082601f8301126140d4576140d3613fa5565b5b81356140e4848260208601614056565b91505092915050565b6140f681613f6f565b811461410157600080fd5b50565b600081359050614113816140ed565b92915050565b600080604083850312156141305761412f613e91565b5b600083013567ffffffffffffffff81111561414e5761414d613e96565b5b61415a858286016140bf565b925050602061416b85828601614104565b9150509250929050565b6000806000806080858703121561418f5761418e613e91565b5b600061419d87828801613f1a565b94505060206141ae87828801613f1a565b93505060406141bf87828801613f1a565b92505060606141d087828801613f1a565b91505092959194509250565b6000602082840312156141f2576141f1613e91565b5b600061420084828501614104565b91505092915050565b61421281613ef9565b82525050565b600060208201905061422d6000830184614209565b92915050565b60006020828403121561424957614248613e91565b5b600061425784828501613ee4565b91505092915050565b60008060006060848603121561427957614278613e91565b5b600061428786828701613ee4565b935050602061429886828701613ee4565b92505060406142a986828701613f1a565b9150509250925092565b600060ff82169050919050565b6142c9816142b3565b82525050565b60006020820190506142e460008301846142c0565b92915050565b6000806040838503121561430157614300613e91565b5b600061430f85828601613ee4565b925050602061432085828601614104565b9150509250929050565b6000806040838503121561434157614340613e91565b5b600061434f85828601613ee4565b925050602061436085828601613ee4565b9150509250929050565b6000602082840312156143805761437f613e91565b5b600061438e84828501613f1a565b91505092915050565b6143a081613ebb565b82525050565b60006020820190506143bb6000830184614397565b92915050565b600067ffffffffffffffff8211156143dc576143db613faa565b5b602082029050602081019050919050565b60006144006143fb846143c1565b61400a565b9050808382526020820190506020840283018581111561442357614422614051565b5b835b8181101561444c57806144388882613f1a565b845260208401935050602081019050614425565b5050509392505050565b600082601f83011261446b5761446a613fa5565b5b813561447b8482602086016143ed565b91505092915050565b6000806040838503121561449b5761449a613e91565b5b600083013567ffffffffffffffff8111156144b9576144b8613e96565b5b6144c5858286016140bf565b925050602083013567ffffffffffffffff8111156144e6576144e5613e96565b5b6144f285828601614456565b9150509250929050565b60006080820190506145116000830187614209565b61451e6020830186614209565b61452b6040830185614209565b6145386060830184614209565b95945050505050565b60008060006060848603121561455a57614559613e91565b5b600061456886828701613f1a565b935050602061457986828701613f1a565b925050604061458a86828701613f1a565b9150509250925092565b600080604083850312156145ab576145aa613e91565b5b60006145b985828601614104565b92505060206145ca85828601613f1a565b9150509250929050565b6000819050919050565b60006145f96145f46145ef84613e9b565b6145d4565b613e9b565b9050919050565b600061460b826145de565b9050919050565b600061461d82614600565b9050919050565b61462d81614612565b82525050565b60006020820190506146486000830184614624565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061469557607f821691505b6020821081036146a8576146a761464e565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146e4602083613de0565b91506146ef826146ae565b602082019050919050565b60006020820190508181036000830152614713816146d7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061478382613ef9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036147b5576147b4614749565b5b600182019050919050565b60006147cb82613ef9565b91506147d683613ef9565b92508282019050808211156147ee576147ed614749565b5b92915050565b7f4d757374206b656570206665657320617420333025206f72206c657373000000600082015250565b600061482a601d83613de0565b9150614835826147f4565b602082019050919050565b600060208201905081810360008301526148598161481d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006148bc602883613de0565b91506148c782614860565b604082019050919050565b600060208201905081810360008301526148eb816148af565b9050919050565b60006148fd82613ef9565b915061490883613ef9565b92508282039050818111156149205761491f614749565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111561497d5780860481111561495957614958614749565b5b60018516156149685780820291505b808102905061497685614926565b945061493d565b94509492505050565b6000826149965760019050614a52565b816149a45760009050614a52565b81600181146149ba57600281146149c4576149f3565b6001915050614a52565b60ff8411156149d6576149d5614749565b5b8360020a9150848211156149ed576149ec614749565b5b50614a52565b5060208310610133831016604e8410600b8410161715614a285782820a905083811115614a2357614a22614749565b5b614a52565b614a358484846001614933565b92509050818404811115614a4c57614a4b614749565b5b81810290505b9392505050565b6000614a6482613ef9565b9150614a6f836142b3565b9250614a9c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614986565b905092915050565b6000614aaf82613ef9565b9150614aba83613ef9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614af357614af2614749565b5b828202905092915050565b7f417272617973206d75737420686176652073616d652073697a65000000000000600082015250565b6000614b34601a83613de0565b9150614b3f82614afe565b602082019050919050565b60006020820190508181036000830152614b6381614b27565b9050919050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b6000614ba0601a83613de0565b9150614bab82614b6a565b602082019050919050565b60006020820190508181036000830152614bcf81614b93565b9050919050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b6000614c0c601d83613de0565b9150614c1782614bd6565b602082019050919050565b60006020820190508181036000830152614c3b81614bff565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614c9e602583613de0565b9150614ca982614c42565b604082019050919050565b60006020820190508181036000830152614ccd81614c91565b9050919050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614d30602983613de0565b9150614d3b82614cd4565b604082019050919050565b60006020820190508181036000830152614d5f81614d23565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b6000614dc2602a83613de0565b9150614dcd82614d66565b604082019050919050565b60006020820190508181036000830152614df181614db5565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e31250000000000000000000000000000000000000000602082015250565b6000614e54602c83613de0565b9150614e5f82614df8565b604082019050919050565b60006020820190508181036000830152614e8381614e47565b9050919050565b7f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642031206d60008201527f696e757465730000000000000000000000000000000000000000000000000000602082015250565b6000614ee6602683613de0565b9150614ef182614e8a565b604082019050919050565b60006020820190508181036000830152614f1581614ed9565b9050919050565b7f43616e2774206368616e6765207768656e2074726164696e672068617320737460008201527f6172746564000000000000000000000000000000000000000000000000000000602082015250565b6000614f78602583613de0565b9150614f8382614f1c565b604082019050919050565b60006020820190508181036000830152614fa781614f6b565b9050919050565b7f446561646c696e652073686f756c64206265206c657373207468616e20350000600082015250565b6000614fe4601e83613de0565b9150614fef82614fae565b602082019050919050565b6000602082019050818103600083015261501381614fd7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615076602683613de0565b91506150818261501a565b604082019050919050565b600060208201905081810360008301526150a581615069565b9050919050565b60006040820190506150c16000830185614397565b6150ce6020830184614209565b9392505050565b6000815190506150e4816140ed565b92915050565b600060208284031215615100576150ff613e91565b5b600061510e848285016150d5565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615173602483613de0565b915061517e82615117565b604082019050919050565b600060208201905081810360008301526151a281615166565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615205602283613de0565b9150615210826151a9565b604082019050919050565b60006020820190508181036000830152615234816151f8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000615297602983613de0565b91506152a28261523b565b604082019050919050565b600060208201905081810360008301526152c68161528a565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b6000615303601983613de0565b915061530e826152cd565b602082019050919050565b60006020820190508181036000830152615332816152f6565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b600061536f601383613de0565b915061537a82615339565b602082019050919050565b6000602082019050818103600083015261539e81615362565b9050919050565b7f596f752061726520657863656564696e67206d61784275794c696d6974000000600082015250565b60006153db601d83613de0565b91506153e6826153a5565b602082019050919050565b6000602082019050818103600083015261540a816153ce565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d6974600082015250565b6000615447602083613de0565b915061545282615411565b602082019050919050565b600060208201905081810360008301526154768161543a565b9050919050565b7f596f752061726520657863656564696e67206d617853656c6c4c696d69740000600082015250565b60006154b3601e83613de0565b91506154be8261547d565b602082019050919050565b600060208201905081810360008301526154e2816154a6565b9050919050565b7f436f6f6c646f776e20656e61626c656400000000000000000000000000000000600082015250565b600061551f601083613de0565b915061552a826154e9565b602082019050919050565b6000602082019050818103600083015261554e81615512565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061558f82613ef9565b915061559a83613ef9565b9250826155aa576155a9615555565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000615611602583613de0565b915061561c826155b5565b604082019050919050565b6000602082019050818103600083015261564081615604565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006156a3602383613de0565b91506156ae82615647565b604082019050919050565b600060208201905081810360008301526156d281615696565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615735602683613de0565b9150615740826156d9565b604082019050919050565b6000602082019050818103600083015261576481615728565b9050919050565b60008151905061577a81613ecd565b92915050565b60006020828403121561579657615795613e91565b5b60006157a48482850161576b565b91505092915050565b6000819050919050565b60006157d26157cd6157c8846157ad565b6145d4565b613ef9565b9050919050565b6157e2816157b7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61581d81613ebb565b82525050565b600061582f8383615814565b60208301905092915050565b6000602082019050919050565b6000615853826157e8565b61585d81856157f3565b935061586883615804565b8060005b838110156158995781516158808882615823565b975061588b8361583b565b92505060018101905061586c565b5085935050505092915050565b600060a0820190506158bb6000830188614209565b6158c860208301876157d9565b81810360408301526158da8186615848565b90506158e96060830185614397565b6158f66080830184614209565b9695505050505050565b600060c0820190506159156000830189614397565b6159226020830188614209565b61592f60408301876157d9565b61593c60608301866157d9565b6159496080830185614397565b61595660a0830184614209565b979650505050505050565b60008151905061597081613f03565b92915050565b60008060006060848603121561598f5761598e613e91565b5b600061599d86828701615961565b93505060206159ae86828701615961565b92505060406159bf86828701615961565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006159ff601d83613de0565b9150615a0a826159c9565b602082019050919050565b60006020820190508181036000830152615a2e816159f2565b9050919050565b600081905092915050565b50565b6000615a50600083615a35565b9150615a5b82615a40565b600082019050919050565b6000615a7182615a43565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000615ad7603a83613de0565b9150615ae282615a7b565b604082019050919050565b60006020820190508181036000830152615b0681615aca565b905091905056fea264697066735822122001e2b4bd3e8ec6d81bb9a44ebc8c506ba0f6dd213172420a4a11ef5b9688d0ce64736f6c63430008100033