60806040526040518060400160405280600681526020017f47686f7374790000000000000000000000000000000000000000000000000000815250600190816200004a919062000b08565b506040518060400160405280600681526020017f47686f73747900000000000000000000000000000000000000000000000000008152506002908162000091919062000b08565b506009600a620000a2919062000d7f565b6305f5e100620000b3919062000dd0565b600355606480600354620000c8919062000dd0565b620000d4919062000e60565b60045560006009556005600a55600954600a54620000f3919062000e98565b600b556064600c556064600d556001601160146101000a81548160ff0219169083151502179055506103e860016003546200012f919062000dd0565b6200013b919062000e60565b6012556064600160035462000151919062000dd0565b6200015d919062000e60565b6013553480156200016d57600080fd5b506040516200452638038062004526833981810160405281019062000193919062000f3d565b6000339050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000309919062000f3d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000392573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b8919062000f3d565b306040518363ffffffff1660e01b8152600401620003d892919062000f80565b6020604051808303816000875af1158015620003f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041e919062000f3d565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600354600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6003546040516200087f919062000fbe565b60405180910390a35062000fdb565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200091057607f821691505b602082108103620009265762000925620008c8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000951565b6200099c868362000951565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620009e9620009e3620009dd84620009b4565b620009be565b620009b4565b9050919050565b6000819050919050565b62000a0583620009c8565b62000a1d62000a1482620009f0565b8484546200095e565b825550505050565b600090565b62000a3462000a25565b62000a41818484620009fa565b505050565b5b8181101562000a695762000a5d60008262000a2a565b60018101905062000a47565b5050565b601f82111562000ab85762000a82816200092c565b62000a8d8462000941565b8101602085101562000a9d578190505b62000ab562000aac8562000941565b83018262000a46565b50505b505050565b600082821c905092915050565b600062000add6000198460080262000abd565b1980831691505092915050565b600062000af8838362000aca565b9150826002028217905092915050565b62000b13826200088e565b67ffffffffffffffff81111562000b2f5762000b2e62000899565b5b62000b3b8254620008f7565b62000b4882828562000a6d565b600060209050601f83116001811462000b80576000841562000b6b578287015190505b62000b77858262000aea565b86555062000be7565b601f19841662000b90866200092c565b60005b8281101562000bba5784890151825560018201915060208501945060208101905062000b93565b8683101562000bda578489015162000bd6601f89168262000aca565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c7d5780860481111562000c555762000c5462000bef565b5b600185161562000c655780820291505b808102905062000c758562000c1e565b945062000c35565b94509492505050565b60008262000c98576001905062000d6b565b8162000ca8576000905062000d6b565b816001811462000cc1576002811462000ccc5762000d02565b600191505062000d6b565b60ff84111562000ce15762000ce062000bef565b5b8360020a91508482111562000cfb5762000cfa62000bef565b5b5062000d6b565b5060208310610133831016604e8410600b841016171562000d3c5782820a90508381111562000d365762000d3562000bef565b5b62000d6b565b62000d4b848484600162000c2b565b9250905081840481111562000d655762000d6462000bef565b5b81810290505b9392505050565b600060ff82169050919050565b600062000d8c82620009b4565b915062000d998362000d72565b925062000dc87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c86565b905092915050565b600062000ddd82620009b4565b915062000dea83620009b4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e265762000e2562000bef565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e6d82620009b4565b915062000e7a83620009b4565b92508262000e8d5762000e8c62000e31565b5b828204905092915050565b600062000ea582620009b4565b915062000eb283620009b4565b925082820190508082111562000ecd5762000ecc62000bef565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f058262000ed8565b9050919050565b62000f178162000ef8565b811462000f2357600080fd5b50565b60008151905062000f378162000f0c565b92915050565b60006020828403121562000f565762000f5562000ed3565b5b600062000f668482850162000f26565b91505092915050565b62000f7a8162000ef8565b82525050565b600060408201905062000f97600083018562000f6f565b62000fa6602083018462000f6f565b9392505050565b62000fb881620009b4565b82525050565b600060208201905062000fd5600083018462000fad565b92915050565b61353b8062000feb6000396000f3fe6080604052600436106101f25760003560e01c8063715018a61161010d578063a9059cbb116100a0578063d08893581161006f578063d0889358146106ec578063dd62ed3e14610715578063e96fada214610752578063f2fde38b1461077d578063f887ea40146107a6576101f9565b8063a9059cbb14610630578063acef1a441461066d578063ca33e64c14610698578063cec10c11146106c3576101f9565b806395d89b41116100dc57806395d89b411461058657806398118cb4146105b1578063a4b45c00146105dc578063a8aa1b3114610605576101f9565b8063715018a6146104f057806373a432bb1461050757806378109e54146105305780638da5cb5b1461055b576101f9565b806323b872dd11610185578063658d4b7f11610154578063658d4b7f146104345780636b67c4df1461045d5780636ddd17131461048857806370a08231146104b3576101f9565b806323b872dd14610364578063313ce567146103a157806344ca19e4146103cc578063571ac8b0146103f7576101f9565b8063180b0d7e116101c1578063180b0d7e146102ba57806318160ddd146102e55780631df4ccfc146103105780632198cf6c1461033b576101f9565b8063012aa912146101fe5780630445b6671461022757806306fdde0314610252578063095ea7b31461027d576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b50610225600480360381019061022091906128cb565b6107d1565b005b34801561023357600080fd5b5061023c610883565b6040516102499190612907565b60405180910390f35b34801561025e57600080fd5b50610267610889565b60405161027491906129b2565b60405180910390f35b34801561028957600080fd5b506102a4600480360381019061029f9190612a32565b61091b565b6040516102b19190612a8d565b60405180910390f35b3480156102c657600080fd5b506102cf610a0d565b6040516102dc9190612907565b60405180910390f35b3480156102f157600080fd5b506102fa610a13565b6040516103079190612907565b60405180910390f35b34801561031c57600080fd5b50610325610a1d565b6040516103329190612907565b60405180910390f35b34801561034757600080fd5b50610362600480360381019061035d9190612ad4565b610a23565b005b34801561037057600080fd5b5061038b60048036038101906103869190612b14565b610b0c565b6040516103989190612a8d565b60405180910390f35b3480156103ad57600080fd5b506103b6610d0c565b6040516103c39190612b83565b60405180910390f35b3480156103d857600080fd5b506103e1610d15565b6040516103ee9190612907565b60405180910390f35b34801561040357600080fd5b5061041e60048036038101906104199190612b9e565b610d1b565b60405161042b9190612a8d565b60405180910390f35b34801561044057600080fd5b5061045b60048036038101906104569190612ad4565b610d4e565b005b34801561046957600080fd5b50610472610e37565b60405161047f9190612907565b60405180910390f35b34801561049457600080fd5b5061049d610e3d565b6040516104aa9190612a8d565b60405180910390f35b3480156104bf57600080fd5b506104da60048036038101906104d59190612b9e565b610e50565b6040516104e79190612907565b60405180910390f35b3480156104fc57600080fd5b50610505610e99565b005b34801561051357600080fd5b5061052e60048036038101906105299190612b9e565b610fe5565b005b34801561053c57600080fd5b50610545611131565b6040516105529190612907565b60405180910390f35b34801561056757600080fd5b50610570611137565b60405161057d9190612bda565b60405180910390f35b34801561059257600080fd5b5061059b611160565b6040516105a891906129b2565b60405180910390f35b3480156105bd57600080fd5b506105c66111f2565b6040516105d39190612907565b60405180910390f35b3480156105e857600080fd5b5061060360048036038101906105fe9190612bf5565b6111f8565b005b34801561061157600080fd5b5061061a61130c565b6040516106279190612bda565b60405180910390f35b34801561063c57600080fd5b5061065760048036038101906106529190612a32565b611332565b6040516106649190612a8d565b60405180910390f35b34801561067957600080fd5b50610682611347565b60405161068f9190612907565b60405180910390f35b3480156106a457600080fd5b506106ad61134d565b6040516106ba9190612bda565b60405180910390f35b3480156106cf57600080fd5b506106ea60048036038101906106e59190612c35565b611373565b005b3480156106f857600080fd5b50610713600480360381019061070e9190612c88565b611486565b005b34801561072157600080fd5b5061073c60048036038101906107379190612bf5565b611541565b6040516107499190612907565b60405180910390f35b34801561075e57600080fd5b506107676115c8565b6040516107749190612bda565b60405180910390f35b34801561078957600080fd5b506107a4600480360381019061079f9190612b9e565b6115ee565b005b3480156107b257600080fd5b506107bb6117a8565b6040516107c89190612d3a565b60405180910390f35b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461085f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085690612da1565b60405180910390fd5b612710816003546108709190612df0565b61087a9190612e79565b60048190555050565b60125481565b60606001805461089890612ed9565b80601f01602080910402602001604051908101604052809291908181526020018280546108c490612ed9565b80156109115780601f106108e657610100808354040283529160200191610911565b820191906000526020600020905b8154815290600101906020018083116108f457829003601f168201915b5050505050905090565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109fb9190612907565b60405180910390a36001905092915050565b600c5481565b6000600354905090565b600b5481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa890612da1565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610cf857610c77826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117ce9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610d03848484611832565b90509392505050565b60006009905090565b600d5481565b6000610d47827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61091b565b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ddc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd390612da1565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a5481565b601160149054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1e90612da1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106a90612da1565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461116f90612ed9565b80601f016020809104026020016040519081016040528092919081815260200182805461119b90612ed9565b80156111e85780601f106111bd576101008083540402835291602001916111e8565b820191906000526020600020905b8154815290600101906020018083116111cb57829003601f168201915b5050505050905090565b60095481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127d90612da1565b60405180910390fd5b81600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061133f338484611832565b905092915050565b60135481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611401576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f890612da1565b60405180910390fd5b8260098190555081600a819055506114228284611d2590919063ffffffff16565b600b8190555080600c819055506003600c5461143e9190612e79565b600b5410611481576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147890612f56565b60405180910390fd5b505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150b90612da1565b60405180910390fd5b82601160146101000a81548160ff0219169083151502179055508160128190555080601381905550505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461167c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167390612da1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036116eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e290612fc2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000838311158290611816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180d91906129b2565b60405180910390fd5b50600083856118259190612fe2565b9050809150509392505050565b60008061183e84610e50565b9050600454838261184f9190613016565b1115806118a55750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6118e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118db906130bc565b60405180910390fd5b6118ec611d83565b80156119455750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b1561195357611952611e5a565b5b600062989680846119649190612e79565b9050600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a0d5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b15611a21578084611a1e9190612fe2565b93505b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611ac35750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611adc57611ad38686866123d5565b92505050611d1e565b611b65846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117ce9092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611bb487876124f9565b611bbe5784611c1a565b611c198786601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16146125a7565b5b9050611c6e81600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d2590919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d0e9190612907565b60405180910390a3600193505050505b9392505050565b6000808284611d349190613016565b905083811015611d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7090613128565b60405180910390fd5b8091505092915050565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611df05750601460009054906101000a900460ff16155b8015611e085750601160149054906101000a900460ff165b8015611e555750601254600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601460006101000a81548160ff0219169083151502179055506000601354600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611eca576013549050611f0d565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b6000611f4b6002611f3d600b54611f2f6009548761271f90919063ffffffff16565b61279990919063ffffffff16565b61279990919063ffffffff16565b90506000611f6282846127e390919063ffffffff16565b90506000600267ffffffffffffffff811115611f8157611f80613148565b5b604051908082528060200260200182016040528015611faf5781602001602082028036833780820191505090505b5090503081600081518110611fc757611fc6613177565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561206e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209291906131bb565b816001815181106120a6576120a5613177565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016121449594939291906132e1565b600060405180830381600087803b15801561215e57600080fd5b505af1158015612172573d6000803e3d6000fd5b50505050600047905060006121a7612196600260095461279990919063ffffffff16565b600b546127e390919063ffffffff16565b905060006121e560026121d7846121c96009548861271f90919063ffffffff16565b61279990919063ffffffff16565b61279990919063ffffffff16565b905060006121fc82856127e390919063ffffffff16565b9050600081111561229e576000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516122539061336c565b600060405180830381858888f193505050503d8060008114612291576040519150601f19603f3d011682016040523d82523d6000602084013e612296565b606091505b505080915050505b60008711156123b057601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308a600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161233096959493929190613381565b60606040518083038185885af115801561234e573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061237391906133f7565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450682886040516123a792919061344a565b60405180910390a15b50505050505050506000601460006101000a81548160ff021916908315150217905550565b60006123ee6103e8600d5461271f90919063ffffffff16565b600d8190555061244682600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d2590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124e69190612907565b60405180910390a3600190509392505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561259f5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080826125b65760646125ba565b600d545b905060006126056064600c546125d09190612df0565b6125f7846125e9600b548a61271f90919063ffffffff16565b61271f90919063ffffffff16565b61279990919063ffffffff16565b905061265981600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d2590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126f99190612907565b60405180910390a361271481866127e390919063ffffffff16565b925050509392505050565b60008083036127315760009050612793565b6000828461273f9190612df0565b905082848261274e9190612e79565b1461278e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612785906134e5565b60405180910390fd5b809150505b92915050565b60006127db83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061282d565b905092915050565b600061282583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506117ce565b905092915050565b60008083118290612874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286b91906129b2565b60405180910390fd5b50600083856128839190612e79565b9050809150509392505050565b600080fd5b6000819050919050565b6128a881612895565b81146128b357600080fd5b50565b6000813590506128c58161289f565b92915050565b6000602082840312156128e1576128e0612890565b5b60006128ef848285016128b6565b91505092915050565b61290181612895565b82525050565b600060208201905061291c60008301846128f8565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561295c578082015181840152602081019050612941565b60008484015250505050565b6000601f19601f8301169050919050565b600061298482612922565b61298e818561292d565b935061299e81856020860161293e565b6129a781612968565b840191505092915050565b600060208201905081810360008301526129cc8184612979565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129ff826129d4565b9050919050565b612a0f816129f4565b8114612a1a57600080fd5b50565b600081359050612a2c81612a06565b92915050565b60008060408385031215612a4957612a48612890565b5b6000612a5785828601612a1d565b9250506020612a68858286016128b6565b9150509250929050565b60008115159050919050565b612a8781612a72565b82525050565b6000602082019050612aa26000830184612a7e565b92915050565b612ab181612a72565b8114612abc57600080fd5b50565b600081359050612ace81612aa8565b92915050565b60008060408385031215612aeb57612aea612890565b5b6000612af985828601612a1d565b9250506020612b0a85828601612abf565b9150509250929050565b600080600060608486031215612b2d57612b2c612890565b5b6000612b3b86828701612a1d565b9350506020612b4c86828701612a1d565b9250506040612b5d868287016128b6565b9150509250925092565b600060ff82169050919050565b612b7d81612b67565b82525050565b6000602082019050612b986000830184612b74565b92915050565b600060208284031215612bb457612bb3612890565b5b6000612bc284828501612a1d565b91505092915050565b612bd4816129f4565b82525050565b6000602082019050612bef6000830184612bcb565b92915050565b60008060408385031215612c0c57612c0b612890565b5b6000612c1a85828601612a1d565b9250506020612c2b85828601612a1d565b9150509250929050565b600080600060608486031215612c4e57612c4d612890565b5b6000612c5c868287016128b6565b9350506020612c6d868287016128b6565b9250506040612c7e868287016128b6565b9150509250925092565b600080600060608486031215612ca157612ca0612890565b5b6000612caf86828701612abf565b9350506020612cc0868287016128b6565b9250506040612cd1868287016128b6565b9150509250925092565b6000819050919050565b6000612d00612cfb612cf6846129d4565b612cdb565b6129d4565b9050919050565b6000612d1282612ce5565b9050919050565b6000612d2482612d07565b9050919050565b612d3481612d19565b82525050565b6000602082019050612d4f6000830184612d2b565b92915050565b7f216f776e65720000000000000000000000000000000000000000000000000000600082015250565b6000612d8b60068361292d565b9150612d9682612d55565b602082019050919050565b60006020820190508181036000830152612dba81612d7e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612dfb82612895565b9150612e0683612895565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612e3f57612e3e612dc1565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612e8482612895565b9150612e8f83612895565b925082612e9f57612e9e612e4a565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612ef157607f821691505b602082108103612f0457612f03612eaa565b5b50919050565b7f466565732063616e6e6f74206265206d6f7265207468616e2033332500000000600082015250565b6000612f40601c8361292d565b9150612f4b82612f0a565b602082019050919050565b60006020820190508181036000830152612f6f81612f33565b9050919050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b6000612fac60088361292d565b9150612fb782612f76565b602082019050919050565b60006020820190508181036000830152612fdb81612f9f565b9050919050565b6000612fed82612895565b9150612ff883612895565b92508282039050818111156130105761300f612dc1565b5b92915050565b600061302182612895565b915061302c83612895565b925082820190508082111561304457613043612dc1565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c2068652063616e206e6f7420686f6c642074686174206d7563682e0000602082015250565b60006130a6603e8361292d565b91506130b18261304a565b604082019050919050565b600060208201905081810360008301526130d581613099565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613112601b8361292d565b915061311d826130dc565b602082019050919050565b6000602082019050818103600083015261314181613105565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506131b581612a06565b92915050565b6000602082840312156131d1576131d0612890565b5b60006131df848285016131a6565b91505092915050565b6000819050919050565b600061320d613208613203846131e8565b612cdb565b612895565b9050919050565b61321d816131f2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613258816129f4565b82525050565b600061326a838361324f565b60208301905092915050565b6000602082019050919050565b600061328e82613223565b613298818561322e565b93506132a38361323f565b8060005b838110156132d45781516132bb888261325e565b97506132c683613276565b9250506001810190506132a7565b5085935050505092915050565b600060a0820190506132f660008301886128f8565b6133036020830187613214565b81810360408301526133158186613283565b90506133246060830185612bcb565b61333160808301846128f8565b9695505050505050565b600081905092915050565b50565b600061335660008361333b565b915061336182613346565b600082019050919050565b600061337782613349565b9150819050919050565b600060c0820190506133966000830189612bcb565b6133a360208301886128f8565b6133b06040830187613214565b6133bd6060830186613214565b6133ca6080830185612bcb565b6133d760a08301846128f8565b979650505050505050565b6000815190506133f18161289f565b92915050565b6000806000606084860312156134105761340f612890565b5b600061341e868287016133e2565b935050602061342f868287016133e2565b9250506040613440868287016133e2565b9150509250925092565b600060408201905061345f60008301856128f8565b61346c60208301846128f8565b9392505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006134cf60218361292d565b91506134da82613473565b604082019050919050565b600060208201905081810360008301526134fe816134c2565b905091905056fea26469706673582212205ce11b727af6f0074b82c1a90ca161bd116f044dd2c05a57e790b945922809f764736f6c634300081000330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d