60806040526040518060400160405280600581526020017f4d6f727469000000000000000000000000000000000000000000000000000000815250600890816200004a919062000e0e565b506040518060400160405280600581526020017f4d4f5254490000000000000000000000000000000000000000000000000000008152506009908162000091919062000e0e565b503480156200009f57600080fd5b5060405162004015380380620040158339818101604052810190620000c5919062000f90565b3360088054620000d59062000bfd565b80601f0160208091040260200160405190810160405280929190818152602001828054620001039062000bfd565b8015620001545780601f10620001285761010080835404028352916020019162000154565b820191906000526020600020905b8154815290600101906020018083116200013657829003601f168201915b505050505060098054620001689062000bfd565b80601f0160208091040260200160405190810160405280929190818152602001828054620001969062000bfd565b8015620001e75780601f10620001bb57610100808354040283529160200191620001e7565b820191906000526020600020905b815481529060010190602001808311620001c957829003601f168201915b505050505033848360039081620001ff919062000e0e565b50826004908162000211919062000e0e565b5081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200030d5760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040162000304919062000fe8565b60405180910390fd5b6200031e816200039160201b60201c565b506200033133836200045760201b60201c565b6001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050620011f5565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004cc5760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401620004c3919062000fe8565b60405180910390fd5b620004e060008383620004e460201b60201c565b5050565b600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161562000550576200054a8383836200074960201b60201c565b62000744565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015620005f55750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b62000637576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200062e9062001066565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603620006ad57620006a68484846200074960201b60201c565b5062000744565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200072f57620007168484846200074960201b60201c565b62000728600162000b4560201b60201c565b5062000744565b620007428484846200074960201b60201c565b505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200079f578060026000828254620007929190620010b7565b9250508190555062000875565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156200082e578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620008259392919062001103565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008c057806002600082825403925050819055506200090d565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009f257600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009e4919062001140565b60405180910390a362000b40565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000ad7578173ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000ac9919062001140565b60405180910390a362000b3f565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b36919062001140565b60405180910390a35b5b505050565b60003a90508181111562000b90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b8790620011d3565b60405180910390fd5b5050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c1657607f821691505b60208210810362000c2c5762000c2b62000bce565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c57565b62000ca2868362000c57565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000cef62000ce962000ce38462000cba565b62000cc4565b62000cba565b9050919050565b6000819050919050565b62000d0b8362000cce565b62000d2362000d1a8262000cf6565b84845462000c64565b825550505050565b600090565b62000d3a62000d2b565b62000d4781848462000d00565b505050565b5b8181101562000d6f5762000d6360008262000d30565b60018101905062000d4d565b5050565b601f82111562000dbe5762000d888162000c32565b62000d938462000c47565b8101602085101562000da3578190505b62000dbb62000db28562000c47565b83018262000d4c565b50505b505050565b600082821c905092915050565b600062000de36000198460080262000dc3565b1980831691505092915050565b600062000dfe838362000dd0565b9150826002028217905092915050565b62000e198262000b94565b67ffffffffffffffff81111562000e355762000e3462000b9f565b5b62000e41825462000bfd565b62000e4e82828562000d73565b600060209050601f83116001811462000e86576000841562000e71578287015190505b62000e7d858262000df0565b86555062000eed565b601f19841662000e968662000c32565b60005b8281101562000ec05784890151825560018201915060208501945060208101905062000e99565b8683101562000ee0578489015162000edc601f89168262000dd0565b8355505b6001600288020188555050505b505050505050565b600080fd5b62000f058162000cba565b811462000f1157600080fd5b50565b60008151905062000f258162000efa565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f588262000f2b565b9050919050565b62000f6a8162000f4b565b811462000f7657600080fd5b50565b60008151905062000f8a8162000f5f565b92915050565b6000806040838503121562000faa5762000fa962000ef5565b5b600062000fba8582860162000f14565b925050602062000fcd8582860162000f79565b9150509250929050565b62000fe28162000f4b565b82525050565b600060208201905062000fff600083018462000fd7565b92915050565b600082825260208201905092915050565b7f4e65656420746f20686f6c6420666f72206b656570206c697175696469747900600082015250565b60006200104e601f8362001005565b91506200105b8262001016565b602082019050919050565b6000602082019050818103600083015262001081816200103f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620010c48262000cba565b9150620010d18362000cba565b9250828201905080821115620010ec57620010eb62001088565b5b92915050565b620010fd8162000cba565b82525050565b60006060820190506200111a600083018662000fd7565b620011296020830185620010f2565b620011386040830184620010f2565b949350505050565b6000602082019050620011576000830184620010f2565b92915050565b7f4e65656420746f206f7074696d697a6520676173207072696365207768656e2060008201527f73656e6420747800000000000000000000000000000000000000000000000000602082015250565b6000620011bb60278362001005565b9150620011c8826200115d565b604082019050919050565b60006020820190508181036000830152620011ee81620011ac565b9050919050565b612e1080620012056000396000f3fe608060405234801561001057600080fd5b506004361061023d5760003560e01c80636c02a9311161013b578063a9059cbb116100b8578063daea85c51161007c578063daea85c51461064a578063dd62ed3e14610666578063e086e5ec14610696578063efc21e3f146106a0578063f2fde38b146106be5761023d565b8063a9059cbb146105a4578063aac03939146105d4578063b839a80e146105f2578063cc1776d31461060e578063cc2b78581461062c5761023d565b80638ba4cc3c116100ff5780638ba4cc3c146105245780638da5cb5b1461054057806395d89b411461055e5780639e78fb4f1461057c5780639f5fa028146105865761023d565b80636c02a9311461049257806370a08231146104b0578063715018a6146104e057806379c65068146104ea5780637b61c320146105065761023d565b806323b872dd116101c95780634c97f4721161018d5780634c97f472146104005780634f7041a51461041c578063564b81ef1461043a578063593ed58c1461045857806362256589146104885761023d565b806323b872dd1461035a5780632711b8a51461038a578063313ce567146103a85780633de4b85c146103c65780634022b75e146103e45761023d565b8063109daa9911610210578063109daa99146102c857806311894780146102d25780631641f1ba146102f057806318160ddd1461030c5780631e7be2101461032a5761023d565b8063068acf6c1461024257806306fdde031461025e57806307980cb91461027c578063095ea7b314610298575b600080fd5b61025c60048036038101906102579190612125565b6106da565b005b6102666107e3565b60405161027391906121e2565b60405180910390f35b61029660048036038101906102919190612125565b610875565b005b6102b260048036038101906102ad919061223a565b6108c1565b6040516102bf9190612295565b60405180910390f35b6102d06108e4565b005b6102da61092a565b6040516102e791906122bf565b60405180910390f35b61030a600480360381019061030591906122da565b610931565b005b610314610973565b60405161032191906122bf565b60405180910390f35b610344600480360381019061033f9190612125565b61097d565b6040516103519190612295565b60405180910390f35b610374600480360381019061036f9190612307565b61099d565b6040516103819190612295565b60405180910390f35b6103926109cc565b60405161039f91906122bf565b60405180910390f35b6103b06109d5565b6040516103bd9190612376565b60405180910390f35b6103ce6109de565b6040516103db91906122bf565b60405180910390f35b6103fe60048036038101906103f9919061259c565b6109e4565b005b61041a600480360381019061041591906126dc565b610aaa565b005b610424610ad6565b60405161043191906122bf565b60405180910390f35b610442610adc565b60405161044f91906122bf565b60405180910390f35b610472600480360381019061046d91906122da565b610ae9565b60405161047f9190612763565b60405180910390f35b610490610b1c565b005b61049a610b62565b6040516104a791906121e2565b60405180910390f35b6104ca60048036038101906104c59190612125565b610bf0565b6040516104d791906122bf565b60405180910390f35b6104e8610c38565b005b61050460048036038101906104ff919061223a565b610ca4565b005b61050e610d1a565b60405161051b91906121e2565b60405180910390f35b61053e6004803603810190610539919061223a565b610da8565b005b610548610e1e565b6040516105559190612763565b60405180910390f35b610566610e48565b60405161057391906121e2565b60405180910390f35b610584610eda565b005b61058e611118565b60405161059b91906122bf565b60405180910390f35b6105be60048036038101906105b9919061223a565b61111d565b6040516105cb9190612295565b60405180910390f35b6105dc611140565b6040516105e99190612763565b60405180910390f35b61060c600480360381019061060791906122da565b611166565b005b6106166111a8565b60405161062391906122bf565b60405180910390f35b6106346111ae565b60405161064191906122bf565b60405180910390f35b610664600480360381019061065f9190612125565b6111b4565b005b610680600480360381019061067b919061277e565b611217565b60405161068d91906122bf565b60405180910390f35b61069e61129e565b005b6106a86112ef565b6040516106b591906122bf565b60405180910390f35b6106d860048036038101906106d39190612125565b6112f5565b005b6106e261137b565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161071d9190612763565b602060405180830381865afa15801561073a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075e91906127d3565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161079b929190612800565b6020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de9190612855565b505050565b6060600880546107f2906128b1565b80601f016020809104026020016040519081016040528092919081815260200182805461081e906128b1565b801561086b5780601f106108405761010080835404028352916020019161086b565b820191906000526020600020905b81548152906001019060200180831161084e57829003601f168201915b5050505050905090565b61087d61137b565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806108cc611402565b90506108d981858561140a565b600191505092915050565b6108ec61137b565b6000600d819055506000600c819055507f80de050b85d3a75cad8a3df5e178576f5df5879cad768c7b5600fa00770f2c7c60405160405180910390a1565b62013e3181565b61093961137b565b7fd3b613dda5c9cdfd44a8f58e5198dec35a31f7f9d39dec2fd6b532e47989c7b98160405161096891906122bf565b60405180910390a150565b6000600254905090565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000806109a8611402565b90506109b585828561141c565b6109c08585856114b0565b60019150509392505050565b60006001905090565b60006012905090565b61a86a81565b6109ec61137b565b60005b8251811015610aa457828181518110610a0b57610a0a6128e2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef848481518110610a7457610a736128e2565b5b6020026020010151604051610a8991906122bf565b60405180910390a38080610a9c90612940565b9150506109ef565b50505050565b610ab261137b565b8160089081610ac19190612b34565b508060099081610ad19190612b34565b505050565b600d5481565b6000804690508091505090565b600e6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b2461137b565b6000600d819055506000600c819055507f2d53e1bd10978dd02f36cd1d3680151195d9f7358e0c867bc753abecafb55e4360405160405180910390a1565b60088054610b6f906128b1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9b906128b1565b8015610be85780601f10610bbd57610100808354040283529160200191610be8565b820191906000526020600020905b815481529060010190602001808311610bcb57829003601f168201915b505050505081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c4061137b565b600073ffffffffffffffffffffffffffffffffffffffff16610c60610e1e565b73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b610cac61137b565b610cbe610cb7610e1e565b83836114b0565b6001600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60098054610d27906128b1565b80601f0160208091040260200160405190810160405280929190818152602001828054610d53906128b1565b8015610da05780601f10610d7557610100808354040283529160200191610da0565b820191906000526020600020905b815481529060010190602001808311610d8357829003601f168201915b505050505081565b610db061137b565b610dc2610dbb610e1e565b83836114b0565b6001600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060098054610e57906128b1565b80601f0160208091040260200160405190810160405280929190818152602001828054610e83906128b1565b8015610ed05780601f10610ea557610100808354040283529160200191610ed0565b820191906000526020600020905b815481529060010190602001808311610eb357829003601f168201915b5050505050905090565b610ee261137b565b610eea6115a4565b6000610ef4610adc565b9050600080600e600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061a86a8303610fae578073ffffffffffffffffffffffffffffffffffffffff166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa79190612c1b565b9150611020565b8073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d9190612c1b565b91505b60008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561106d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110919190612c1b565b90508073ffffffffffffffffffffffffffffffffffffffff1663c9c6539630856040518363ffffffff1660e01b81526004016110ce929190612c48565b6020604051808303816000875af11580156110ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111119190612c1b565b5050505050565b600181565b600080611128611402565b90506111358185856114b0565b600191505092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61116e61137b565b7f0d61b965947cabd8d137e76c38fd92e63d79b181830e0918b69794938355febd8160405161119d91906122bf565b60405180910390a150565b600c5481565b61a4b181565b6111bc61137b565b6001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112a661137b565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156112ec573d6000803e3d6000fd5b50565b61210581565b6112fd61137b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361136f5760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016113669190612763565b60405180910390fd5b611378816117ae565b50565b611383611402565b73ffffffffffffffffffffffffffffffffffffffff166113a1610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614611400576113c4611402565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016113f79190612763565b60405180910390fd5b565b600033905090565b6114178383836001611874565b505050565b60006114288484611217565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146114aa578181101561149a578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161149193929190612c71565b60405180910390fd5b6114a984848484036000611874565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115225760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016115199190612763565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115945760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161158b9190612763565b60405180910390fd5b61159f838383611a4b565b505050565b73f164fc0ec4e93095b804a4795bbe1e041497b92a600e60006001815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734752ba5dbc23f44d87826276bf6fd6b1c372ad24600e6000612105815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507360ae616a2155ee3d9a68541ba4544862310933d4600e600061a86a815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507398994a9a7a2570367554589189dc9772241650f6600e600062013e31815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734752ba5dbc23f44d87826276bf6fd6b1c372ad24600e600061a4b1815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036118e65760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016118dd9190612763565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119585760006040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161194f9190612763565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015611a45578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611a3c91906122bf565b60405180910390a35b50505050565b600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611aad57611aa8838383611c7e565b611c79565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b515750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8790612cf4565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611bfc57611bf6848484611c7e565b50611c79565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c6c57611c5c848484611c7e565b611c666001612067565b50611c79565b611c77848484611c7e565b505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cd0578060026000828254611cc49190612d14565b92505081905550611da3565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611d5c578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611d5393929190612c71565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611dec5780600260008282540392505081905550611e39565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f1a57600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f0d91906122bf565b60405180910390a3612062565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ffb578173ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fee91906122bf565b60405180910390a3612061565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161205891906122bf565b60405180910390a35b5b505050565b60003a9050818111156120af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a690612dba565b60405180910390fd5b5050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120f2826120c7565b9050919050565b612102816120e7565b811461210d57600080fd5b50565b60008135905061211f816120f9565b92915050565b60006020828403121561213b5761213a6120bd565b5b600061214984828501612110565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561218c578082015181840152602081019050612171565b60008484015250505050565b6000601f19601f8301169050919050565b60006121b482612152565b6121be818561215d565b93506121ce81856020860161216e565b6121d781612198565b840191505092915050565b600060208201905081810360008301526121fc81846121a9565b905092915050565b6000819050919050565b61221781612204565b811461222257600080fd5b50565b6000813590506122348161220e565b92915050565b60008060408385031215612251576122506120bd565b5b600061225f85828601612110565b925050602061227085828601612225565b9150509250929050565b60008115159050919050565b61228f8161227a565b82525050565b60006020820190506122aa6000830184612286565b92915050565b6122b981612204565b82525050565b60006020820190506122d460008301846122b0565b92915050565b6000602082840312156122f0576122ef6120bd565b5b60006122fe84828501612225565b91505092915050565b6000806000606084860312156123205761231f6120bd565b5b600061232e86828701612110565b935050602061233f86828701612110565b925050604061235086828701612225565b9150509250925092565b600060ff82169050919050565b6123708161235a565b82525050565b600060208201905061238b6000830184612367565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6123ce82612198565b810181811067ffffffffffffffff821117156123ed576123ec612396565b5b80604052505050565b60006124006120b3565b905061240c82826123c5565b919050565b600067ffffffffffffffff82111561242c5761242b612396565b5b602082029050602081019050919050565b600080fd5b600061245561245084612411565b6123f6565b905080838252602082019050602084028301858111156124785761247761243d565b5b835b818110156124a1578061248d8882612110565b84526020840193505060208101905061247a565b5050509392505050565b600082601f8301126124c0576124bf612391565b5b81356124d0848260208601612442565b91505092915050565b600067ffffffffffffffff8211156124f4576124f3612396565b5b602082029050602081019050919050565b6000612518612513846124d9565b6123f6565b9050808382526020820190506020840283018581111561253b5761253a61243d565b5b835b8181101561256457806125508882612225565b84526020840193505060208101905061253d565b5050509392505050565b600082601f83011261258357612582612391565b5b8135612593848260208601612505565b91505092915050565b6000806000606084860312156125b5576125b46120bd565b5b60006125c386828701612110565b935050602084013567ffffffffffffffff8111156125e4576125e36120c2565b5b6125f0868287016124ab565b925050604084013567ffffffffffffffff811115612611576126106120c2565b5b61261d8682870161256e565b9150509250925092565b600080fd5b600067ffffffffffffffff82111561264757612646612396565b5b61265082612198565b9050602081019050919050565b82818337600083830152505050565b600061267f61267a8461262c565b6123f6565b90508281526020810184848401111561269b5761269a612627565b5b6126a684828561265d565b509392505050565b600082601f8301126126c3576126c2612391565b5b81356126d384826020860161266c565b91505092915050565b600080604083850312156126f3576126f26120bd565b5b600083013567ffffffffffffffff811115612711576127106120c2565b5b61271d858286016126ae565b925050602083013567ffffffffffffffff81111561273e5761273d6120c2565b5b61274a858286016126ae565b9150509250929050565b61275d816120e7565b82525050565b60006020820190506127786000830184612754565b92915050565b60008060408385031215612795576127946120bd565b5b60006127a385828601612110565b92505060206127b485828601612110565b9150509250929050565b6000815190506127cd8161220e565b92915050565b6000602082840312156127e9576127e86120bd565b5b60006127f7848285016127be565b91505092915050565b60006040820190506128156000830185612754565b61282260208301846122b0565b9392505050565b6128328161227a565b811461283d57600080fd5b50565b60008151905061284f81612829565b92915050565b60006020828403121561286b5761286a6120bd565b5b600061287984828501612840565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806128c957607f821691505b6020821081036128dc576128db612882565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061294b82612204565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361297d5761297c612911565b5b600182019050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026129ea7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826129ad565b6129f486836129ad565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612a31612a2c612a2784612204565b612a0c565b612204565b9050919050565b6000819050919050565b612a4b83612a16565b612a5f612a5782612a38565b8484546129ba565b825550505050565b600090565b612a74612a67565b612a7f818484612a42565b505050565b5b81811015612aa357612a98600082612a6c565b600181019050612a85565b5050565b601f821115612ae857612ab981612988565b612ac28461299d565b81016020851015612ad1578190505b612ae5612add8561299d565b830182612a84565b50505b505050565b600082821c905092915050565b6000612b0b60001984600802612aed565b1980831691505092915050565b6000612b248383612afa565b9150826002028217905092915050565b612b3d82612152565b67ffffffffffffffff811115612b5657612b55612396565b5b612b6082546128b1565b612b6b828285612aa7565b600060209050601f831160018114612b9e5760008415612b8c578287015190505b612b968582612b18565b865550612bfe565b601f198416612bac86612988565b60005b82811015612bd457848901518255600182019150602085019450602081019050612baf565b86831015612bf15784890151612bed601f891682612afa565b8355505b6001600288020188555050505b505050505050565b600081519050612c15816120f9565b92915050565b600060208284031215612c3157612c306120bd565b5b6000612c3f84828501612c06565b91505092915050565b6000604082019050612c5d6000830185612754565b612c6a6020830184612754565b9392505050565b6000606082019050612c866000830186612754565b612c9360208301856122b0565b612ca060408301846122b0565b949350505050565b7f4e65656420746f20686f6c6420666f72206b656570206c697175696469747900600082015250565b6000612cde601f8361215d565b9150612ce982612ca8565b602082019050919050565b60006020820190508181036000830152612d0d81612cd1565b9050919050565b6000612d1f82612204565b9150612d2a83612204565b9250828201905080821115612d4257612d41612911565b5b92915050565b7f4e65656420746f206f7074696d697a6520676173207072696365207768656e2060008201527f73656e6420747800000000000000000000000000000000000000000000000000602082015250565b6000612da460278361215d565b9150612daf82612d48565b604082019050919050565b60006020820190508181036000830152612dd381612d97565b905091905056fea2646970667358221220fe2d2713478d2a7526c35b7200aec1b61329bc2eaa55f0fb8c89c576cf34a4a164736f6c634300081300330000000000000000000000000000000000000000033b2e3c9fd0803ce8000000000000000000000000000000f939e2a792cb633c1a7c7386eb5a985d0d411efc