60806040523480156200001157600080fd5b506040516200126638038062001266833981810160405281019062000037919062000318565b836000908162000048919062000609565b5082600190816200005a919062000609565b5081600260006101000a81548160ff021916908360ff1602179055508060038190555080600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050620006f0565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000175826200012a565b810181811067ffffffffffffffff821117156200019757620001966200013b565b5b80604052505050565b6000620001ac6200010c565b9050620001ba82826200016a565b919050565b600067ffffffffffffffff821115620001dd57620001dc6200013b565b5b620001e8826200012a565b9050602081019050919050565b60005b8381101562000215578082015181840152602081019050620001f8565b60008484015250505050565b6000620002386200023284620001bf565b620001a0565b90508281526020810184848401111562000257576200025662000125565b5b62000264848285620001f5565b509392505050565b600082601f83011262000284576200028362000120565b5b81516200029684826020860162000221565b91505092915050565b600060ff82169050919050565b620002b7816200029f565b8114620002c357600080fd5b50565b600081519050620002d781620002ac565b92915050565b6000819050919050565b620002f281620002dd565b8114620002fe57600080fd5b50565b6000815190506200031281620002e7565b92915050565b6000806000806080858703121562000335576200033462000116565b5b600085015167ffffffffffffffff8111156200035657620003556200011b565b5b62000364878288016200026c565b945050602085015167ffffffffffffffff8111156200038857620003876200011b565b5b62000396878288016200026c565b9350506040620003a987828801620002c6565b9250506060620003bc8782880162000301565b91505092959194509250565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200041b57607f821691505b602082108103620004315762000430620003d3565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200049b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200045c565b620004a786836200045c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620004ea620004e4620004de84620002dd565b620004bf565b620002dd565b9050919050565b6000819050919050565b6200050683620004c9565b6200051e6200051582620004f1565b84845462000469565b825550505050565b600090565b6200053562000526565b62000542818484620004fb565b505050565b5b818110156200056a576200055e6000826200052b565b60018101905062000548565b5050565b601f821115620005b957620005838162000437565b6200058e846200044c565b810160208510156200059e578190505b620005b6620005ad856200044c565b83018262000547565b50505b505050565b600082821c905092915050565b6000620005de60001984600802620005be565b1980831691505092915050565b6000620005f98383620005cb565b9150826002028217905092915050565b6200061482620003c8565b67ffffffffffffffff81111562000630576200062f6200013b565b5b6200063c825462000402565b620006498282856200056e565b600060209050601f8311600181146200068157600084156200066c578287015190505b620006788582620005eb565b865550620006e8565b601f198416620006918662000437565b60005b82811015620006bb5784890151825560018201915060208501945060208101905062000694565b86831015620006db5784890151620006d7601f891682620005cb565b8355505b6001600288020188555050505b505050505050565b610b6680620007006000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461015d5780638da5cb5b1461018d57806395d89b41146101ab578063a9059cbb146101c9578063dd62ed3e146101f95761009e565b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100f157806323b872dd1461010f578063313ce5671461013f575b600080fd5b6100ab610229565b6040516100b891906107bd565b60405180910390f35b6100db60048036038101906100d69190610878565b6102b7565b6040516100e891906108d3565b60405180910390f35b6100f96103a9565b60405161010691906108fd565b60405180910390f35b61012960048036038101906101249190610918565b6103af565b60405161013691906108d3565b60405180910390f35b610147610421565b6040516101549190610987565b60405180910390f35b610177600480360381019061017291906109a2565b610434565b60405161018491906108fd565b60405180910390f35b61019561047d565b6040516101a291906109de565b60405180910390f35b6101b36104a3565b6040516101c091906107bd565b60405180910390f35b6101e360048036038101906101de9190610878565b610531565b6040516101f091906108d3565b60405180910390f35b610213600480360381019061020e91906109f9565b6106a6565b60405161022091906108fd565b60405180910390f35b6000805461023690610a68565b80601f016020809104026020016040519081016040528092919081815260200182805461026290610a68565b80156102af5780601f10610284576101008083540402835291602001916102af565b820191906000526020600020905b81548152906001019060200180831161029257829003601f168201915b505050505081565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161039791906108fd565b60405180910390a36001905092915050565b60035481565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161040e91906108fd565b60405180910390a3600190509392505050565b600260009054906101000a900460ff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600180546104b090610a68565b80601f01602080910402602001604051908101604052809291908181526020018280546104dc90610a68565b80156105295780601f106104fe57610100808354040283529160200191610529565b820191906000526020600020905b81548152906001019060200180831161050c57829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156105825750600082115b61058b57600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105da9190610ac8565b9250508190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106309190610afc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161069491906108fd565b60405180910390a36001905092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561076757808201518184015260208101905061074c565b60008484015250505050565b6000601f19601f8301169050919050565b600061078f8261072d565b6107998185610738565b93506107a9818560208601610749565b6107b281610773565b840191505092915050565b600060208201905081810360008301526107d78184610784565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061080f826107e4565b9050919050565b61081f81610804565b811461082a57600080fd5b50565b60008135905061083c81610816565b92915050565b6000819050919050565b61085581610842565b811461086057600080fd5b50565b6000813590506108728161084c565b92915050565b6000806040838503121561088f5761088e6107df565b5b600061089d8582860161082d565b92505060206108ae85828601610863565b9150509250929050565b60008115159050919050565b6108cd816108b8565b82525050565b60006020820190506108e860008301846108c4565b92915050565b6108f781610842565b82525050565b600060208201905061091260008301846108ee565b92915050565b600080600060608486031215610931576109306107df565b5b600061093f8682870161082d565b93505060206109508682870161082d565b925050604061096186828701610863565b9150509250925092565b600060ff82169050919050565b6109818161096b565b82525050565b600060208201905061099c6000830184610978565b92915050565b6000602082840312156109b8576109b76107df565b5b60006109c68482850161082d565b91505092915050565b6109d881610804565b82525050565b60006020820190506109f360008301846109cf565b92915050565b60008060408385031215610a1057610a0f6107df565b5b6000610a1e8582860161082d565b9250506020610a2f8582860161082d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610a8057607f821691505b602082108103610a9357610a92610a39565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610ad382610842565b9150610ade83610842565b9250828203905081811115610af657610af5610a99565b5b92915050565b6000610b0782610842565b9150610b1283610842565b9250828201905080821115610b2a57610b29610a99565b5b9291505056fea2646970667358221220e83031475cf056cd9189a19e4b7f25d0c6a0e83de4866d558d8df272dffe384864736f6c63430008130033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000f000000000000000000000000000000000000000000084595161401484a00000000000000000000000000000000000000000000000000000000000000000000095465742e2e2e555344000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045553445400000000000000000000000000000000000000000000000000000000