0x60806040526360c9f8d56001553480156200001957600080fd5b50604051620019653803806200196583398181016040528101906200003f91906200024b565b6000620000516200022c60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3307fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401620001f0929190620002b4565b600060405180830381600087803b1580156200020b57600080fd5b505af115801562000220573d6000803e3d6000fd5b50505050505062000352565b600033905090565b600081519050620002458162000338565b92915050565b6000806040838503121562000265576200026462000333565b5b6000620002758582860162000234565b9250506020620002888582860162000234565b9150509250929050565b6200029d81620002e1565b82525050565b620002ae816200031f565b82525050565b6000604082019050620002cb600083018562000292565b620002da6020830184620002a3565b9392505050565b6000620002ee82620002f5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006200032c8262000315565b9050919050565b600080fd5b6200034381620002e1565b81146200034f57600080fd5b50565b61160380620003626000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063beabacc81161005b578063beabacc8146100c8578063c44bef75146100e4578063d3986f0814610100578063f2fde38b1461011c5761007d565b8063715018a6146100825780638da5cb5b1461008c578063a035b1fe146100aa575b600080fd5b61008a610138565b005b610094610272565b6040516100a191906110a5565b60405180910390f35b6100b261029b565b6040516100bf91906111a9565b60405180910390f35b6100e260048036038101906100dd9190610ed7565b6102eb565b005b6100fe60048036038101906100f99190610f84565b6103fd565b005b61011a60048036038101906101159190610fde565b610483565b005b61013660048036038101906101319190610e7d565b6109f3565b005b610140610b9c565b73ffffffffffffffffffffffffffffffffffffffff1661015e610272565b73ffffffffffffffffffffffffffffffffffffffff16146101b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ab90611189565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008062093a80600154426102b09190611301565b6102ba9190611276565b9050600881106102c957600890505b620249f061493e826102db91906112a7565b6102e59190611220565b91505090565b6102f3610b9c565b73ffffffffffffffffffffffffffffffffffffffff16610311610272565b73ffffffffffffffffffffffffffffffffffffffff1614610367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035e90611189565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8484846040518463ffffffff1660e01b81526004016103c6939291906110e9565b600060405180830381600087803b1580156103e057600080fd5b505af11580156103f4573d6000803e3d6000fd5b50505050505050565b610405610b9c565b73ffffffffffffffffffffffffffffffffffffffff16610423610272565b73ffffffffffffffffffffffffffffffffffffffff1614610479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047090611189565b60405180910390fd5b8060018190555050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee8f0b7a336040518263ffffffff1660e01b81526004016104e091906110a5565b60206040518083038186803b1580156104f857600080fd5b505afa15801561050c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105309190610eaa565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561061857600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f4c644333846040518363ffffffff1660e01b81526004016105c49291906110c0565b602060405180830381600087803b1580156105de57600080fd5b505af11580156105f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106169190610f57565b505b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2ae93fb336040518263ffffffff1660e01b815260040161067591906110a5565b60c06040518083038186803b15801561068d57600080fd5b505afa1580156106a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c59190610f2a565b90506000816002600381106106dd576106dc61144d565b5b602002015160200151826001600381106106fa576106f961144d565b5b602002015160200151836000600381106107175761071661144d565b5b602002015160200151606461072c9190611335565b6107369190611335565b6107409190611335565b905060008561074d61029b565b61075791906112a7565b905080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016107b591906110a5565b602060405180830381600087803b1580156107cf57600080fd5b505af11580156107e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108079190610fb1565b1015610848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083f90611169565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd333060648660ff168661089991906112a7565b6108a39190611276565b6040518463ffffffff1660e01b81526004016108c1939291906110e9565b600060405180830381600087803b1580156108db57600080fd5b505af11580156108ef573d6000803e3d6000fd5b505050506109168360006003811061090a5761090961144d565b5b60200201518233610ba4565b6109398360016003811061092d5761092c61144d565b5b60200201518233610ba4565b61095c836002600381106109505761094f61144d565b5b60200201518233610ba4565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1933886040518363ffffffff1660e01b81526004016109b9929190611120565b600060405180830381600087803b1580156109d357600080fd5b505af11580156109e7573d6000803e3d6000fd5b50505050505050505050565b6109fb610b9c565b73ffffffffffffffffffffffffffffffffffffffff16610a19610272565b73ffffffffffffffffffffffffffffffffffffffff1614610a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6690611189565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad690611149565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff161480610beb57506000836020015160ff1611155b15610bf557610d18565b60006064846020015160ff1684610c0c91906112a7565b610c169190611276565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd338660000151846040518463ffffffff1660e01b8152600401610c7b939291906110e9565b600060405180830381600087803b158015610c9557600080fd5b505af1158015610ca9573d6000803e3d6000fd5b50505050836000015173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f79947684f8be1a6d8d4bbb3276c7e026a6b4c2d61ffb8a3dba300dd1c44de9a883604051610d0e91906111a9565b60405180910390a3505b505050565b6000610d30610d2b846111e9565b6111c4565b90508082856040860282011115610d4a57610d496114b5565b5b60005b85811015610d7a5781610d608882610dee565b845260208401935060408301925050600181019050610d4d565b5050509392505050565b600081359050610d9381611571565b92915050565b600081519050610da881611571565b92915050565b600082601f830112610dc357610dc26114ab565b5b6003610dd0848285610d1d565b91505092915050565b600081519050610de881611588565b92915050565b600060408284031215610e0457610e036114b0565b5b610e0e60406111c4565b90506000610e1e84828501610d99565b6000830152506020610e3284828501610e68565b60208301525092915050565b600081359050610e4d8161159f565b92915050565b600081519050610e628161159f565b92915050565b600081519050610e77816115b6565b92915050565b600060208284031215610e9357610e926114ba565b5b6000610ea184828501610d84565b91505092915050565b600060208284031215610ec057610ebf6114ba565b5b6000610ece84828501610d99565b91505092915050565b600080600060608486031215610ef057610eef6114ba565b5b6000610efe86828701610d84565b9350506020610f0f86828701610d84565b9250506040610f2086828701610e3e565b9150509250925092565b600060c08284031215610f4057610f3f6114ba565b5b6000610f4e84828501610dae565b91505092915050565b600060208284031215610f6d57610f6c6114ba565b5b6000610f7b84828501610dd9565b91505092915050565b600060208284031215610f9a57610f996114ba565b5b6000610fa884828501610e3e565b91505092915050565b600060208284031215610fc757610fc66114ba565b5b6000610fd584828501610e53565b91505092915050565b60008060408385031215610ff557610ff46114ba565b5b600061100385828601610e3e565b925050602061101485828601610d84565b9150509250929050565b61102781611369565b82525050565b600061103a60268361120f565b9150611045826114d0565b604082019050919050565b600061105d60128361120f565b91506110688261151f565b602082019050919050565b600061108060208361120f565b915061108b82611548565b602082019050919050565b61109f816113a7565b82525050565b60006020820190506110ba600083018461101e565b92915050565b60006040820190506110d5600083018561101e565b6110e2602083018461101e565b9392505050565b60006060820190506110fe600083018661101e565b61110b602083018561101e565b6111186040830184611096565b949350505050565b6000604082019050611135600083018561101e565b6111426020830184611096565b9392505050565b600060208201905081810360008301526111628161102d565b9050919050565b6000602082019050818103600083015261118281611050565b9050919050565b600060208201905081810360008301526111a281611073565b9050919050565b60006020820190506111be6000830184611096565b92915050565b60006111ce6111df565b90506111da82826113be565b919050565b6000604051905090565b600067ffffffffffffffff8211156112045761120361147c565b5b602082029050919050565b600082825260208201905092915050565b600061122b826113a7565b9150611236836113a7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561126b5761126a6113ef565b5b828201905092915050565b6000611281826113a7565b915061128c836113a7565b92508261129c5761129b61141e565b5b828204905092915050565b60006112b2826113a7565b91506112bd836113a7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156112f6576112f56113ef565b5b828202905092915050565b600061130c826113a7565b9150611317836113a7565b92508282101561132a576113296113ef565b5b828203905092915050565b6000611340826113b1565b915061134b836113b1565b92508282101561135e5761135d6113ef565b5b828203905092915050565b600061137482611387565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6113c7826114bf565b810181811067ffffffffffffffff821117156113e6576113e561147c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4e6f7420656e6f7567682062616c616e63650000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b61157a81611369565b811461158557600080fd5b50565b6115918161137b565b811461159c57600080fd5b50565b6115a8816113a7565b81146115b357600080fd5b50565b6115bf816113b1565b81146115ca57600080fd5b5056fea26469706673582212204357bec9e92b53d1dadf9394af0605f4213afdd6aec5263117d205f7e2eb431864736f6c63430008060033000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000005bd5a3d459a0d1eef2b79a1388b3650df3a6c223