6080604052662386f26fc10000600a557304023220c3fef7aa1a8859fa26f049aa5cf0afa4600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507381a2716e594d8ee6f5ddbdda344ed45d38894f3c600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c5de42b455e44b17bac949beaab967dd08dd96a1600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200011b57600080fd5b5060405162004437380380620044378339818101604052810190620001419190620005a8565b6040518060400160405280600781526020017f4d55484c414459000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4d554800000000000000000000000000000000000000000000000000000000008152508160029081620001be919062000854565b508060039081620001d0919062000854565b50620001e16200022a60201b60201c565b600081905550505062000209620001fd6200023360201b60201c565b6200023b60201b60201c565b80600e81905550620002233360326200030160201b60201c565b506200093b565b60006001905090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000805490506000820362000342576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b620003576000848385620004e860201b60201c565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550620003e683620003c86000866000620004ee60201b60201c565b620003d9856200051e60201b60201c565b176200052e60201b60201c565b6004600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b8181146200048957808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a46001810190506200044c565b5060008203620004c5576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000819055505050620004e360008483856200055960201b60201c565b505050565b50505050565b60008060e883901c905060e86200050d8686846200055f60201b60201c565b62ffffff16901b9150509392505050565b60006001821460e11b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b60009392505050565b600080fd5b6000819050919050565b62000582816200056d565b81146200058e57600080fd5b50565b600081519050620005a28162000577565b92915050565b600060208284031215620005c157620005c062000568565b5b6000620005d18482850162000591565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200065c57607f821691505b60208210810362000672576200067162000614565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006dc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200069d565b620006e886836200069d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007356200072f620007298462000700565b6200070a565b62000700565b9050919050565b6000819050919050565b620007518362000714565b6200076962000760826200073c565b848454620006aa565b825550505050565b600090565b6200078062000771565b6200078d81848462000746565b505050565b5b81811015620007b557620007a960008262000776565b60018101905062000793565b5050565b601f8211156200080457620007ce8162000678565b620007d9846200068d565b81016020851015620007e9578190505b62000801620007f8856200068d565b83018262000792565b50505b505050565b600082821c905092915050565b6000620008296000198460080262000809565b1980831691505092915050565b600062000844838362000816565b9150826002028217905092915050565b6200085f82620005da565b67ffffffffffffffff8111156200087b576200087a620005e5565b5b62000887825462000643565b62000894828285620007b9565b600060209050601f831160018114620008cc5760008415620008b7578287015190505b620008c3858262000836565b86555062000933565b601f198416620008dc8662000678565b60005b828110156200090657848901518255600182019150602085019450602081019050620008df565b8683101562000926578489015162000922601f89168262000816565b8355505b6001600288020188555050505b505050505050565b613aec806200094b6000396000f3fe6080604052600436106102305760003560e01c806379da16d51161012e578063a22cb465116100ab578063c884ef831161006f578063c884ef83146107da578063df9cfef614610817578063e985e9c514610842578063f2fde38b1461087f578063f4a0a528146108a857610230565b8063a22cb46514610702578063a836f7d11461072b578063b88d4fde14610756578063c1eb5ddd14610772578063c87b56dd1461079d57610230565b806395d89b41116100f257806395d89b411461063c5780639abc8320146106675780639da3f8fd14610692578063a0712d68146106bd578063a0bcfc7f146106d957610230565b806379da16d5146105695780637cb647591461059457806385b4784f146105bd57806386d4c07c146105e85780638da5cb5b1461061157610230565b806331a53e9a116101bc5780635c0bc9a7116101805780635c0bc9a7146104825780636352211e146104ad5780636817c76c146104ea57806370a0823114610515578063715018a61461055257610230565b806331a53e9a146103ce57806332cb6b0c146103f95780633a516c13146104245780633ccfd60b1461044f57806342842e0e1461046657610230565b80630e31d429116102035780630e31d429146102f657806318160ddd146103335780631f85e3ca1461035e57806323b872dd146103875780632eb4a7ab146103a357610230565b806301ffc9a71461023557806306fdde0314610272578063081812fc1461029d578063095ea7b3146102da575b600080fd5b34801561024157600080fd5b5061025c6004803603810190610257919061288d565b6108d1565b60405161026991906128d5565b60405180910390f35b34801561027e57600080fd5b50610287610963565b6040516102949190612980565b60405180910390f35b3480156102a957600080fd5b506102c460048036038101906102bf91906129d8565b6109f5565b6040516102d19190612a46565b60405180910390f35b6102f460048036038101906102ef9190612a8d565b610a74565b005b34801561030257600080fd5b5061031d60048036038101906103189190612a8d565b610bb8565b60405161032a91906128d5565b60405180910390f35b34801561033f57600080fd5b50610348610be7565b6040516103559190612adc565b60405180910390f35b34801561036a57600080fd5b5061038560048036038101906103809190612b23565b610bfe565b005b6103a1600480360381019061039c9190612b50565b610c23565b005b3480156103af57600080fd5b506103b8610f45565b6040516103c59190612bbc565b60405180910390f35b3480156103da57600080fd5b506103e3610f4b565b6040516103f09190612adc565b60405180910390f35b34801561040557600080fd5b5061040e610f51565b60405161041b9190612adc565b60405180910390f35b34801561043057600080fd5b50610439610f57565b6040516104469190612a46565b60405180910390f35b34801561045b57600080fd5b50610464610f6f565b005b610480600480360381019061047b9190612b50565b610fc6565b005b34801561048e57600080fd5b50610497610fe6565b6040516104a49190612a46565b60405180910390f35b3480156104b957600080fd5b506104d460048036038101906104cf91906129d8565b610ffe565b6040516104e19190612a46565b60405180910390f35b3480156104f657600080fd5b506104ff611010565b60405161050c9190612adc565b60405180910390f35b34801561052157600080fd5b5061053c60048036038101906105379190612bd7565b611016565b6040516105499190612adc565b60405180910390f35b34801561055e57600080fd5b506105676110ce565b005b34801561057557600080fd5b5061057e6110e2565b60405161058b9190612a46565b60405180910390f35b3480156105a057600080fd5b506105bb60048036038101906105b69190612c30565b6110fa565b005b3480156105c957600080fd5b506105d261110c565b6040516105df9190612c7e565b60405180910390f35b3480156105f457600080fd5b5061060f600480360381019061060a9190612cfe565b611132565b005b34801561061d57600080fd5b5061062661162b565b6040516106339190612a46565b60405180910390f35b34801561064857600080fd5b50610651611655565b60405161065e9190612980565b60405180910390f35b34801561067357600080fd5b5061067c6116e7565b6040516106899190612980565b60405180910390f35b34801561069e57600080fd5b506106a7611775565b6040516106b491906128d5565b60405180910390f35b6106d760048036038101906106d291906129d8565b611788565b005b3480156106e557600080fd5b5061070060048036038101906106fb9190612e7b565b611a26565b005b34801561070e57600080fd5b5061072960048036038101906107249190612ec4565b611a41565b005b34801561073757600080fd5b50610740611b4c565b60405161074d9190612a46565b60405180910390f35b610770600480360381019061076b9190612fa5565b611b64565b005b34801561077e57600080fd5b50610787611bd7565b6040516107949190612c7e565b60405180910390f35b3480156107a957600080fd5b506107c460048036038101906107bf91906129d8565b611bfd565b6040516107d19190612980565b60405180910390f35b3480156107e657600080fd5b5061080160048036038101906107fc9190612bd7565b611ca4565b60405161080e91906128d5565b60405180910390f35b34801561082357600080fd5b5061082c611cc4565b6040516108399190612c7e565b60405180910390f35b34801561084e57600080fd5b5061086960048036038101906108649190613028565b611cea565b60405161087691906128d5565b60405180910390f35b34801561088b57600080fd5b506108a660048036038101906108a19190612bd7565b611d7e565b005b3480156108b457600080fd5b506108cf60048036038101906108ca91906129d8565b611e01565b005b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061092c57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061095c5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606002805461097290613097565b80601f016020809104026020016040519081016040528092919081815260200182805461099e90613097565b80156109eb5780601f106109c0576101008083540402835291602001916109eb565b820191906000526020600020905b8154815290600101906020018083116109ce57829003601f168201915b5050505050905090565b6000610a0082611e13565b610a36576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a7f82610ffe565b90508073ffffffffffffffffffffffffffffffffffffffff16610aa0611e72565b73ffffffffffffffffffffffffffffffffffffffff1614610b0357610acc81610ac7611e72565b611cea565b610b02576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826006600084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60116020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b6000610bf1611e7a565b6001546000540303905090565b610c06611e83565b80600f60006101000a81548160ff02191690831515021790555050565b6000610c2e82611f01565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c95576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610ca184611fcd565b91509150610cb78187610cb2611e72565b611ff4565b610d0357610ccc86610cc7611e72565b611cea565b610d02576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610d69576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d768686866001612038565b8015610d8157600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815460010191905081905550610e4f85610e2b88888761203e565b7c020000000000000000000000000000000000000000000000000000000017612066565b600460008681526020019081526020016000208190555060007c0200000000000000000000000000000000000000000000000000000000841603610ed55760006001850190506000600460008381526020019081526020016000205403610ed3576000548114610ed2578360046000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610f3d8686866001612091565b505050505050565b600e5481565b6103e881565b611a0a81565b735af0d9827e0c53e4799bb226655a1de152a425a581565b610f77611e83565b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610fc2573d6000803e3d6000fd5b5050565b610fe183838360405180602001604052806000815250611b64565b505050565b73e83c9f09b0992e4a34faf125ed4fedd3407c4a2381565b600061100982611f01565b9050919050565b600a5481565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361107d576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b6110d6611e83565b6110e06000612097565b565b73bfe47d6d4090940d1c7a0066b63d23875e3e2ac581565b611102611e83565b80600e8190555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900460ff16611181576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117890613114565b60405180910390fd5b611a0a600161118e61215d565b6111989190613163565b11156111d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d0906131e3565b60405180910390fd5b6103e86009541115611220576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112179061324f565b60405180910390fd5b600061122b33612170565b905061127b838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600e5483612193565b8061131457506001735af0d9827e0c53e4799bb226655a1de152a425a573ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016112d09190612a46565b602060405180830381865afa1580156112ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113119190613284565b10155b806113ad5750600173d3d9ddd0cf0a5f0bfb8f7fceae075df687eaebab73ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016113699190612a46565b602060405180830381865afa158015611386573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113aa9190613284565b10155b806114465750600173e83c9f09b0992e4a34faf125ed4fedd3407c4a2373ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016114029190612a46565b602060405180830381865afa15801561141f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114439190613284565b10155b806114df5750600173bfe47d6d4090940d1c7a0066b63d23875e3e2ac573ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161149b9190612a46565b602060405180830381865afa1580156114b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114dc9190613284565b10155b61151e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611515906132fd565b60405180910390fd5b601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156115ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a290613369565b60405180910390fd5b6001601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009600081548092919061161690613389565b91905055506116263360016121aa565b505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606003805461166490613097565b80601f016020809104026020016040519081016040528092919081815260200182805461169090613097565b80156116dd5780601f106116b2576101008083540402835291602001916116dd565b820191906000526020600020905b8154815290600101906020018083116116c057829003601f168201915b5050505050905090565b601280546116f490613097565b80601f016020809104026020016040519081016040528092919081815260200182805461172090613097565b801561176d5780601f106117425761010080835404028352916020019161176d565b820191906000526020600020905b81548152906001019060200180831161175057829003601f168201915b505050505081565b600f60009054906101000a900460ff1681565b600f60009054906101000a900460ff166117d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ce90613114565b60405180910390fd5b611a0a816117e361215d565b6117ed9190613163565b111561182e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611825906131e3565b60405180910390fd5b3481600a5461183d91906133d1565b111561187e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118759061345f565b60405180910390fd5b60003490506000602860648361189491906134ae565b61189e91906133d1565b9050600060286064846118b191906134ae565b6118bb91906133d1565b90506000600a6064856118ce91906134ae565b6118d891906133d1565b9050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015611942573d6000803e3d6000fd5b50600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156119ab573d6000803e3d6000fd5b50600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611a14573d6000803e3d6000fd5b50611a1f33866121aa565b5050505050565b611a2e611e83565b8060129081611a3d919061368b565b5050565b8060076000611a4e611e72565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611afb611e72565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611b4091906128d5565b60405180910390a35050565b73d3d9ddd0cf0a5f0bfb8f7fceae075df687eaebab81565b611b6f848484610c23565b60008373ffffffffffffffffffffffffffffffffffffffff163b14611bd157611b9a84848484612365565b611bd0576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060611c0882611e13565b611c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3e906137cf565b60405180910390fd5b6000611c516124b5565b90506000815111611c715760405180602001604052806000815250611c9c565b80611c7b84612547565b604051602001611c8c929190613877565b6040516020818303038152906040525b915050919050565b60106020528060005260406000206000915054906101000a900460ff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611d86611e83565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dec90613918565b60405180910390fd5b611dfe81612097565b50565b611e09611e83565b80600a8190555050565b600081611e1e611e7a565b11158015611e2d575060005482105b8015611e6b575060007c0100000000000000000000000000000000000000000000000000000000600460008581526020019081526020016000205416145b9050919050565b600033905090565b60006001905090565b611e8b612615565b73ffffffffffffffffffffffffffffffffffffffff16611ea961162b565b73ffffffffffffffffffffffffffffffffffffffff1614611eff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef690613984565b60405180910390fd5b565b60008082905080611f10611e7a565b11611f9657600054811015611f955760006004600083815260200190815260200160002054905060007c0100000000000000000000000000000000000000000000000000000000821603611f93575b60008103611f89576004600083600190039350838152602001908152602001600020549050611f5f565b8092505050611fc8565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60008060006006600085815260200190815260200160002090508092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e861205586868461261d565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612167611e7a565b60005403905090565b60008173ffffffffffffffffffffffffffffffffffffffff1660001b9050919050565b6000826121a08584612626565b1490509392505050565b600080549050600082036121ea576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6121f76000848385612038565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555061226e8361225f600086600061203e565b6122688561267c565b17612066565b6004600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b81811461230f57808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a46001810190506122d4565b506000820361234a576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060008190555050506123606000848385612091565b505050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261238b611e72565b8786866040518563ffffffff1660e01b81526004016123ad94939291906139f9565b6020604051808303816000875af19250505080156123e957506040513d601f19601f820116820180604052508101906123e69190613a5a565b60015b612462573d8060008114612419576040519150601f19603f3d011682016040523d82523d6000602084013e61241e565b606091505b50600081510361245a576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060601280546124c490613097565b80601f01602080910402602001604051908101604052809291908181526020018280546124f090613097565b801561253d5780601f106125125761010080835404028352916020019161253d565b820191906000526020600020905b81548152906001019060200180831161252057829003601f168201915b5050505050905090565b6060600060016125568461268c565b01905060008167ffffffffffffffff81111561257557612574612d50565b5b6040519080825280601f01601f1916602001820160405280156125a75781602001600182028036833780820191505090505b509050600082602001820190505b60011561260a578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816125fe576125fd61347f565b5b049450600085036125b5575b819350505050919050565b600033905090565b60009392505050565b60008082905060005b84518110156126715761265c8286838151811061264f5761264e613a87565b5b60200260200101516127df565b9150808061266990613389565b91505061262f565b508091505092915050565b60006001821460e11b9050919050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106126ea577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816126e0576126df61347f565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612727576d04ee2d6d415b85acef8100000000838161271d5761271c61347f565b5b0492506020810190505b662386f26fc10000831061275657662386f26fc10000838161274c5761274b61347f565b5b0492506010810190505b6305f5e100831061277f576305f5e10083816127755761277461347f565b5b0492506008810190505b61271083106127a457612710838161279a5761279961347f565b5b0492506004810190505b606483106127c757606483816127bd576127bc61347f565b5b0492506002810190505b600a83106127d6576001810190505b80915050919050565b60008183106127f7576127f2828461280a565b612802565b612801838361280a565b5b905092915050565b600082600052816020526040600020905092915050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61286a81612835565b811461287557600080fd5b50565b60008135905061288781612861565b92915050565b6000602082840312156128a3576128a261282b565b5b60006128b184828501612878565b91505092915050565b60008115159050919050565b6128cf816128ba565b82525050565b60006020820190506128ea60008301846128c6565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561292a57808201518184015260208101905061290f565b60008484015250505050565b6000601f19601f8301169050919050565b6000612952826128f0565b61295c81856128fb565b935061296c81856020860161290c565b61297581612936565b840191505092915050565b6000602082019050818103600083015261299a8184612947565b905092915050565b6000819050919050565b6129b5816129a2565b81146129c057600080fd5b50565b6000813590506129d2816129ac565b92915050565b6000602082840312156129ee576129ed61282b565b5b60006129fc848285016129c3565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a3082612a05565b9050919050565b612a4081612a25565b82525050565b6000602082019050612a5b6000830184612a37565b92915050565b612a6a81612a25565b8114612a7557600080fd5b50565b600081359050612a8781612a61565b92915050565b60008060408385031215612aa457612aa361282b565b5b6000612ab285828601612a78565b9250506020612ac3858286016129c3565b9150509250929050565b612ad6816129a2565b82525050565b6000602082019050612af16000830184612acd565b92915050565b612b00816128ba565b8114612b0b57600080fd5b50565b600081359050612b1d81612af7565b92915050565b600060208284031215612b3957612b3861282b565b5b6000612b4784828501612b0e565b91505092915050565b600080600060608486031215612b6957612b6861282b565b5b6000612b7786828701612a78565b9350506020612b8886828701612a78565b9250506040612b99868287016129c3565b9150509250925092565b6000819050919050565b612bb681612ba3565b82525050565b6000602082019050612bd16000830184612bad565b92915050565b600060208284031215612bed57612bec61282b565b5b6000612bfb84828501612a78565b91505092915050565b612c0d81612ba3565b8114612c1857600080fd5b50565b600081359050612c2a81612c04565b92915050565b600060208284031215612c4657612c4561282b565b5b6000612c5484828501612c1b565b91505092915050565b6000612c6882612a05565b9050919050565b612c7881612c5d565b82525050565b6000602082019050612c936000830184612c6f565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612cbe57612cbd612c99565b5b8235905067ffffffffffffffff811115612cdb57612cda612c9e565b5b602083019150836020820283011115612cf757612cf6612ca3565b5b9250929050565b60008060208385031215612d1557612d1461282b565b5b600083013567ffffffffffffffff811115612d3357612d32612830565b5b612d3f85828601612ca8565b92509250509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612d8882612936565b810181811067ffffffffffffffff82111715612da757612da6612d50565b5b80604052505050565b6000612dba612821565b9050612dc68282612d7f565b919050565b600067ffffffffffffffff821115612de657612de5612d50565b5b612def82612936565b9050602081019050919050565b82818337600083830152505050565b6000612e1e612e1984612dcb565b612db0565b905082815260208101848484011115612e3a57612e39612d4b565b5b612e45848285612dfc565b509392505050565b600082601f830112612e6257612e61612c99565b5b8135612e72848260208601612e0b565b91505092915050565b600060208284031215612e9157612e9061282b565b5b600082013567ffffffffffffffff811115612eaf57612eae612830565b5b612ebb84828501612e4d565b91505092915050565b60008060408385031215612edb57612eda61282b565b5b6000612ee985828601612a78565b9250506020612efa85828601612b0e565b9150509250929050565b600067ffffffffffffffff821115612f1f57612f1e612d50565b5b612f2882612936565b9050602081019050919050565b6000612f48612f4384612f04565b612db0565b905082815260208101848484011115612f6457612f63612d4b565b5b612f6f848285612dfc565b509392505050565b600082601f830112612f8c57612f8b612c99565b5b8135612f9c848260208601612f35565b91505092915050565b60008060008060808587031215612fbf57612fbe61282b565b5b6000612fcd87828801612a78565b9450506020612fde87828801612a78565b9350506040612fef878288016129c3565b925050606085013567ffffffffffffffff8111156130105761300f612830565b5b61301c87828801612f77565b91505092959194509250565b6000806040838503121561303f5761303e61282b565b5b600061304d85828601612a78565b925050602061305e85828601612a78565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806130af57607f821691505b6020821081036130c2576130c1613068565b5b50919050565b7f4d696e7420636f6d696e6720736f6f6e00000000000000000000000000000000600082015250565b60006130fe6010836128fb565b9150613109826130c8565b602082019050919050565b6000602082019050818103600083015261312d816130f1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061316e826129a2565b9150613179836129a2565b925082820190508082111561319157613190613134565b5b92915050565b7f4d696e74696e672065786365656473206d617820737570706c79000000000000600082015250565b60006131cd601a836128fb565b91506131d882613197565b602082019050919050565b600060208201905081810360008301526131fc816131c0565b9050919050565b7f416c6c20726573657276656420746f6b656e7320636c61696d65640000000000600082015250565b6000613239601b836128fb565b915061324482613203565b602082019050919050565b600060208201905081810360008301526132688161322c565b9050919050565b60008151905061327e816129ac565b92915050565b60006020828403121561329a5761329961282b565b5b60006132a88482850161326f565b91505092915050565b7f496e76616c696420574c2053706f740000000000000000000000000000000000600082015250565b60006132e7600f836128fb565b91506132f2826132b1565b602082019050919050565b60006020820190508181036000830152613316816132da565b9050919050565b7f416c726561647920636c61696d65640000000000000000000000000000000000600082015250565b6000613353600f836128fb565b915061335e8261331d565b602082019050919050565b6000602082019050818103600083015261338281613346565b9050919050565b6000613394826129a2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133c6576133c5613134565b5b600182019050919050565b60006133dc826129a2565b91506133e7836129a2565b92508282026133f5816129a2565b9150828204841483151761340c5761340b613134565b5b5092915050565b7f4e6f7420656e6f756768204554482073656e7400000000000000000000000000600082015250565b60006134496013836128fb565b915061345482613413565b602082019050919050565b600060208201905081810360008301526134788161343c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006134b9826129a2565b91506134c4836129a2565b9250826134d4576134d361347f565b5b828204905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026135417fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613504565b61354b8683613504565b95508019841693508086168417925050509392505050565b6000819050919050565b600061358861358361357e846129a2565b613563565b6129a2565b9050919050565b6000819050919050565b6135a28361356d565b6135b66135ae8261358f565b848454613511565b825550505050565b600090565b6135cb6135be565b6135d6818484613599565b505050565b5b818110156135fa576135ef6000826135c3565b6001810190506135dc565b5050565b601f82111561363f57613610816134df565b613619846134f4565b81016020851015613628578190505b61363c613634856134f4565b8301826135db565b50505b505050565b600082821c905092915050565b600061366260001984600802613644565b1980831691505092915050565b600061367b8383613651565b9150826002028217905092915050565b613694826128f0565b67ffffffffffffffff8111156136ad576136ac612d50565b5b6136b78254613097565b6136c28282856135fe565b600060209050601f8311600181146136f557600084156136e3578287015190505b6136ed858261366f565b865550613755565b601f198416613703866134df565b60005b8281101561372b57848901518255600182019150602085019450602081019050613706565b868310156137485784890151613744601f891682613651565b8355505b6001600288020188555050505b505050505050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006137b9602f836128fb565b91506137c48261375d565b604082019050919050565b600060208201905081810360008301526137e8816137ac565b9050919050565b600081905092915050565b6000613805826128f0565b61380f81856137ef565b935061381f81856020860161290c565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b60006138616005836137ef565b915061386c8261382b565b600582019050919050565b600061388382856137fa565b915061388f82846137fa565b915061389a82613854565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006139026026836128fb565b915061390d826138a6565b604082019050919050565b60006020820190508181036000830152613931816138f5565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061396e6020836128fb565b915061397982613938565b602082019050919050565b6000602082019050818103600083015261399d81613961565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006139cb826139a4565b6139d581856139af565b93506139e581856020860161290c565b6139ee81612936565b840191505092915050565b6000608082019050613a0e6000830187612a37565b613a1b6020830186612a37565b613a286040830185612acd565b8181036060830152613a3a81846139c0565b905095945050505050565b600081519050613a5481612861565b92915050565b600060208284031215613a7057613a6f61282b565b5b6000613a7e84828501613a45565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea264697066735822122088e265f5946cb3988205f5afb47e6fc5e737eb2f84f212ffacecb4be5a046e7864736f6c634300081200336f098068f447a116d13f2839d74b312cf526ddbc793213f71a052fca02035b4f