60806040526005600755348015610014575f80fd5b5060405161539e38038061539e83398181016040528101906100369190610c06565b6040518060400160405280600e81526020017f436f6e73706972616379204361740000000000000000000000000000000000008152506040518060400160405280600581526020017f4d5553485500000000000000000000000000000000000000000000000000000081525081600390816100b19190610e7e565b5080600490816100c19190610e7e565b5050506100e06100d561065960201b60201c565b61066060201b60201c565b6101096100f161072360201b60201c565b6b204fce5e3e2502611000000061074b60201b60201c565b6103e86b204fce5e3e250261100000006101239190610fa7565b600a8190555060646b204fce5e3e250261100000006101429190610fa7565b60128190555060646b204fce5e3e250261100000006101619190610fa7565b6011819055508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601e600e81905550601e600f819055505f8290505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610205573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102299190610fd7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561028e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b29190610fd7565b6040518363ffffffff1660e01b81526004016102cf929190611011565b6020604051808303815f875af11580156102eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061030f9190610fd7565b90508160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e33060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108ae60201b60201c565b6103f4816001610a7160201b60201c565b6001600c5f61040761072360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160135f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160135f61060161072360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050506112b5565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b090611092565b60405180910390fd5b6107ca5f8383610b9e60201b60201c565b8060025f8282546107db91906110b0565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461082d91906110b0565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161089191906110f2565b60405180910390a36108aa5f8383610ba360201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361091c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109139061117b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361098a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098190611209565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a6491906110f2565b60405180910390a3505050565b801515600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503610b00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af790611297565b60405180910390fd5b80600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b505050565b505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610bd582610bac565b9050919050565b610be581610bcb565b8114610bef575f80fd5b50565b5f81519050610c0081610bdc565b92915050565b5f8060408385031215610c1c57610c1b610ba8565b5b5f610c2985828601610bf2565b9250506020610c3a85828601610bf2565b9150509250929050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610cbf57607f821691505b602082108103610cd257610cd1610c7b565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610d347fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610cf9565b610d3e8683610cf9565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610d82610d7d610d7884610d56565b610d5f565b610d56565b9050919050565b5f819050919050565b610d9b83610d68565b610daf610da782610d89565b848454610d05565b825550505050565b5f90565b610dc3610db7565b610dce818484610d92565b505050565b5b81811015610df157610de65f82610dbb565b600181019050610dd4565b5050565b601f821115610e3657610e0781610cd8565b610e1084610cea565b81016020851015610e1f578190505b610e33610e2b85610cea565b830182610dd3565b50505b505050565b5f82821c905092915050565b5f610e565f1984600802610e3b565b1980831691505092915050565b5f610e6e8383610e47565b9150826002028217905092915050565b610e8782610c44565b67ffffffffffffffff811115610ea057610e9f610c4e565b5b610eaa8254610ca8565b610eb5828285610df5565b5f60209050601f831160018114610ee6575f8415610ed4578287015190505b610ede8582610e63565b865550610f45565b601f198416610ef486610cd8565b5f5b82811015610f1b57848901518255600182019150602085019450602081019050610ef6565b86831015610f385784890151610f34601f891682610e47565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610fb182610d56565b9150610fbc83610d56565b925082610fcc57610fcb610f4d565b5b828204905092915050565b5f60208284031215610fec57610feb610ba8565b5b5f610ff984828501610bf2565b91505092915050565b61100b81610bcb565b82525050565b5f6040820190506110245f830185611002565b6110316020830184611002565b9392505050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f61107c601f83611038565b915061108782611048565b602082019050919050565b5f6020820190508181035f8301526110a981611070565b9050919050565b5f6110ba82610d56565b91506110c583610d56565b92508282019050808211156110dd576110dc610f7a565b5b92915050565b6110ec81610d56565b82525050565b5f6020820190506111055f8301846110e3565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611165602483611038565b91506111708261110b565b604082019050919050565b5f6020820190508181035f83015261119281611159565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6111f3602283611038565b91506111fe82611199565b604082019050919050565b5f6020820190508181035f830152611220816111e7565b9050919050565b7f4175746f6d61746564206d61726b6574206d616b6572207061697220697320615f8201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b5f611281603883611038565b915061128c82611227565b604082019050919050565b5f6020820190508181035f8301526112ae81611275565b9050919050565b6140dc806112c25f395ff3fe60806040526004361061026a575f3560e01c80638c0b5e2211610143578063b62496f5116100b5578063e3084d9e11610079578063e3084d9e14610929578063e57f14e114610965578063ec11ba341461098d578063ec28438a146109a3578063f2fde38b146109cb578063f9d0831a146109f357610271565b8063b62496f514610849578063bb85c6d114610885578063c9567bf9146108ad578063dd62ed3e146108c3578063e2f45605146108ff57610271565b80639c7d15a2116101075780639c7d15a21461071b5780639fde54f514610745578063a457c2d71461076d578063a9059cbb146107a9578063ad5dff73146107e5578063afa4f3b21461082157610271565b80638c0b5e221461064d5780638da5cb5b1461067757806395d89b41146106a15780639a7a23d6146106cb5780639bc7c8c0146106f357610271565b806339509351116101dc5780634fbee193116101a05780634fbee193146105455780636db794371461058157806370a08231146105a9578063715018a6146105e557806375f0a874146105fb57806379bf002c1461062557610271565b8063395093511461046357806342966c681461049f5780634589aaea146104c757806347062402146104f157806349bd5a5e1461051b57610271565b806318160ddd1161022e57806318160ddd14610357578063205187581461038157806323b872dd146103a95780632b14ca56146103e5578063313ce5671461040f578063333e6f061461043957610271565b8063064a59d01461027557806306fdde031461029f578063095ea7b3146102c95780631694505e1461030557806316a2f82a1461032f57610271565b3661027157005b5f80fd5b348015610280575f80fd5b50610289610a1b565b6040516102969190612c82565b60405180910390f35b3480156102aa575f80fd5b506102b3610a2d565b6040516102c09190612d0b565b60405180910390f35b3480156102d4575f80fd5b506102ef60048036038101906102ea9190612dbc565b610abd565b6040516102fc9190612c82565b60405180910390f35b348015610310575f80fd5b50610319610adf565b6040516103269190612e55565b60405180910390f35b34801561033a575f80fd5b5061035560048036038101906103509190612e6e565b610b04565b005b348015610362575f80fd5b5061036b610bec565b6040516103789190612ea8565b60405180910390f35b34801561038c575f80fd5b506103a760048036038101906103a29190612ec1565b610bf5565b005b3480156103b4575f80fd5b506103cf60048036038101906103ca9190612eec565b610c8e565b6040516103dc9190612c82565b60405180910390f35b3480156103f0575f80fd5b506103f9610cbc565b6040516104069190612ea8565b60405180910390f35b34801561041a575f80fd5b50610423610cc2565b6040516104309190612f57565b60405180910390f35b348015610444575f80fd5b5061044d610cca565b60405161045a9190612ea8565b60405180910390f35b34801561046e575f80fd5b5061048960048036038101906104849190612dbc565b610cd0565b6040516104969190612c82565b60405180910390f35b3480156104aa575f80fd5b506104c560048036038101906104c09190612ec1565b610d06565b005b3480156104d2575f80fd5b506104db610d1a565b6040516104e89190612c82565b60405180910390f35b3480156104fc575f80fd5b50610505610d2c565b6040516105129190612ea8565b60405180910390f35b348015610526575f80fd5b5061052f610d32565b60405161053c9190612f7f565b60405180910390f35b348015610550575f80fd5b5061056b60048036038101906105669190612e6e565b610d57565b6040516105789190612c82565b60405180910390f35b34801561058c575f80fd5b506105a760048036038101906105a29190612f98565b610da9565b005b3480156105b4575f80fd5b506105cf60048036038101906105ca9190612e6e565b610e88565b6040516105dc9190612ea8565b60405180910390f35b3480156105f0575f80fd5b506105f9610ecd565b005b348015610606575f80fd5b5061060f610ee0565b60405161061c9190612f7f565b60405180910390f35b348015610630575f80fd5b5061064b60048036038101906106469190612e6e565b610f05565b005b348015610658575f80fd5b50610661610f50565b60405161066e9190612ea8565b60405180910390f35b348015610682575f80fd5b5061068b610f56565b6040516106989190612f7f565b60405180910390f35b3480156106ac575f80fd5b506106b5610f7e565b6040516106c29190612d0b565b60405180910390f35b3480156106d6575f80fd5b506106f160048036038101906106ec9190613000565b61100e565b005b3480156106fe575f80fd5b5061071960048036038101906107149190612ec1565b6110b3565b005b348015610726575f80fd5b5061072f6110c5565b60405161073c9190612ea8565b60405180910390f35b348015610750575f80fd5b5061076b60048036038101906107669190613000565b6110cb565b005b348015610778575f80fd5b50610793600480360381019061078e9190612dbc565b61112b565b6040516107a09190612c82565b60405180910390f35b3480156107b4575f80fd5b506107cf60048036038101906107ca9190612dbc565b6111a0565b6040516107dc9190612c82565b60405180910390f35b3480156107f0575f80fd5b5061080b60048036038101906108069190612e6e565b6111c2565b6040516108189190612c82565b60405180910390f35b34801561082c575f80fd5b5061084760048036038101906108429190612ec1565b6111df565b005b348015610854575f80fd5b5061086f600480360381019061086a9190612e6e565b6111fc565b60405161087c9190612c82565b60405180910390f35b348015610890575f80fd5b506108ab60048036038101906108a69190612e6e565b611219565b005b3480156108b8575f80fd5b506108c161134b565b005b3480156108ce575f80fd5b506108e960048036038101906108e4919061303e565b61144a565b6040516108f69190612ea8565b60405180910390f35b34801561090a575f80fd5b506109136114cc565b6040516109209190612ea8565b60405180910390f35b348015610934575f80fd5b5061094f600480360381019061094a919061303e565b6114d2565b60405161095c9190612c82565b60405180910390f35b348015610970575f80fd5b5061098b60048036038101906109869190612e6e565b6115ba565b005b348015610998575f80fd5b506109a16116e7565b005b3480156109ae575f80fd5b506109c960048036038101906109c49190612ec1565b61170b565b005b3480156109d6575f80fd5b506109f160048036038101906109ec9190612e6e565b61171d565b005b3480156109fe575f80fd5b50610a196004803603810190610a149190612e6e565b61179f565b005b600b5f9054906101000a900460ff1681565b606060038054610a3c906130a9565b80601f0160208091040260200160405190810160405280929190818152602001828054610a68906130a9565b8015610ab35780601f10610a8a57610100808354040283529160200191610ab3565b820191905f5260205f20905b815481529060010190602001808311610a9657829003601f168201915b5050505050905090565b5f80610ac7611992565b9050610ad4818585611999565b600191505092915050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b0c611b5c565b600c5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610b95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8c90613123565b60405180910390fd5b5f600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f600254905090565b610bfd611b5c565b60018111610c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c379061318b565b60405180910390fd5b600a811115610c84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7b906131f3565b60405180910390fd5b8060078190555050565b5f80610c98611992565b9050610ca5858285611bda565b610cb0858585611c65565b60019150509392505050565b600e5481565b5f6012905090565b60125481565b5f80610cda611992565b9050610cfb818585610cec858961144a565b610cf6919061323e565b611999565b600191505092915050565b610d17610d11611992565b826121c4565b50565b60105f9054906101000a900460ff1681565b600f5481565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610db1611b5c565b600a821115610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dec906132bb565b60405180910390fd5b600a811115610e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e30906132bb565b60405180910390fd5b81600e8190555080600f819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a1600e54600f54604051610e7c9291906132d9565b60405180910390a15050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ed5611b5c565b610ede5f612390565b565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f0d611b5c565b8060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610f8d906130a9565b80601f0160208091040260200160405190810160405280929190818152602001828054610fb9906130a9565b80156110045780601f10610fdb57610100808354040283529160200191611004565b820191905f5260205f20905b815481529060010190602001808311610fe757829003601f168201915b5050505050905090565b611016611b5c565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109c90613370565b60405180910390fd5b6110af8282612453565b5050565b6110bb611b5c565b8060128190555050565b60075481565b6110d3611b5c565b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f80611135611992565b90505f611142828661144a565b905083811015611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117e906133fe565b60405180910390fd5b6111948286868403611999565b60019250505092915050565b5f806111aa611992565b90506111b7818585611c65565b600191505092915050565b6013602052805f5260405f205f915054906101000a900460ff1681565b6111e7611b5c565b5f81116111f2575f80fd5b80600a8190555050565b600d602052805f5260405f205f915054906101000a900460ff1681565b611221611b5c565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a79061348c565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516113409190612f7f565b60405180910390a150565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d1906134f4565b60405180910390fd5b5f1515600b5f9054906101000a900460ff1615151461142e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611425906134f4565b60405180910390fd5b6001600b5f6101000a81548160ff021916908315150217905550565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b5f6114db610f56565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806115465750611517610f56565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8061157c57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b806115b257503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b6115c2611b5c565b600c5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561164c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164390613582565b60405180910390fd5b6001600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f57a00f76b5f242fb1e04b0b514a6974665a5b07bce45e39f36dabff4a042d93660405160405180910390a250565b6116ef611b5c565b600160105f6101000a81548160ff021916908315150217905550565b611713611b5c565b8060118190555050565b611725611b5c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178a90613610565b60405180910390fd5b61179c81612390565b50565b6117a7611b5c565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180c90613678565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611891573373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561188b573d5f803e3d5ffd5b5061198f565b5f8190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016118cf9190612f7f565b602060405180830381865afa1580156118ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061190e91906136aa565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161194b9291906136d5565b6020604051808303815f875af1158015611967573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061198b9190613710565b5050505b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fe906137ab565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6c90613839565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b4f9190612ea8565b60405180910390a3505050565b611b64611992565b73ffffffffffffffffffffffffffffffffffffffff16611b82610f56565b73ffffffffffffffffffffffffffffffffffffffff1614611bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcf906138a1565b60405180910390fd5b565b5f611be5848461144a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611c5f5781811015611c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4890613909565b60405180910390fd5b611c5e8484848403611999565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cca90613997565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3890613a25565b60405180910390fd5b600960149054906101000a900460ff16611d6157611d60838383612580565b5b5f600f5490505f600e54905060135f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611e0b575060135f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e5f57600b5f9054906101000a900460ff16611e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5590613a8d565b60405180910390fd5b5b5f8303611e6d5750506121bf565b5f600960149054906101000a900460ff16159050600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611f1c5750600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611f25575f90505b5f611f2f30610e88565b90505f600a548210158015611f4357505f82115b8015611f965750600d5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611f9f5750825b9050808015611fbb5750600960149054906101000a900460ff16155b1561206b576001600960146101000a81548160ff0219169083151502179055505f61200660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e88565b90506064600754826120189190613aab565b6120229190613b19565b831115612046576064600754826120399190613aab565b6120439190613b19565b92505b61204f83612611565b5f600960146101000a81548160ff021916908315150217905550505b8280156120c4575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b80156120cf57505f84115b1561210e575f606485886120e39190613aab565b6120ed9190613b19565b905080876120fb9190613b49565b9650612108893083612880565b506121ae565b828015612167575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16145b801561217257505f85115b156121ad575f606486886121869190613aab565b6121909190613b19565b9050808761219e9190613b49565b96506121ab893083612880565b505b5b6121b9888888612880565b50505050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612232576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222990613bec565b60405180910390fd5b61223d825f83612af5565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156122c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b790613c7a565b60405180910390fd5b8181035f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f8282546123149190613b49565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123789190612ea8565b60405180910390a361238b835f84612afa565b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b801515600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515036124e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d990613d08565b60405180910390fd5b80600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60105f9054906101000a900460ff1661260c5761259d83836114d2565b1580156125f1575060135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561260b576126008282612aff565b61260a8282612b48565b5b5b505050565b5f600267ffffffffffffffff81111561262d5761262c613d26565b5b60405190808252806020026020018201604052801561265b5781602001602082028036833780820191505090505b50905030815f8151811061267257612671613d53565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612716573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061273a9190613d94565b8160018151811061274e5761274d613d53565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016127ea959493929190613eaf565b5f604051808303815f87803b158015612801575f80fd5b505af1925050508015612812575060015b505f47905061284260065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612bfa565b7f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e6299983826040516128739291906132d9565b60405180910390a1505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e590613997565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361295c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295390613a25565b60405180910390fd5b612967838383612af5565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156129ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e190613f77565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612a78919061323e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612adc9190612ea8565b60405180910390a3612aef848484612afa565b50505050565b505050565b505050565b601154811115612b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3b90613fdf565b60405180910390fd5b5050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160315612bf65760125481612baa84610e88565b612bb4919061323e565b1115612bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bec90614047565b60405180910390fd5b5b5050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc82604051612c2190614092565b5f60405180830381858888f193505050503d805f8114612c5c576040519150601f19603f3d011682016040523d82523d5f602084013e612c61565b606091505b5050505050565b5f8115159050919050565b612c7c81612c68565b82525050565b5f602082019050612c955f830184612c73565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612cdd82612c9b565b612ce78185612ca5565b9350612cf7818560208601612cb5565b612d0081612cc3565b840191505092915050565b5f6020820190508181035f830152612d238184612cd3565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d5882612d2f565b9050919050565b612d6881612d4e565b8114612d72575f80fd5b50565b5f81359050612d8381612d5f565b92915050565b5f819050919050565b612d9b81612d89565b8114612da5575f80fd5b50565b5f81359050612db681612d92565b92915050565b5f8060408385031215612dd257612dd1612d2b565b5b5f612ddf85828601612d75565b9250506020612df085828601612da8565b9150509250929050565b5f819050919050565b5f612e1d612e18612e1384612d2f565b612dfa565b612d2f565b9050919050565b5f612e2e82612e03565b9050919050565b5f612e3f82612e24565b9050919050565b612e4f81612e35565b82525050565b5f602082019050612e685f830184612e46565b92915050565b5f60208284031215612e8357612e82612d2b565b5b5f612e9084828501612d75565b91505092915050565b612ea281612d89565b82525050565b5f602082019050612ebb5f830184612e99565b92915050565b5f60208284031215612ed657612ed5612d2b565b5b5f612ee384828501612da8565b91505092915050565b5f805f60608486031215612f0357612f02612d2b565b5b5f612f1086828701612d75565b9350506020612f2186828701612d75565b9250506040612f3286828701612da8565b9150509250925092565b5f60ff82169050919050565b612f5181612f3c565b82525050565b5f602082019050612f6a5f830184612f48565b92915050565b612f7981612d4e565b82525050565b5f602082019050612f925f830184612f70565b92915050565b5f8060408385031215612fae57612fad612d2b565b5b5f612fbb85828601612da8565b9250506020612fcc85828601612da8565b9150509250929050565b612fdf81612c68565b8114612fe9575f80fd5b50565b5f81359050612ffa81612fd6565b92915050565b5f806040838503121561301657613015612d2b565b5b5f61302385828601612d75565b925050602061303485828601612fec565b9150509250929050565b5f806040838503121561305457613053612d2b565b5b5f61306185828601612d75565b925050602061307285828601612d75565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806130c057607f821691505b6020821081036130d3576130d261307c565b5b50919050565b7f4163636f756e7420616c726561647920696e636c7564656400000000000000005f82015250565b5f61310d601883612ca5565b9150613118826130d9565b602082019050919050565b5f6020820190508181035f83015261313a81613101565b9050919050565b7f746f6f206c6f77000000000000000000000000000000000000000000000000005f82015250565b5f613175600783612ca5565b915061318082613141565b602082019050919050565b5f6020820190508181035f8301526131a281613169565b9050919050565b7f746f6f20686967680000000000000000000000000000000000000000000000005f82015250565b5f6131dd600883612ca5565b91506131e8826131a9565b602082019050919050565b5f6020820190508181035f83015261320a816131d1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61324882612d89565b915061325383612d89565b925082820190508082111561326b5761326a613211565b5b92915050565b7f46656573206d757374206265206c657373207468616e203130250000000000005f82015250565b5f6132a5601a83612ca5565b91506132b082613271565b602082019050919050565b5f6020820190508181035f8301526132d281613299565b9050919050565b5f6040820190506132ec5f830185612e99565b6132f96020830184612e99565b9392505050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f61335a603983612ca5565b915061336582613300565b604082019050919050565b5f6020820190508181035f8301526133878161334e565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6133e8602583612ca5565b91506133f38261338e565b604082019050919050565b5f6020820190508181035f830152613415816133dc565b9050919050565b7f4d61726b6574696e672077616c6c657420697320616c726561647920746861745f8201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b5f613476602883612ca5565b91506134818261341c565b604082019050919050565b5f6020820190508181035f8301526134a38161346a565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e2100000000000000005f82015250565b5f6134de601883612ca5565b91506134e9826134aa565b602082019050919050565b5f6020820190508181035f83015261350b816134d2565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f66205f8201527f7472756500000000000000000000000000000000000000000000000000000000602082015250565b5f61356c602483612ca5565b915061357782613512565b604082019050919050565b5f6020820190508181035f83015261359981613560565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6135fa602683612ca5565b9150613605826135a0565b604082019050919050565b5f6020820190508181035f830152613627816135ee565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e735f82015250565b5f613662602083612ca5565b915061366d8261362e565b602082019050919050565b5f6020820190508181035f83015261368f81613656565b9050919050565b5f815190506136a481612d92565b92915050565b5f602082840312156136bf576136be612d2b565b5b5f6136cc84828501613696565b91505092915050565b5f6040820190506136e85f830185612f70565b6136f56020830184612e99565b9392505050565b5f8151905061370a81612fd6565b92915050565b5f6020828403121561372557613724612d2b565b5b5f613732848285016136fc565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613795602483612ca5565b91506137a08261373b565b604082019050919050565b5f6020820190508181035f8301526137c281613789565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613823602283612ca5565b915061382e826137c9565b604082019050919050565b5f6020820190508181035f83015261385081613817565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61388b602083612ca5565b915061389682613857565b602082019050919050565b5f6020820190508181035f8301526138b88161387f565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6138f3601d83612ca5565b91506138fe826138bf565b602082019050919050565b5f6020820190508181035f830152613920816138e7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613981602583612ca5565b915061398c82613927565b604082019050919050565b5f6020820190508181035f8301526139ae81613975565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613a0f602383612ca5565b9150613a1a826139b5565b604082019050919050565b5f6020820190508181035f830152613a3c81613a03565b9050919050565b7f5472616465206973206e6f74206f70656e0000000000000000000000000000005f82015250565b5f613a77601183612ca5565b9150613a8282613a43565b602082019050919050565b5f6020820190508181035f830152613aa481613a6b565b9050919050565b5f613ab582612d89565b9150613ac083612d89565b9250828202613ace81612d89565b91508282048414831517613ae557613ae4613211565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b2382612d89565b9150613b2e83612d89565b925082613b3e57613b3d613aec565b5b828204905092915050565b5f613b5382612d89565b9150613b5e83612d89565b9250828203905081811115613b7657613b75613211565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f613bd6602183612ca5565b9150613be182613b7c565b604082019050919050565b5f6020820190508181035f830152613c0381613bca565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c64602283612ca5565b9150613c6f82613c0a565b604082019050919050565b5f6020820190508181035f830152613c9181613c58565b9050919050565b7f4175746f6d61746564206d61726b6574206d616b6572207061697220697320615f8201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b5f613cf2603883612ca5565b9150613cfd82613c98565b604082019050919050565b5f6020820190508181035f830152613d1f81613ce6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613d8e81612d5f565b92915050565b5f60208284031215613da957613da8612d2b565b5b5f613db684828501613d80565b91505092915050565b5f819050919050565b5f613de2613ddd613dd884613dbf565b612dfa565b612d89565b9050919050565b613df281613dc8565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613e2a81612d4e565b82525050565b5f613e3b8383613e21565b60208301905092915050565b5f602082019050919050565b5f613e5d82613df8565b613e678185613e02565b9350613e7283613e12565b805f5b83811015613ea2578151613e898882613e30565b9750613e9483613e47565b925050600181019050613e75565b5085935050505092915050565b5f60a082019050613ec25f830188612e99565b613ecf6020830187613de9565b8181036040830152613ee18186613e53565b9050613ef06060830185612f70565b613efd6080830184612e99565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613f61602683612ca5565b9150613f6c82613f07565b604082019050919050565b5f6020820190508181035f830152613f8e81613f55565b9050919050565b7f416d6f756e742065786365656473206d617800000000000000000000000000005f82015250565b5f613fc9601283612ca5565b9150613fd482613f95565b602082019050919050565b5f6020820190508181035f830152613ff681613fbd565b9050919050565b7f4d617820686f6c64696e67206578636565646564206d617800000000000000005f82015250565b5f614031601883612ca5565b915061403c82613ffd565b602082019050919050565b5f6020820190508181035f83015261405e81614025565b9050919050565b5f81905092915050565b50565b5f61407d5f83614065565b91506140888261406f565b5f82019050919050565b5f61409c82614072565b915081905091905056fea2646970667358221220813d89850bdbae8ac30ebe02cacf7cebfb1dde6a578eae9935fb6da71838a13a64736f6c634300081a00330000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad24000000000000000000000000d7e5dcf9dbe4b7ab401246a6995a484f2e6a7f48