60806040523480156200001157600080fd5b50604051620069a1380380620069a183398181016040528101906200003791906200059f565b33838381600090816200004b919062000884565b5080600190816200005d919062000884565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000d55760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000cc91906200097c565b60405180910390fd5b620000e6816200016a60201b60201c565b5060016008819055506000600960006101000a81548160ff02191690831515021790555080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001606000801b336200023060201b60201c565b5050505062000999565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006200024483836200033460201b60201c565b620003295760016007600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620002c56200039f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600190506200032e565b600090505b92915050565b60006007600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200041082620003c5565b810181811067ffffffffffffffff82111715620004325762000431620003d6565b5b80604052505050565b600062000447620003a7565b905062000455828262000405565b919050565b600067ffffffffffffffff821115620004785762000477620003d6565b5b6200048382620003c5565b9050602081019050919050565b60005b83811015620004b057808201518184015260208101905062000493565b60008484015250505050565b6000620004d3620004cd846200045a565b6200043b565b905082815260208101848484011115620004f257620004f1620003c0565b5b620004ff84828562000490565b509392505050565b600082601f8301126200051f576200051e620003bb565b5b815162000531848260208601620004bc565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000567826200053a565b9050919050565b62000579816200055a565b81146200058557600080fd5b50565b60008151905062000599816200056e565b92915050565b600080600060608486031215620005bb57620005ba620003b1565b5b600084015167ffffffffffffffff811115620005dc57620005db620003b6565b5b620005ea8682870162000507565b935050602084015167ffffffffffffffff8111156200060e576200060d620003b6565b5b6200061c8682870162000507565b92505060406200062f8682870162000588565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200068c57607f821691505b602082108103620006a257620006a162000644565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200070c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006cd565b620007188683620006cd565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007656200075f620007598462000730565b6200073a565b62000730565b9050919050565b6000819050919050565b620007818362000744565b6200079962000790826200076c565b848454620006da565b825550505050565b600090565b620007b0620007a1565b620007bd81848462000776565b505050565b5b81811015620007e557620007d9600082620007a6565b600181019050620007c3565b5050565b601f8211156200083457620007fe81620006a8565b6200080984620006bd565b8101602085101562000819578190505b620008316200082885620006bd565b830182620007c2565b50505b505050565b600082821c905092915050565b6000620008596000198460080262000839565b1980831691505092915050565b600062000874838362000846565b9150826002028217905092915050565b6200088f8262000639565b67ffffffffffffffff811115620008ab57620008aa620003d6565b5b620008b7825462000673565b620008c4828285620007e9565b600060209050601f831160018114620008fc5760008415620008e7578287015190505b620008f3858262000866565b86555062000963565b601f1984166200090c86620006a8565b60005b8281101562000936578489015182556001820191506020850194506020810190506200090f565b8683101562000956578489015162000952601f89168262000846565b8355505b6001600288020188555050505b505050505050565b62000976816200055a565b82525050565b60006020820190506200099360008301846200096b565b92915050565b615ff880620009a96000396000f3fe608060405234801561001057600080fd5b50600436106102955760003560e01c8063715018a611610167578063c87b56dd116100ce578063e7705db611610087578063e7705db6146107de578063e985e9c5146107fc578063f1dbaccb1461082c578063f2fde38b1461085c578063f41a078f14610878578063f4a90dbd1461089457610295565b8063c87b56dd14610720578063ca2dfd0a14610750578063d04f5c2e1461076c578063d539139314610788578063d547741f146107a6578063e116d69a146107c257610295565b80639750aa28116101205780639750aa2814610674578063983b2d5614610692578063a217fddf146106ae578063a22cb465146106cc578063b88d4fde146106e8578063c4fa5a041461070457610295565b8063715018a6146105d85780638456cb59146105e25780638da5cb5b146105ec5780639000b3d61461060a57806391d148541461062657806395d89b411461065657610295565b806336568abe1161020b5780635c822a94116101c45780635c822a94146104de5780635c975abb146104fa57806361465f73146105185780636352211e14610548578063638359781461057857806370a08231146105a857610295565b806336568abe1461040c5780633f4ba83a1461042857806342842e0e14610432578063430c20811461044e578063472ec4541461047e5780634f558e79146104ae57610295565b806323b872dd1161025d57806323b872dd14610350578063248a9ca31461036c5780632f2ff15d1461039c57806330176e13146103b85780633092afd5146103d457806334e0ebe7146103f057610295565b806301ffc9a71461029a57806306fdde03146102ca578063081812fc146102e8578063095ea7b3146103185780631253d27214610334575b600080fd5b6102b460048036038101906102af9190613f80565b6108c5565b6040516102c19190613fc8565b60405180910390f35b6102d26108d7565b6040516102df9190614073565b60405180910390f35b61030260048036038101906102fd91906140cb565b610969565b60405161030f9190614139565b60405180910390f35b610332600480360381019061032d9190614180565b610985565b005b61034e600480360381019061034991906141c0565b61099b565b005b61036a600480360381019061036591906141ed565b610a8d565b005b61038660048036038101906103819190614276565b610b77565b60405161039391906142b2565b60405180910390f35b6103b660048036038101906103b191906142cd565b610b97565b005b6103d260048036038101906103cd9190614442565b610bb9565b005b6103ee60048036038101906103e991906141c0565b610bd4565b005b61040a600480360381019061040591906140cb565b610c09565b005b610426600480360381019061042191906142cd565b610d10565b005b610430610d8b565b005b61044c600480360381019061044791906141ed565b610d9d565b005b61046860048036038101906104639190614180565b610dbd565b6040516104759190613fc8565b60405180910390f35b610498600480360381019061049391906140cb565b610e52565b6040516104a591906147f4565b60405180910390f35b6104c860048036038101906104c391906140cb565b6113d1565b6040516104d59190613fc8565b60405180910390f35b6104f860048036038101906104f39190614b9d565b611412565b005b610502611605565b60405161050f9190613fc8565b60405180910390f35b610532600480360381019061052d9190614d63565b61161c565b60405161053f9190614ee4565b60405180910390f35b610562600480360381019061055d91906140cb565b611a2b565b60405161056f9190614139565b60405180910390f35b610592600480360381019061058d91906140cb565b611a3d565b60405161059f9190613fc8565b60405180910390f35b6105c260048036038101906105bd91906141c0565b611aaf565b6040516105cf9190614ee4565b60405180910390f35b6105e0611b69565b005b6105ea611b7d565b005b6105f4611b8f565b6040516106019190614139565b60405180910390f35b610624600480360381019061061f91906141c0565b611bb9565b005b610640600480360381019061063b91906142cd565b611bee565b60405161064d9190613fc8565b60405180910390f35b61065e611c59565b60405161066b9190614073565b60405180910390f35b61067c611ceb565b6040516106899190614f5e565b60405180910390f35b6106ac60048036038101906106a791906141c0565b611d11565b005b6106b6611d46565b6040516106c391906142b2565b60405180910390f35b6106e660048036038101906106e19190614fa5565b611d4d565b005b61070260048036038101906106fd9190615086565b611d63565b005b61071e60048036038101906107199190615109565b611e4f565b005b61073a600480360381019061073591906140cb565b61208d565b6040516107479190614073565b60405180910390f35b61076a600480360381019061076591906141c0565b612261565b005b61078660048036038101906107819190615165565b612296565b005b610790612390565b60405161079d91906142b2565b60405180910390f35b6107c060048036038101906107bb91906142cd565b6123b4565b005b6107dc60048036038101906107d79190615204565b6123d6565b005b6107e6612575565b6040516107f391906142b2565b60405180910390f35b61081660048036038101906108119190615273565b612599565b6040516108239190613fc8565b60405180910390f35b610846600480360381019061084191906140cb565b61262d565b6040516108539190615322565b60405180910390f35b610876600480360381019061087191906141c0565b612719565b005b610892600480360381019061088d9190615344565b61279f565b005b6108ae60048036038101906108a991906140cb565b612895565b6040516108bc929190615384565b60405180910390f35b60006108d08261292a565b9050919050565b6060600080546108e6906153dc565b80601f0160208091040260200160405190810160405280929190818152602001828054610912906153dc565b801561095f5780601f106109345761010080835404028352916020019161095f565b820191906000526020600020905b81548152906001019060200180831161094257829003601f168201915b5050505050905090565b6000610974826129a4565b5061097e82612a2c565b9050919050565b6109978282610992612a69565b612a71565b5050565b6109a3612a83565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0990615459565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f56ac5c34b59b519741493e77dfe26d9dbe1cd9fff0b4a4ba13c04782828dba9c81604051610a829190614139565b60405180910390a150565b610a95612b0a565b610aa0838383612b4b565b600b6000828152602001908152602001600020600801829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16827f16b85f49bf01212961345d3016c9a531894accf62eb7680f2045d79185cc0ec060405160405180910390a4505050565b600060076000838152602001908152602001600020600101549050919050565b610ba082610b77565b610ba981612c4d565b610bb38383612c61565b50505050565b610bc1612a83565b8060109081610bd0919061561b565b5050565b610bdc612a83565b610c067f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6826123b4565b50565b7f0ce23c3e399818cfee81a7ab0880f714e53d7672b08df0fa62f2843416e1ea09610c3381612c4d565b610c3b612b0a565b600c600083815260200190815260200160002060009054906101000a900460ff1615610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9390615739565b60405180910390fd5b6001600c600084815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff16827ff81c321d2d732b19faf71a7aac687e05adf793390bd0e81c7f58b3785aa8e17f60405160405180910390a35050565b610d18612a69565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d7c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d868282612d53565b505050565b610d93612a83565b610d9b612e46565b565b610db883838360405180602001604052806000815250611d63565b505050565b600080610dc983611a2b565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610e0b5750610e0a8185612599565b5b80610e4957508373ffffffffffffffffffffffffffffffffffffffff16610e3184610969565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b610e5a613eb7565b610e63826113d1565b610ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e99906157a5565b60405180910390fd5b600b600083815260200190815260200160002060405180610140016040529081600082018054610ed1906153dc565b80601f0160208091040260200160405190810160405280929190818152602001828054610efd906153dc565b8015610f4a5780601f10610f1f57610100808354040283529160200191610f4a565b820191906000526020600020905b815481529060010190602001808311610f2d57829003601f168201915b50505050508152602001600182018054610f63906153dc565b80601f0160208091040260200160405190810160405280929190818152602001828054610f8f906153dc565b8015610fdc5780601f10610fb157610100808354040283529160200191610fdc565b820191906000526020600020905b815481529060010190602001808311610fbf57829003601f168201915b505050505081526020016002820160009054906101000a900461ffff1661ffff1661ffff168152602001600382018054611015906153dc565b80601f0160208091040260200160405190810160405280929190818152602001828054611041906153dc565b801561108e5780601f106110635761010080835404028352916020019161108e565b820191906000526020600020905b81548152906001019060200180831161107157829003601f168201915b505050505081526020016004820180546110a7906153dc565b80601f01602080910402602001604051908101604052809291908181526020018280546110d3906153dc565b80156111205780601f106110f557610100808354040283529160200191611120565b820191906000526020600020905b81548152906001019060200180831161110357829003601f168201915b505050505081526020016005820160009054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200160068201805461115f906153dc565b80601f016020809104026020016040519081016040528092919081815260200182805461118b906153dc565b80156111d85780601f106111ad576101008083540402835291602001916111d8565b820191906000526020600020905b8154815290600101906020018083116111bb57829003601f168201915b50505050508152602001600782015481526020016008820180548060200260200160405190810160405280929190818152602001828054801561127057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611226575b5050505050815260200160098201805480602002602001604051908101604052809291908181526020016000905b828210156113c25783829060005260206000209060030201604051806060016040529081600082015481526020016001820180546112db906153dc565b80601f0160208091040260200160405190810160405280929190818152602001828054611307906153dc565b80156113545780601f1061132957610100808354040283529160200191611354565b820191906000526020600020905b81548152906001019060200180831161133757829003601f168201915b505050505081526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250508152602001906001019061129e565b50505050815250509050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166113f383612ea9565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661143c81612c4d565b611444612b0a565b88518a51148015611456575087518951145b8015611463575086518851145b8015611470575085518751145b801561147d575084518651145b801561148a575083518551145b8015611497575082518451145b80156114a4575081518351145b6114e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114da90615837565b60405180910390fd5b60005b8a518110156115f8576115ea8b828151811061150557611504615857565b5b60200260200101518b83815181106115205761151f615857565b5b60200260200101518b848151811061153b5761153a615857565b5b60200260200101518b858151811061155657611555615857565b5b60200260200101518b868151811061157157611570615857565b5b60200260200101518b878151811061158c5761158b615857565b5b60200260200101518b88815181106115a7576115a6615857565b5b60200260200101518b89815181106115c2576115c1615857565b5b60200260200101518b8a815181106115dd576115dc615857565b5b602002602001015161161c565b5080806001019150506114e6565b5050505050505050505050565b6000600960009054906101000a900460ff16905090565b60007f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661164881612c4d565b611650612b0a565b611658612ee6565b600d8760405161166891906158c2565b908152602001604051809103902060009054906101000a900460ff16156116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb90615925565b60405180910390fd5b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166350c34dc9896040518263ffffffff1660e01b81526004016117219190614073565b600060405180830381865afa15801561173e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906117679190615b06565b905080608001516117ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a490615b9b565b60405180910390fd5b8b73ffffffffffffffffffffffffffffffffffffffff168160c0015173ffffffffffffffffffffffffffffffffffffffff161461181f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181690615c2d565b60405180910390fd5b6000600a600081548092919061183490615c7c565b9190505590506118448d82612f2c565b6000600b600083815260200190815260200160002090508c81600001908161186c919061561b565b508b81600101908161187e919061561b565b508a8160020160006101000a81548161ffff021916908361ffff160217905550898160030190816118af919061561b565b50888160040190816118c1919061561b565b50878160050160006101000a81548163ffffffff021916908363ffffffff160217905550868160060190816118f6919061561b565b50428160070181905550806008018e9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d8b60405161197791906158c2565b908152602001604051809103902060006101000a81548160ff02191690831515021790555085600f600084815260200190815260200160002090816119bc919061561b565b508d73ffffffffffffffffffffffffffffffffffffffff16827f49d8342e9e734918be6ce1b7581a46d629d37d9b56dac558debeac08d6cfda458c6001604051611a07929190615cc4565b60405180910390a3819450505050611a1d612f4a565b509998505050505050505050565b6000611a36826129a4565b9050919050565b6000611a48826113d1565b611a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7e906157a5565b60405180910390fd5b600c600083815260200190815260200160002060009054906101000a900460ff169050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b225760006040517f89c62b64000000000000000000000000000000000000000000000000000000008152600401611b199190614139565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611b71612a83565b611b7b6000612f54565b565b611b85612a83565b611b8d61301a565b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611bc1612a83565b611beb7f0ce23c3e399818cfee81a7ab0880f714e53d7672b08df0fa62f2843416e1ea0982610b97565b50565b60006007600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060018054611c68906153dc565b80601f0160208091040260200160405190810160405280929190818152602001828054611c94906153dc565b8015611ce15780601f10611cb657610100808354040283529160200191611ce1565b820191906000526020600020905b815481529060010190602001808311611cc457829003601f168201915b5050505050905090565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d19612a83565b611d437f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a682610b97565b50565b6000801b81565b611d5f611d58612a69565b838361307d565b5050565b611d6b612b0a565b611d77848484846131ec565b600b6000838152602001908152602001600020600801839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16837f16b85f49bf01212961345d3016c9a531894accf62eb7680f2045d79185cc0ec060405160405180910390a450505050565b6000801b611e5c81612c4d565b611e64612b0a565b611e6d836113d1565b611eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea3906157a5565b60405180910390fd5b600d82604051611ebc91906158c2565b908152602001604051809103902060009054906101000a900460ff1615611f18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0f90615d40565b60405180910390fd5b6000600b60008581526020019081526020016000206003018054611f3b906153dc565b80601f0160208091040260200160405190810160405280929190818152602001828054611f67906153dc565b8015611fb45780601f10611f8957610100808354040283529160200191611fb4565b820191906000526020600020905b815481529060010190602001808311611f9757829003601f168201915b505050505090506000600d82604051611fcd91906158c2565b908152602001604051809103902060006101000a81548160ff02191690831515021790555082600b60008681526020019081526020016000206003019081612015919061561b565b506001600d8460405161202891906158c2565b908152602001604051809103902060006101000a81548160ff021916908315150217905550837f821664cdbe6a9decfc23d6ece14ced8115f084eac5129516bf90247cd8f7931d828560405161207f929190615d60565b60405180910390a250505050565b6060612098826113d1565b6120d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ce906157a5565b60405180910390fd5b6000600f600084815260200190815260200160002080546120f7906153dc565b80601f0160208091040260200160405190810160405280929190818152602001828054612123906153dc565b80156121705780601f1061214557610100808354040283529160200191612170565b820191906000526020600020905b81548152906001019060200180831161215357829003601f168201915b50505050509050600060108054612186906153dc565b80601f01602080910402602001604051908101604052809291908181526020018280546121b2906153dc565b80156121ff5780601f106121d4576101008083540402835291602001916121ff565b820191906000526020600020905b8154815290600101906020018083116121e257829003601f168201915b50505050509050600081510361221957819250505061225c565b60008251111561224e578082604051602001612236929190615d97565b6040516020818303038152906040529250505061225c565b61225784613209565b925050505b919050565b612269612a83565b6122937f0ce23c3e399818cfee81a7ab0880f714e53d7672b08df0fa62f2843416e1ea09826123b4565b50565b61229e612b0a565b6122a83385610dbd565b6122e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122de90615e07565b60405180910390fd5b6000600b600086815260200190815260200160002090508381600401908161230f919061561b565b50828160050160006101000a81548163ffffffff021916908363ffffffff16021790555081816006019081612344919061561b565b503373ffffffffffffffffffffffffffffffffffffffff16857fc8c6b5b706573fd07c80f956817f418023068b20f31796f90a8e32c63da6ce6860405160405180910390a35050505050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6123bd82610b77565b6123c681612c4d565b6123d08383612d53565b50505050565b6123de612b0a565b6123e83384610dbd565b612427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241e90615e07565b60405180910390fd5b600060405180606001604052804281526020018481526020018373ffffffffffffffffffffffffffffffffffffffff168152509050600b60008581526020019081526020016000206009018190806001815401808255809150506001900390600052602060002090600302016000909190919091506000820151816000015560208201518160010190816124bb919061561b565b5060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505042600b6000868152602001908152602001600020600701819055508173ffffffffffffffffffffffffffffffffffffffff16847f9fded55807fc8a44dc271367a9226f11196dae52ed5cbe3f4e36b540b721a873426040516125679190614ee4565b60405180910390a350505050565b7f0ce23c3e399818cfee81a7ab0880f714e53d7672b08df0fa62f2843416e1ea0981565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060612638826113d1565b612677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266e906157a5565b60405180910390fd5b600b600083815260200190815260200160002060080180548060200260200160405190810160405280929190818152602001828054801561270d57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116126c3575b50505050509050919050565b612721612a83565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127935760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161278a9190614139565b60405180910390fd5b61279c81612f54565b50565b7f0ce23c3e399818cfee81a7ab0880f714e53d7672b08df0fa62f2843416e1ea096127c981612c4d565b6127d1612b0a565b6127da836113d1565b612819576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612810906157a5565b60405180910390fd5b604051806040016040528083815260200142815250600e60008581526020019081526020016000206000820151816000015560208201518160010155905050827f46056ccfe1587813fe581c2cadad12d6d0f2e9c9e7b072a9a03655bfe0b161ef836040516128889190614ee4565b60405180910390a2505050565b6000806128a1836113d1565b6128e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d7906157a5565b60405180910390fd5b6000600e6000858152602001908152602001600020604051806040016040529081600082015481526020016001820154815250509050806000015181602001519250925050915091565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061299d575061299c82613272565b5b9050919050565b6000806129b083612ea9565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a2357826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401612a1a9190614ee4565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b612a7e8383836001613354565b505050565b612a8b612a69565b73ffffffffffffffffffffffffffffffffffffffff16612aa9611b8f565b73ffffffffffffffffffffffffffffffffffffffff1614612b0857612acc612a69565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401612aff9190614139565b60405180910390fd5b565b612b12611605565b15612b49576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612bbd5760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401612bb49190614139565b60405180910390fd5b6000612bd18383612bcc612a69565b613519565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612c47578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401612c3e93929190615e27565b60405180910390fd5b50505050565b612c5e81612c59612a69565b613733565b50565b6000612c6d8383611bee565b612d485760016007600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612ce5612a69565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050612d4d565b600090505b92915050565b6000612d5f8383611bee565b15612e3b5760006007600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612dd8612a69565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019050612e40565b600090505b92915050565b612e4e613784565b6000600960006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612e92612a69565b604051612e9f9190614139565b60405180910390a1565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600260085403612f22576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600881905550565b612f468282604051806020016040528060008152506137c4565b5050565b6001600881905550565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b613022612b0a565b6001600960006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613066612a69565b6040516130739190614139565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036130ee57816040517f5b08ba180000000000000000000000000000000000000000000000000000000081526004016130e59190614139565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516131df9190613fc8565b60405180910390a3505050565b6131f7848484610a8d565b613203848484846137e0565b50505050565b6060613214826129a4565b50600061321f613997565b9050600081511161323f576040518060200160405280600081525061326a565b80613249846139ae565b60405160200161325a929190615d97565b6040516020818303038152906040525b915050919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061333d57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061334d575061334c82613a7c565b5b9050919050565b808061338d5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156134c157600061339d846129a4565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561340857508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561341b57506134198184612599565b155b1561345d57826040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526004016134549190614139565b60405180910390fd5b81156134bf57838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60008061352584612ea9565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461356757613566818486613ae6565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146135f8576135a9600085600080613354565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461367b576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b61373d8282611bee565b6137805780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401613777929190615e5e565b60405180910390fd5b5050565b61378c611605565b6137c2576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6137ce8383613baa565b6137db60008484846137e0565b505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b1115613991578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02613824612a69565b8685856040518563ffffffff1660e01b81526004016138469493929190615edc565b6020604051808303816000875af192505050801561388257506040513d601f19601f8201168201806040525081019061387f9190615f3d565b60015b613906573d80600081146138b2576040519150601f19603f3d011682016040523d82523d6000602084013e6138b7565b606091505b5060008151036138fe57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016138f59190614139565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461398f57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016139869190614139565b60405180910390fd5b505b50505050565b606060405180602001604052806000815250905090565b6060600060016139bd84613ca3565b01905060008167ffffffffffffffff8111156139dc576139db614317565b5b6040519080825280601f01601f191660200182016040528015613a0e5781602001600182028036833780820191505090505b509050600082602001820190505b600115613a71578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581613a6557613a64615f6a565b5b04945060008503613a1c575b819350505050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b613af1838383613df6565b613ba557600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613b6657806040517f7e273289000000000000000000000000000000000000000000000000000000008152600401613b5d9190614ee4565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401613b9c929190615f99565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613c1c5760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401613c139190614139565b60405180910390fd5b6000613c2a83836000613519565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613c9e5760006040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600401613c959190614139565b60405180910390fd5b505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613d01577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381613cf757613cf6615f6a565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310613d3e576d04ee2d6d415b85acef81000000008381613d3457613d33615f6a565b5b0492506020810190505b662386f26fc100008310613d6d57662386f26fc100008381613d6357613d62615f6a565b5b0492506010810190505b6305f5e1008310613d96576305f5e1008381613d8c57613d8b615f6a565b5b0492506008810190505b6127108310613dbb576127108381613db157613db0615f6a565b5b0492506004810190505b60648310613dde5760648381613dd457613dd3615f6a565b5b0492506002810190505b600a8310613ded576001810190505b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613eae57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480613e6f5750613e6e8484612599565b5b80613ead57508273ffffffffffffffffffffffffffffffffffffffff16613e9583612a2c565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b6040518061014001604052806060815260200160608152602001600061ffff1681526020016060815260200160608152602001600063ffffffff168152602001606081526020016000815260200160608152602001606081525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613f5d81613f28565b8114613f6857600080fd5b50565b600081359050613f7a81613f54565b92915050565b600060208284031215613f9657613f95613f1e565b5b6000613fa484828501613f6b565b91505092915050565b60008115159050919050565b613fc281613fad565b82525050565b6000602082019050613fdd6000830184613fb9565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561401d578082015181840152602081019050614002565b60008484015250505050565b6000601f19601f8301169050919050565b600061404582613fe3565b61404f8185613fee565b935061405f818560208601613fff565b61406881614029565b840191505092915050565b6000602082019050818103600083015261408d818461403a565b905092915050565b6000819050919050565b6140a881614095565b81146140b357600080fd5b50565b6000813590506140c58161409f565b92915050565b6000602082840312156140e1576140e0613f1e565b5b60006140ef848285016140b6565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614123826140f8565b9050919050565b61413381614118565b82525050565b600060208201905061414e600083018461412a565b92915050565b61415d81614118565b811461416857600080fd5b50565b60008135905061417a81614154565b92915050565b6000806040838503121561419757614196613f1e565b5b60006141a58582860161416b565b92505060206141b6858286016140b6565b9150509250929050565b6000602082840312156141d6576141d5613f1e565b5b60006141e48482850161416b565b91505092915050565b60008060006060848603121561420657614205613f1e565b5b60006142148682870161416b565b93505060206142258682870161416b565b9250506040614236868287016140b6565b9150509250925092565b6000819050919050565b61425381614240565b811461425e57600080fd5b50565b6000813590506142708161424a565b92915050565b60006020828403121561428c5761428b613f1e565b5b600061429a84828501614261565b91505092915050565b6142ac81614240565b82525050565b60006020820190506142c760008301846142a3565b92915050565b600080604083850312156142e4576142e3613f1e565b5b60006142f285828601614261565b92505060206143038582860161416b565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61434f82614029565b810181811067ffffffffffffffff8211171561436e5761436d614317565b5b80604052505050565b6000614381613f14565b905061438d8282614346565b919050565b600067ffffffffffffffff8211156143ad576143ac614317565b5b6143b682614029565b9050602081019050919050565b82818337600083830152505050565b60006143e56143e084614392565b614377565b90508281526020810184848401111561440157614400614312565b5b61440c8482856143c3565b509392505050565b600082601f8301126144295761442861430d565b5b81356144398482602086016143d2565b91505092915050565b60006020828403121561445857614457613f1e565b5b600082013567ffffffffffffffff81111561447657614475613f23565b5b61448284828501614414565b91505092915050565b600082825260208201905092915050565b60006144a782613fe3565b6144b1818561448b565b93506144c1818560208601613fff565b6144ca81614029565b840191505092915050565b600061ffff82169050919050565b6144ec816144d5565b82525050565b600063ffffffff82169050919050565b61450b816144f2565b82525050565b61451a81614095565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61455581614118565b82525050565b6000614567838361454c565b60208301905092915050565b6000602082019050919050565b600061458b82614520565b614595818561452b565b93506145a08361453c565b8060005b838110156145d15781516145b8888261455b565b97506145c383614573565b9250506001810190506145a4565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006060830160008301516146226000860182614511565b506020830151848203602086015261463a828261449c565b915050604083015161464f604086018261454c565b508091505092915050565b6000614666838361460a565b905092915050565b6000602082019050919050565b6000614686826145de565b61469081856145e9565b9350836020820285016146a2856145fa565b8060005b858110156146de57848403895281516146bf858261465a565b94506146ca8361466e565b925060208a019950506001810190506146a6565b50829750879550505050505092915050565b600061014083016000830151848203600086015261470e828261449c565b91505060208301518482036020860152614728828261449c565b915050604083015161473d60408601826144e3565b5060608301518482036060860152614755828261449c565b9150506080830151848203608086015261476f828261449c565b91505060a083015161478460a0860182614502565b5060c083015184820360c086015261479c828261449c565b91505060e08301516147b160e0860182614511565b506101008301518482036101008601526147cb8282614580565b9150506101208301518482036101208601526147e7828261467b565b9150508091505092915050565b6000602082019050818103600083015261480e81846146f0565b905092915050565b600067ffffffffffffffff82111561483157614830614317565b5b602082029050602081019050919050565b600080fd5b600061485a61485584614816565b614377565b9050808382526020820190506020840283018581111561487d5761487c614842565b5b835b818110156148a65780614892888261416b565b84526020840193505060208101905061487f565b5050509392505050565b600082601f8301126148c5576148c461430d565b5b81356148d5848260208601614847565b91505092915050565b600067ffffffffffffffff8211156148f9576148f8614317565b5b602082029050602081019050919050565b600061491d614918846148de565b614377565b905080838252602082019050602084028301858111156149405761493f614842565b5b835b8181101561498757803567ffffffffffffffff8111156149655761496461430d565b5b8086016149728982614414565b85526020850194505050602081019050614942565b5050509392505050565b600082601f8301126149a6576149a561430d565b5b81356149b684826020860161490a565b91505092915050565b600067ffffffffffffffff8211156149da576149d9614317565b5b602082029050602081019050919050565b6149f4816144d5565b81146149ff57600080fd5b50565b600081359050614a11816149eb565b92915050565b6000614a2a614a25846149bf565b614377565b90508083825260208201905060208402830185811115614a4d57614a4c614842565b5b835b81811015614a765780614a628882614a02565b845260208401935050602081019050614a4f565b5050509392505050565b600082601f830112614a9557614a9461430d565b5b8135614aa5848260208601614a17565b91505092915050565b600067ffffffffffffffff821115614ac957614ac8614317565b5b602082029050602081019050919050565b614ae3816144f2565b8114614aee57600080fd5b50565b600081359050614b0081614ada565b92915050565b6000614b19614b1484614aae565b614377565b90508083825260208201905060208402830185811115614b3c57614b3b614842565b5b835b81811015614b655780614b518882614af1565b845260208401935050602081019050614b3e565b5050509392505050565b600082601f830112614b8457614b8361430d565b5b8135614b94848260208601614b06565b91505092915050565b60008060008060008060008060006101208a8c031215614bc057614bbf613f1e565b5b60008a013567ffffffffffffffff811115614bde57614bdd613f23565b5b614bea8c828d016148b0565b99505060208a013567ffffffffffffffff811115614c0b57614c0a613f23565b5b614c178c828d01614991565b98505060408a013567ffffffffffffffff811115614c3857614c37613f23565b5b614c448c828d01614991565b97505060608a013567ffffffffffffffff811115614c6557614c64613f23565b5b614c718c828d01614a80565b96505060808a013567ffffffffffffffff811115614c9257614c91613f23565b5b614c9e8c828d01614991565b95505060a08a013567ffffffffffffffff811115614cbf57614cbe613f23565b5b614ccb8c828d01614991565b94505060c08a013567ffffffffffffffff811115614cec57614ceb613f23565b5b614cf88c828d01614b6f565b93505060e08a013567ffffffffffffffff811115614d1957614d18613f23565b5b614d258c828d01614991565b9250506101008a013567ffffffffffffffff811115614d4757614d46613f23565b5b614d538c828d01614991565b9150509295985092959850929598565b60008060008060008060008060006101208a8c031215614d8657614d85613f1e565b5b6000614d948c828d0161416b565b99505060208a013567ffffffffffffffff811115614db557614db4613f23565b5b614dc18c828d01614414565b98505060408a013567ffffffffffffffff811115614de257614de1613f23565b5b614dee8c828d01614414565b9750506060614dff8c828d01614a02565b96505060808a013567ffffffffffffffff811115614e2057614e1f613f23565b5b614e2c8c828d01614414565b95505060a08a013567ffffffffffffffff811115614e4d57614e4c613f23565b5b614e598c828d01614414565b94505060c0614e6a8c828d01614af1565b93505060e08a013567ffffffffffffffff811115614e8b57614e8a613f23565b5b614e978c828d01614414565b9250506101008a013567ffffffffffffffff811115614eb957614eb8613f23565b5b614ec58c828d01614414565b9150509295985092959850929598565b614ede81614095565b82525050565b6000602082019050614ef96000830184614ed5565b92915050565b6000819050919050565b6000614f24614f1f614f1a846140f8565b614eff565b6140f8565b9050919050565b6000614f3682614f09565b9050919050565b6000614f4882614f2b565b9050919050565b614f5881614f3d565b82525050565b6000602082019050614f736000830184614f4f565b92915050565b614f8281613fad565b8114614f8d57600080fd5b50565b600081359050614f9f81614f79565b92915050565b60008060408385031215614fbc57614fbb613f1e565b5b6000614fca8582860161416b565b9250506020614fdb85828601614f90565b9150509250929050565b600067ffffffffffffffff82111561500057614fff614317565b5b61500982614029565b9050602081019050919050565b600061502961502484614fe5565b614377565b90508281526020810184848401111561504557615044614312565b5b6150508482856143c3565b509392505050565b600082601f83011261506d5761506c61430d565b5b813561507d848260208601615016565b91505092915050565b600080600080608085870312156150a05761509f613f1e565b5b60006150ae8782880161416b565b94505060206150bf8782880161416b565b93505060406150d0878288016140b6565b925050606085013567ffffffffffffffff8111156150f1576150f0613f23565b5b6150fd87828801615058565b91505092959194509250565b600080604083850312156151205761511f613f1e565b5b600061512e858286016140b6565b925050602083013567ffffffffffffffff81111561514f5761514e613f23565b5b61515b85828601614414565b9150509250929050565b6000806000806080858703121561517f5761517e613f1e565b5b600061518d878288016140b6565b945050602085013567ffffffffffffffff8111156151ae576151ad613f23565b5b6151ba87828801614414565b93505060406151cb87828801614af1565b925050606085013567ffffffffffffffff8111156151ec576151eb613f23565b5b6151f887828801614414565b91505092959194509250565b60008060006060848603121561521d5761521c613f1e565b5b600061522b868287016140b6565b935050602084013567ffffffffffffffff81111561524c5761524b613f23565b5b61525886828701614414565b92505060406152698682870161416b565b9150509250925092565b6000806040838503121561528a57615289613f1e565b5b60006152988582860161416b565b92505060206152a98582860161416b565b9150509250929050565b600082825260208201905092915050565b60006152cf82614520565b6152d981856152b3565b93506152e48361453c565b8060005b838110156153155781516152fc888261455b565b975061530783614573565b9250506001810190506152e8565b5085935050505092915050565b6000602082019050818103600083015261533c81846152c4565b905092915050565b6000806040838503121561535b5761535a613f1e565b5b6000615369858286016140b6565b925050602061537a858286016140b6565b9150509250929050565b60006040820190506153996000830185614ed5565b6153a66020830184614ed5565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806153f457607f821691505b602082108103615407576154066153ad565b5b50919050565b7f496e76616c696420636f6e747261637420616464726573730000000000000000600082015250565b6000615443601883613fee565b915061544e8261540d565b602082019050919050565b6000602082019050818103600083015261547281615436565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026154db7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261549e565b6154e5868361549e565b95508019841693508086168417925050509392505050565b600061551861551361550e84614095565b614eff565b614095565b9050919050565b6000819050919050565b615532836154fd565b61554661553e8261551f565b8484546154ab565b825550505050565b600090565b61555b61554e565b615566818484615529565b505050565b5b8181101561558a5761557f600082615553565b60018101905061556c565b5050565b601f8211156155cf576155a081615479565b6155a98461548e565b810160208510156155b8578190505b6155cc6155c48561548e565b83018261556b565b50505b505050565b600082821c905092915050565b60006155f2600019846008026155d4565b1980831691505092915050565b600061560b83836155e1565b9150826002028217905092915050565b61562482613fe3565b67ffffffffffffffff81111561563d5761563c614317565b5b61564782546153dc565b61565282828561558e565b600060209050601f8311600181146156855760008415615673578287015190505b61567d85826155ff565b8655506156e5565b601f19841661569386615479565b60005b828110156156bb57848901518255600182019150602085019450602081019050615696565b868310156156d857848901516156d4601f8916826155e1565b8355505b6001600288020188555050505b505050505050565b7f43617220616c7265616479207665726966696564000000000000000000000000600082015250565b6000615723601483613fee565b915061572e826156ed565b602082019050919050565b6000602082019050818103600083015261575281615716565b9050919050565b7f546f6b656e20646f6573206e6f74206578697374000000000000000000000000600082015250565b600061578f601483613fee565b915061579a82615759565b602082019050919050565b600060208201905081810360008301526157be81615782565b9050919050565b7f496e70757420617272617973206d7573742068617665207468652073616d652060008201527f6c656e6774680000000000000000000000000000000000000000000000000000602082015250565b6000615821602683613fee565b915061582c826157c5565b604082019050919050565b6000602082019050818103600083015261585081615814565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081905092915050565b600061589c82613fe3565b6158a68185615886565b93506158b6818560208601613fff565b80840191505092915050565b60006158ce8284615891565b915081905092915050565b7f56494e20616c7265616479206578697374730000000000000000000000000000600082015250565b600061590f601283613fee565b915061591a826158d9565b602082019050919050565b6000602082019050818103600083015261593e81615902565b9050919050565b600080fd5b600080fd5b600061596261595d84614392565b614377565b90508281526020810184848401111561597e5761597d614312565b5b615989848285613fff565b509392505050565b600082601f8301126159a6576159a561430d565b5b81516159b684826020860161594f565b91505092915050565b6000815190506159ce8161409f565b92915050565b6000815190506159e381614f79565b92915050565b6000815190506159f881614154565b92915050565b600060e08284031215615a1457615a13615945565b5b615a1e60e0614377565b9050600082015167ffffffffffffffff811115615a3e57615a3d61594a565b5b615a4a84828501615991565b600083015250602082015167ffffffffffffffff811115615a6e57615a6d61594a565b5b615a7a84828501615991565b602083015250604082015167ffffffffffffffff811115615a9e57615a9d61594a565b5b615aaa84828501615991565b6040830152506060615abe848285016159bf565b6060830152506080615ad2848285016159d4565b60808301525060a0615ae6848285016159bf565b60a08301525060c0615afa848285016159e9565b60c08301525092915050565b600060208284031215615b1c57615b1b613f1e565b5b600082015167ffffffffffffffff811115615b3a57615b39613f23565b5b615b46848285016159fe565b91505092915050565b7f436172206973206e6f7420766572696669656400000000000000000000000000600082015250565b6000615b85601383613fee565b9150615b9082615b4f565b602082019050919050565b60006020820190508181036000830152615bb481615b78565b9050919050565b7f4d696e746572206973206e6f7420746865207665726966696564206f776e657260008201527f206f662074686520636172000000000000000000000000000000000000000000602082015250565b6000615c17602b83613fee565b9150615c2282615bbb565b604082019050919050565b60006020820190508181036000830152615c4681615c0a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000615c8782614095565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615cb957615cb8615c4d565b5b600182019050919050565b60006040820190508181036000830152615cde818561403a565b9050615ced6020830184613fb9565b9392505050565b7f4e65772056494e20616c72656164792065786973747300000000000000000000600082015250565b6000615d2a601683613fee565b9150615d3582615cf4565b602082019050919050565b60006020820190508181036000830152615d5981615d1d565b9050919050565b60006040820190508181036000830152615d7a818561403a565b90508181036020830152615d8e818461403a565b90509392505050565b6000615da38285615891565b9150615daf8284615891565b91508190509392505050565b7f4e6f7420617070726f766564206f72206f776e65720000000000000000000000600082015250565b6000615df1601583613fee565b9150615dfc82615dbb565b602082019050919050565b60006020820190508181036000830152615e2081615de4565b9050919050565b6000606082019050615e3c600083018661412a565b615e496020830185614ed5565b615e56604083018461412a565b949350505050565b6000604082019050615e73600083018561412a565b615e8060208301846142a3565b9392505050565b600081519050919050565b600082825260208201905092915050565b6000615eae82615e87565b615eb88185615e92565b9350615ec8818560208601613fff565b615ed181614029565b840191505092915050565b6000608082019050615ef1600083018761412a565b615efe602083018661412a565b615f0b6040830185614ed5565b8181036060830152615f1d8184615ea3565b905095945050505050565b600081519050615f3781613f54565b92915050565b600060208284031215615f5357615f52613f1e565b5b6000615f6184828501615f28565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000604082019050615fae600083018561412a565b615fbb6020830184614ed5565b939250505056fea2646970667358221220d6438e5128b20056daf61f55eee5d04edb7a62965e307677b4c4bd3af060ea5b64736f6c63430008180033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000a7f967429dd85844e6583308374ca6117daae1a7000000000000000000000000000000000000000000000000000000000000000f56696e7461676520436172204e46540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000556434e4654000000000000000000000000000000000000000000000000000000