60806040526265b9aa60015534801561001757600080fd5b50640f85a49aaa600581905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600554600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60055460405161014b9190610171565b60405180910390a361018c565b6000819050919050565b61016b81610158565b82525050565b60006020820190506101866000830184610162565b92915050565b6110a38061019b6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80634e99d51e116100715780634e99d51e1461019157806370a08231146101ad5780638da5cb5b146101dd57806395d89b41146101fb578063a9059cbb14610219578063dd62ed3e14610249576100b4565b806306fdde03146100b9578063095ea7b3146100d75780630b56d4c61461010757806318160ddd1461012557806323b872dd14610143578063313ce56714610173575b600080fd5b6100c1610279565b6040516100ce9190610b43565b60405180910390f35b6100f160048036038101906100ec9190610c0d565b6102b2565b6040516100fe9190610c68565b60405180910390f35b61010f6103a4565b60405161011c9190610c92565b60405180910390f35b61012d6103aa565b60405161013a9190610c92565b60405180910390f35b61015d60048036038101906101589190610cad565b6103b4565b60405161016a9190610c68565b60405180910390f35b61017b61071f565b6040516101889190610d1c565b60405180910390f35b6101ab60048036038101906101a69190610e7f565b610724565b005b6101c760048036038101906101c29190610ec8565b6107ea565b6040516101d49190610c92565b60405180910390f35b6101e56107f6565b6040516101f29190610f04565b60405180910390f35b61020361081a565b6040516102109190610b43565b60405180910390f35b610233600480360381019061022e9190610c0d565b610853565b6040516102409190610c68565b60405180910390f35b610263600480360381019061025e9190610f1f565b610a2c565b6040516102709190610c92565b60405180910390f35b6040518060400160405280600d81526020017f56616e69747954726f6e2e696f0000000000000000000000000000000000000081525081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103929190610c92565b60405180910390a36001905092915050565b60015481565b6000600554905090565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561040257600080fd5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561048b57600080fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546104d69190610f8e565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105a19190610f8e565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461066c9190610fc2565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161070c9190610c92565b60405180910390a3600190509392505050565b600081565b60005b81518110156107e65781818151811061074357610742610ff6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6001546040516107cb9190610c92565b60405180910390a380806107de90611025565b915050610727565b5050565b60006001549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280600d81526020017f56616e69747954726f6e2e696f0000000000000000000000000000000000000081525081565b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156108a157600080fd5b81600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108ec9190610f8e565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461097a9190610fc2565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a1a9190610c92565b60405180910390a36001905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610aed578082015181840152602081019050610ad2565b60008484015250505050565b6000601f19601f8301169050919050565b6000610b1582610ab3565b610b1f8185610abe565b9350610b2f818560208601610acf565b610b3881610af9565b840191505092915050565b60006020820190508181036000830152610b5d8184610b0a565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ba482610b79565b9050919050565b610bb481610b99565b8114610bbf57600080fd5b50565b600081359050610bd181610bab565b92915050565b6000819050919050565b610bea81610bd7565b8114610bf557600080fd5b50565b600081359050610c0781610be1565b92915050565b60008060408385031215610c2457610c23610b6f565b5b6000610c3285828601610bc2565b9250506020610c4385828601610bf8565b9150509250929050565b60008115159050919050565b610c6281610c4d565b82525050565b6000602082019050610c7d6000830184610c59565b92915050565b610c8c81610bd7565b82525050565b6000602082019050610ca76000830184610c83565b92915050565b600080600060608486031215610cc657610cc5610b6f565b5b6000610cd486828701610bc2565b9350506020610ce586828701610bc2565b9250506040610cf686828701610bf8565b9150509250925092565b600060ff82169050919050565b610d1681610d00565b82525050565b6000602082019050610d316000830184610d0d565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610d7482610af9565b810181811067ffffffffffffffff82111715610d9357610d92610d3c565b5b80604052505050565b6000610da6610b65565b9050610db28282610d6b565b919050565b600067ffffffffffffffff821115610dd257610dd1610d3c565b5b602082029050602081019050919050565b600080fd5b6000610dfb610df684610db7565b610d9c565b90508083825260208201905060208402830185811115610e1e57610e1d610de3565b5b835b81811015610e475780610e338882610bc2565b845260208401935050602081019050610e20565b5050509392505050565b600082601f830112610e6657610e65610d37565b5b8135610e76848260208601610de8565b91505092915050565b600060208284031215610e9557610e94610b6f565b5b600082013567ffffffffffffffff811115610eb357610eb2610b74565b5b610ebf84828501610e51565b91505092915050565b600060208284031215610ede57610edd610b6f565b5b6000610eec84828501610bc2565b91505092915050565b610efe81610b99565b82525050565b6000602082019050610f196000830184610ef5565b92915050565b60008060408385031215610f3657610f35610b6f565b5b6000610f4485828601610bc2565b9250506020610f5585828601610bc2565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610f9982610bd7565b9150610fa483610bd7565b9250828203905081811115610fbc57610fbb610f5f565b5b92915050565b6000610fcd82610bd7565b9150610fd883610bd7565b9250828201905080821115610ff057610fef610f5f565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061103082610bd7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361106257611061610f5f565b5b60018201905091905056fea26469706673582212205a22ec3bfcbc36bf2899637176915e4b9765df5394c81b4460f82cb031f1263e64736f6c63430008120033