60c06040523480156200001157600080fd5b5060405162003e7638038062003e768339818101604052810190620000379190620002cd565b6040518060400160405280601581526020017f416476656e7475726520466f72676520546f6b656e00000000000000000000008152506040518060400160405280600381526020017f414647000000000000000000000000000000000000000000000000000000000081525060126401dcd650008480600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000114576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3508460019081620001c1919062000579565b508360029081620001d3919062000579565b508260ff1660808160ff1681525050608051600a620001f39190620007f0565b8262000200919062000841565b60a0818152505050505050506b19d971e4fe8401e740000000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550506200088c565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002958262000268565b9050919050565b620002a78162000288565b8114620002b357600080fd5b50565b600081519050620002c7816200029c565b92915050565b600060208284031215620002e657620002e562000263565b5b6000620002f684828501620002b6565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200038157607f821691505b60208210810362000397576200039662000339565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003c2565b6200040d8683620003c2565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200045a620004546200044e8462000425565b6200042f565b62000425565b9050919050565b6000819050919050565b620004768362000439565b6200048e620004858262000461565b848454620003cf565b825550505050565b600090565b620004a562000496565b620004b28184846200046b565b505050565b5b81811015620004da57620004ce6000826200049b565b600181019050620004b8565b5050565b601f8211156200052957620004f3816200039d565b620004fe84620003b2565b810160208510156200050e578190505b620005266200051d85620003b2565b830182620004b7565b50505b505050565b600082821c905092915050565b60006200054e600019846008026200052e565b1980831691505092915050565b60006200056983836200053b565b9150826002028217905092915050565b6200058482620002ff565b67ffffffffffffffff811115620005a0576200059f6200030a565b5b620005ac825462000368565b620005b9828285620004de565b600060209050601f831160018114620005f15760008415620005dc578287015190505b620005e885826200055b565b86555062000658565b601f19841662000601866200039d565b60005b828110156200062b5784890151825560018201915060208501945060208101905062000604565b868310156200064b578489015162000647601f8916826200053b565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620006ee57808604811115620006c657620006c562000660565b5b6001851615620006d65780820291505b8081029050620006e6856200068f565b9450620006a6565b94509492505050565b600082620007095760019050620007dc565b81620007195760009050620007dc565b81600181146200073257600281146200073d5762000773565b6001915050620007dc565b60ff84111562000752576200075162000660565b5b8360020a9150848211156200076c576200076b62000660565b5b50620007dc565b5060208310610133831016604e8410600b8410161715620007ad5782820a905083811115620007a757620007a662000660565b5b620007dc565b620007bc84848460016200069c565b92509050818404811115620007d657620007d562000660565b5b81810290505b9392505050565b600060ff82169050919050565b6000620007fd8262000425565b91506200080a83620007e3565b9250620008397fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006f7565b905092915050565b60006200084e8262000425565b91506200085b8362000425565b92508282026200086b8162000425565b9150828204841483151762000885576200088462000660565b5b5092915050565b60805160a0516135bd620008b960003960006108a001526000818161121e0152611bfe01526135bd6000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c806370a08231116100de578063b88d4fde11610097578063dd62ed3e11610071578063dd62ed3e1461044c578063e0df5b6f1461047c578063e985e9c514610498578063f2fde38b146104c857610173565b8063b88d4fde146103e2578063c87b56dd146103fe578063d547cfb71461042e57610173565b806370a08231146102fa5780638da5cb5b1461032a57806395d89b41146103485780639b19251a14610366578063a22cb46514610396578063a9059cbb146103b257610173565b8063313ce56711610130578063313ce5671461023a57806342842e0e146102585780634f02c42014610274578063504334c21461029257806353d6fd59146102ae5780636352211e146102ca57610173565b806306fdde0314610178578063081812fc14610196578063095ea7b3146101c657806318160ddd146101f657806323b872dd146102145780632b96895814610230575b600080fd5b6101806104e4565b60405161018d9190612762565b60405180910390f35b6101b060048036038101906101ab91906127ce565b610572565b6040516101bd919061283c565b60405180910390f35b6101e060048036038101906101db9190612883565b6105a5565b6040516101ed91906128de565b60405180910390f35b6101fe61089e565b60405161020b9190612908565b60405180910390f35b61022e60048036038101906102299190612923565b6108c2565b005b6102386110f9565b005b61024261121c565b60405161024f9190612992565b60405180910390f35b610272600480360381019061026d9190612923565b611240565b005b61027c611373565b6040516102899190612908565b60405180910390f35b6102ac60048036038101906102a79190612ae2565b611379565b005b6102c860048036038101906102c39190612b86565b61140c565b005b6102e460048036038101906102df91906127ce565b6114ec565b6040516102f1919061283c565b60405180910390f35b610314600480360381019061030f9190612bc6565b61158f565b6040516103219190612908565b60405180910390f35b6103326115a7565b60405161033f919061283c565b60405180910390f35b6103506115cb565b60405161035d9190612762565b60405180910390f35b610380600480360381019061037b9190612bc6565b611659565b60405161038d91906128de565b60405180910390f35b6103b060048036038101906103ab9190612b86565b611679565b005b6103cc60048036038101906103c79190612883565b611776565b6040516103d991906128de565b60405180910390f35b6103fc60048036038101906103f79190612c53565b61178b565b005b610418600480360381019061041391906127ce565b6118c4565b6040516104259190612762565b60405180910390f35b6104366118f8565b6040516104439190612762565b60405180910390f35b61046660048036038101906104619190612cdb565b611986565b6040516104739190612908565b60405180910390f35b61049660048036038101906104919190612d1b565b6119ab565b005b6104b260048036038101906104ad9190612cdb565b611a43565b6040516104bf91906128de565b60405180910390f35b6104e260048036038101906104dd9190612bc6565b611a72565b005b600180546104f190612d93565b80601f016020809104026020016040519081016040528092919081815260200182805461051d90612d93565b801561056a5780601f1061053f5761010080835404028352916020019161056a565b820191906000526020600020905b81548152906001019060200180831161054d57829003601f168201915b505050505081565b60066020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060035482111580156105b95750600082115b156107ad5760006008600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156106b95750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156106f0576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836006600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161079f9190612908565b60405180910390a350610894565b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161088b9190612908565b60405180910390a35b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6003548111610fb1576008600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610963576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109c9576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610a8c5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015610af757506006600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610b2e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b36611bfa565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b849190612df3565b92505081905550610b93611bfa565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816008600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506006600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050610cf79190612df3565b81548110610d0857610d07612e27565b5b9060005260206000200154905080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a60008581526020019081526020016000205481548110610d7a57610d79612e27565b5b9060005260206000200181905550600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480610dd757610dd6612e56565b5b60019003818190600052602060002001600090559055600a600083815260200190815260200160002054600a600083815260200190815260200160002081905550600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208290806001815401808255809150506001900390600052602060002001600090919091909150556001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050610ecd9190612df3565b600a600084815260200190815260200160002081905550818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e031487610f96611bfa565b604051610fa39190612908565b60405180910390a3506110f4565b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110e65781816110659190612df3565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6110f1848484611c3c565b50505b505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461117e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b7f000000000000000000000000000000000000000000000000000000000000000081565b61124b8383836108c2565b60008273ffffffffffffffffffffffffffffffffffffffff163b14158015611337575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b81526004016112d293929190612ebc565b6020604051808303816000875af11580156112f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113159190612f5e565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b1561136e576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60035481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113fe576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114088282611f9b565b5050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611491576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006008600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361158a576040517fc5723b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60046020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600280546115d890612d93565b80601f016020809104026020016040519081016040528092919081815260200182805461160490612d93565b80156116515780601f1061162657610100808354040283529160200191611651565b820191906000526020600020905b81548152906001019060200180831161163457829003601f168201915b505050505081565b600b6020528060005260406000206000915054906101000a900460ff1681565b80600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161176a91906128de565b60405180910390a35050565b6000611783338484611c3c565b905092915050565b6117968585856108c2565b60008473ffffffffffffffffffffffffffffffffffffffff163b14158015611886575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b8152600401611821959493929190612fb8565b6020604051808303816000875af1158015611840573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118649190612f5e565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b156118bd576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b6060600c6118d183611fbf565b6040516020016118e29291906130da565b6040516020818303038152906040529050919050565b600c805461190590612d93565b80601f016020809104026020016040519081016040528092919081815260200182805461193190612d93565b801561197e5780601f106119535761010080835404028352916020019161197e565b820191906000526020600020905b81548152906001019060200180831161196157829003601f168201915b505050505081565b6005602052816000526040600020602052806000526040600020600091509150505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a30576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600c9081611a3f9190613295565b5050565b60076020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611af7576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b5d576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b60007f0000000000000000000000000000000000000000000000000000000000000000600a611c29919061349a565b620f4240611c3791906134e5565b905090565b600080611c47611bfa565b90506000600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905084600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d209190612df3565b9250508190555084600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611e4e57600083600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e129190613556565b8484611e1e9190613556565b611e289190612df3565b905060005b81811015611e4b57611e3e8961208d565b8080600101915050611e2d565b50505b600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f285760008382611ead9190613556565b84600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef89190613556565b611f029190612df3565b905060005b81811015611f2557611f18886122e9565b8080600101915050611f07565b50505b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e03148787604051611f859190612908565b60405180910390a3600193505050509392505050565b8160019081611faa9190613295565b508060029081611fba9190613295565b505050565b606060006001611fce8461257f565b01905060008167ffffffffffffffff811115611fed57611fec6129b7565b5b6040519080825280601f01601f19166020018201604052801561201f5781602001600182028036833780820191505090505b509050600082602001820190505b600115612082578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161207657612075613527565b5b0494506000850361202d575b819350505050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506121839190612df3565b8154811061219457612193612e27565b5b90600052602060002001549050600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806121f0576121ef612e56565b5b60019003818190600052602060002001600090559055600a6000828152602001908152602001600020600090556008600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556006600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905580600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361234f576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60036000815480929190600101919050555060006003549050600073ffffffffffffffffffffffffffffffffffffffff166008600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612401576040517f23369fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816008600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150506001900390600052602060002001600090919091909150556001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506125089190612df3565b600a600083815260200190815260200160002081905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106125dd577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816125d3576125d2613527565b5b0492506040810190505b6d04ee2d6d415b85acef8100000000831061261a576d04ee2d6d415b85acef810000000083816126105761260f613527565b5b0492506020810190505b662386f26fc10000831061264957662386f26fc10000838161263f5761263e613527565b5b0492506010810190505b6305f5e1008310612672576305f5e100838161266857612667613527565b5b0492506008810190505b612710831061269757612710838161268d5761268c613527565b5b0492506004810190505b606483106126ba57606483816126b0576126af613527565b5b0492506002810190505b600a83106126c9576001810190505b80915050919050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561270c5780820151818401526020810190506126f1565b60008484015250505050565b6000601f19601f8301169050919050565b6000612734826126d2565b61273e81856126dd565b935061274e8185602086016126ee565b61275781612718565b840191505092915050565b6000602082019050818103600083015261277c8184612729565b905092915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6127ab81612798565b81146127b657600080fd5b50565b6000813590506127c8816127a2565b92915050565b6000602082840312156127e4576127e361278e565b5b60006127f2848285016127b9565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612826826127fb565b9050919050565b6128368161281b565b82525050565b6000602082019050612851600083018461282d565b92915050565b6128608161281b565b811461286b57600080fd5b50565b60008135905061287d81612857565b92915050565b6000806040838503121561289a5761289961278e565b5b60006128a88582860161286e565b92505060206128b9858286016127b9565b9150509250929050565b60008115159050919050565b6128d8816128c3565b82525050565b60006020820190506128f360008301846128cf565b92915050565b61290281612798565b82525050565b600060208201905061291d60008301846128f9565b92915050565b60008060006060848603121561293c5761293b61278e565b5b600061294a8682870161286e565b935050602061295b8682870161286e565b925050604061296c868287016127b9565b9150509250925092565b600060ff82169050919050565b61298c81612976565b82525050565b60006020820190506129a76000830184612983565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6129ef82612718565b810181811067ffffffffffffffff82111715612a0e57612a0d6129b7565b5b80604052505050565b6000612a21612784565b9050612a2d82826129e6565b919050565b600067ffffffffffffffff821115612a4d57612a4c6129b7565b5b612a5682612718565b9050602081019050919050565b82818337600083830152505050565b6000612a85612a8084612a32565b612a17565b905082815260208101848484011115612aa157612aa06129b2565b5b612aac848285612a63565b509392505050565b600082601f830112612ac957612ac86129ad565b5b8135612ad9848260208601612a72565b91505092915050565b60008060408385031215612af957612af861278e565b5b600083013567ffffffffffffffff811115612b1757612b16612793565b5b612b2385828601612ab4565b925050602083013567ffffffffffffffff811115612b4457612b43612793565b5b612b5085828601612ab4565b9150509250929050565b612b63816128c3565b8114612b6e57600080fd5b50565b600081359050612b8081612b5a565b92915050565b60008060408385031215612b9d57612b9c61278e565b5b6000612bab8582860161286e565b9250506020612bbc85828601612b71565b9150509250929050565b600060208284031215612bdc57612bdb61278e565b5b6000612bea8482850161286e565b91505092915050565b600080fd5b600080fd5b60008083601f840112612c1357612c126129ad565b5b8235905067ffffffffffffffff811115612c3057612c2f612bf3565b5b602083019150836001820283011115612c4c57612c4b612bf8565b5b9250929050565b600080600080600060808688031215612c6f57612c6e61278e565b5b6000612c7d8882890161286e565b9550506020612c8e8882890161286e565b9450506040612c9f888289016127b9565b935050606086013567ffffffffffffffff811115612cc057612cbf612793565b5b612ccc88828901612bfd565b92509250509295509295909350565b60008060408385031215612cf257612cf161278e565b5b6000612d008582860161286e565b9250506020612d118582860161286e565b9150509250929050565b600060208284031215612d3157612d3061278e565b5b600082013567ffffffffffffffff811115612d4f57612d4e612793565b5b612d5b84828501612ab4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612dab57607f821691505b602082108103612dbe57612dbd612d64565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612dfe82612798565b9150612e0983612798565b9250828203905081811115612e2157612e20612dc4565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600082825260208201905092915050565b50565b6000612ea6600083612e85565b9150612eb182612e96565b600082019050919050565b6000608082019050612ed1600083018661282d565b612ede602083018561282d565b612eeb60408301846128f9565b8181036060830152612efc81612e99565b9050949350505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612f3b81612f06565b8114612f4657600080fd5b50565b600081519050612f5881612f32565b92915050565b600060208284031215612f7457612f7361278e565b5b6000612f8284828501612f49565b91505092915050565b6000612f978385612e85565b9350612fa4838584612a63565b612fad83612718565b840190509392505050565b6000608082019050612fcd600083018861282d565b612fda602083018761282d565b612fe760408301866128f9565b8181036060830152612ffa818486612f8b565b90509695505050505050565b600081905092915050565b60008190508160005260206000209050919050565b6000815461303381612d93565b61303d8186613006565b94506001821660008114613058576001811461306d576130a0565b60ff19831686528115158202860193506130a0565b61307685613011565b60005b8381101561309857815481890152600182019150602081019050613079565b838801955050505b50505092915050565b60006130b4826126d2565b6130be8185613006565b93506130ce8185602086016126ee565b80840191505092915050565b60006130e68285613026565b91506130f282846130a9565b91508190509392505050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261314b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261310e565b613155868361310e565b95508019841693508086168417925050509392505050565b6000819050919050565b600061319261318d61318884612798565b61316d565b612798565b9050919050565b6000819050919050565b6131ac83613177565b6131c06131b882613199565b84845461311b565b825550505050565b600090565b6131d56131c8565b6131e08184846131a3565b505050565b5b81811015613204576131f96000826131cd565b6001810190506131e6565b5050565b601f8211156132495761321a81613011565b613223846130fe565b81016020851015613232578190505b61324661323e856130fe565b8301826131e5565b50505b505050565b600082821c905092915050565b600061326c6000198460080261324e565b1980831691505092915050565b6000613285838361325b565b9150826002028217905092915050565b61329e826126d2565b67ffffffffffffffff8111156132b7576132b66129b7565b5b6132c18254612d93565b6132cc828285613208565b600060209050601f8311600181146132ff57600084156132ed578287015190505b6132f78582613279565b86555061335f565b601f19841661330d86613011565b60005b8281101561333557848901518255600182019150602085019450602081019050613310565b86831015613352578489015161334e601f89168261325b565b8355505b6001600288020188555050505b505050505050565b60008160011c9050919050565b6000808291508390505b60018511156133be5780860481111561339a57613399612dc4565b5b60018516156133a95780820291505b80810290506133b785613367565b945061337e565b94509492505050565b6000826133d75760019050613493565b816133e55760009050613493565b81600181146133fb576002811461340557613434565b6001915050613493565b60ff84111561341757613416612dc4565b5b8360020a91508482111561342e5761342d612dc4565b5b50613493565b5060208310610133831016604e8410600b84101617156134695782820a90508381111561346457613463612dc4565b5b613493565b6134768484846001613374565b9250905081840481111561348d5761348c612dc4565b5b81810290505b9392505050565b60006134a582612798565b91506134b083612976565b92506134dd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846133c7565b905092915050565b60006134f082612798565b91506134fb83612798565b925082820261350981612798565b915082820484148315176135205761351f612dc4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061356182612798565b915061356c83612798565b92508261357c5761357b613527565b5b82820490509291505056fea2646970667358221220512f6e8963c1232449a4f2dd0bb7eeb8302ca0d0b4f42049ad730e84474290c364736f6c6343000818003300000000000000000000000038ff53d84785445db9a02403c1d360d59fd1aee1