0x60806040526040518060400160405280600381526020017f5742540000000000000000000000000000000000000000000000000000000000815250600090816200004a91906200036e565b506040518060400160405280600381526020017f5742540000000000000000000000000000000000000000000000000000000000815250600190816200009191906200036e565b506317d78400600255348015620000a757600080fd5b50600254600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000455565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200017657607f821691505b6020821081036200018c576200018b6200012e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620001f67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620001b7565b620002028683620001b7565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200024f6200024962000243846200021a565b62000224565b6200021a565b9050919050565b6000819050919050565b6200026b836200022e565b620002836200027a8262000256565b848454620001c4565b825550505050565b600090565b6200029a6200028b565b620002a781848462000260565b505050565b5b81811015620002cf57620002c360008262000290565b600181019050620002ad565b5050565b601f8211156200031e57620002e88162000192565b620002f384620001a7565b8101602085101562000303578190505b6200031b6200031285620001a7565b830182620002ac565b50505b505050565b600082821c905092915050565b6000620003436000198460080262000323565b1980831691505092915050565b60006200035e838362000330565b9150826002028217905092915050565b6200037982620000f4565b67ffffffffffffffff811115620003955762000394620000ff565b5b620003a182546200015d565b620003ae828285620002d3565b600060209050601f831160018114620003e65760008415620003d1578287015190505b620003dd858262000350565b8655506200044d565b601f198416620003f68662000192565b60005b828110156200042057848901518255600182019150602085019450602081019050620003f9565b868310156200044057848901516200043c601f89168262000330565b8355505b6001600288020188555050505b505050505050565b61106680620004656000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a082311461012957806395d89b4114610159578063a9059cbb14610177578063dd62ed3e146101a757610088565b806306fdde031461008d578063095ea7b3146100ab57806318160ddd146100db57806323b872dd146100f9575b600080fd5b6100956101d7565b6040516100a29190610b02565b60405180910390f35b6100c560048036038101906100c09190610bbd565b610265565b6040516100d29190610c18565b60405180910390f35b6100e36103c5565b6040516100f09190610c42565b60405180910390f35b610113600480360381019061010e9190610c5d565b6103cb565b6040516101209190610c18565b60405180910390f35b610143600480360381019061013e9190610cb0565b61079a565b6040516101509190610c42565b60405180910390f35b6101616107b2565b60405161016e9190610b02565b60405180910390f35b610191600480360381019061018c9190610bbd565b610840565b60405161019e9190610c18565b60405180910390f35b6101c160048036038101906101bc9190610cdd565b610a4d565b6040516101ce9190610c42565b60405180910390f35b600080546101e490610d4c565b80601f016020809104026020016040519081016040528092919081815260200182805461021090610d4c565b801561025d5780601f106102325761010080835404028352916020019161025d565b820191906000526020600020905b81548152906001019060200180831161024057829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036102d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102cc90610dc9565b60405180910390fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103b39190610c42565b60405180910390a36001905092915050565b60025481565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361043b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043290610e35565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036104aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a190610ea1565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561052c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052390610f0d565b60405180910390fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156105eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e290610f79565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461063a9190610fc8565b9250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106909190610ffc565b9250508190555081600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107239190610fc8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107879190610c42565b60405180910390a3600190509392505050565b60036020528060005260406000206000915090505481565b600180546107bf90610d4c565b80601f01602080910402602001604051908101604052809291908181526020018280546107eb90610d4c565b80156108385780601f1061080d57610100808354040283529160200191610838565b820191906000526020600020905b81548152906001019060200180831161081b57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a790610ea1565b60405180910390fd5b81600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092990610f0d565b60405180910390fd5b81600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109819190610fc8565b9250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109d79190610ffc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a3b9190610c42565b60405180910390a36001905092915050565b6004602052816000526040600020602052806000526040600020600091509150505481565b600081519050919050565b600082825260208201905092915050565b60005b83811015610aac578082015181840152602081019050610a91565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ad482610a72565b610ade8185610a7d565b9350610aee818560208601610a8e565b610af781610ab8565b840191505092915050565b60006020820190508181036000830152610b1c8184610ac9565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b5482610b29565b9050919050565b610b6481610b49565b8114610b6f57600080fd5b50565b600081359050610b8181610b5b565b92915050565b6000819050919050565b610b9a81610b87565b8114610ba557600080fd5b50565b600081359050610bb781610b91565b92915050565b60008060408385031215610bd457610bd3610b24565b5b6000610be285828601610b72565b9250506020610bf385828601610ba8565b9150509250929050565b60008115159050919050565b610c1281610bfd565b82525050565b6000602082019050610c2d6000830184610c09565b92915050565b610c3c81610b87565b82525050565b6000602082019050610c576000830184610c33565b92915050565b600080600060608486031215610c7657610c75610b24565b5b6000610c8486828701610b72565b9350506020610c9586828701610b72565b9250506040610ca686828701610ba8565b9150509250925092565b600060208284031215610cc657610cc5610b24565b5b6000610cd484828501610b72565b91505092915050565b60008060408385031215610cf457610cf3610b24565b5b6000610d0285828601610b72565b9250506020610d1385828601610b72565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610d6457607f821691505b602082108103610d7757610d76610d1d565b5b50919050565b7f496e76616c6964207370656e6465720000000000000000000000000000000000600082015250565b6000610db3600f83610a7d565b9150610dbe82610d7d565b602082019050919050565b60006020820190508181036000830152610de281610da6565b9050919050565b7f496e76616c69642073656e646572000000000000000000000000000000000000600082015250565b6000610e1f600e83610a7d565b9150610e2a82610de9565b602082019050919050565b60006020820190508181036000830152610e4e81610e12565b9050919050565b7f496e76616c696420726563697069656e74000000000000000000000000000000600082015250565b6000610e8b601183610a7d565b9150610e9682610e55565b602082019050919050565b60006020820190508181036000830152610eba81610e7e565b9050919050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000610ef7601483610a7d565b9150610f0282610ec1565b602082019050919050565b60006020820190508181036000830152610f2681610eea565b9050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b6000610f63601683610a7d565b9150610f6e82610f2d565b602082019050919050565b60006020820190508181036000830152610f9281610f56565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610fd382610b87565b9150610fde83610b87565b9250828203905081811115610ff657610ff5610f99565b5b92915050565b600061100782610b87565b915061101283610b87565b925082820190508082111561102a57611029610f99565b5b9291505056fea26469706673582212209db115cb5eeed4845e8256067da3e2d53169565b124bdfd1400002fd5f2acc7164736f6c63430008120033