608060405234801561000f575f5ffd5b506a52b7d2dcc80cd2e40000006002819055506040518060400160405280600881526020017f576f726c64506164000000000000000000000000000000000000000000000000815250600390816100669190610395565b506040518060400160405280600481526020017f5750414400000000000000000000000000000000000000000000000000000000815250600490816100ab9190610395565b50601260055f6101000a81548160ff021916908360ff1602179055506002545f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555033600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a600681905550610464565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806101d357607f821691505b6020821081036101e6576101e561018f565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026102487fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261020d565b610252868361020d565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61029661029161028c8461026a565b610273565b61026a565b9050919050565b5f819050919050565b6102af8361027c565b6102c36102bb8261029d565b848454610219565b825550505050565b5f5f905090565b6102da6102cb565b6102e58184846102a6565b505050565b5b81811015610308576102fd5f826102d2565b6001810190506102eb565b5050565b601f82111561034d5761031e816101ec565b610327846101fe565b81016020851015610336578190505b61034a610342856101fe565b8301826102ea565b50505b505050565b5f82821c905092915050565b5f61036d5f1984600802610352565b1980831691505092915050565b5f610385838361035e565b9150826002028217905092915050565b61039e82610158565b67ffffffffffffffff8111156103b7576103b6610162565b5b6103c182546101bc565b6103cc82828561030c565b5f60209050601f8311600181146103fd575f84156103eb578287015190505b6103f5858261037a565b86555061045c565b601f19841661040b866101ec565b5f5b828110156104325784890151825560018201915060208501945060208101905061040d565b8683101561044f578489015161044b601f89168261035e565b8355505b6001600288020188555050505b505050505050565b611430806104715f395ff3fe608060405234801561000f575f5ffd5b50600436106100fe575f3560e01c806370a082311161009557806395d89b411161006457806395d89b411461029c5780639fe88c84146102ba578063a9059cbb146102d8578063dd62ed3e14610308576100fe565b806370a0823114610228578063715018a6146102585780638d6cc56d146102625780638da5cb5b1461027e576100fe565b806318160ddd116100d157806318160ddd1461018c57806323b872dd146101aa57806327e235e3146101da578063313ce5671461020a576100fe565b8063053f14da1461010257806306fdde0314610120578063095ea7b31461013e57806315cc11ad1461016e575b5f5ffd5b61010a610338565b6040516101179190610c8c565b60405180910390f35b61012861033e565b6040516101359190610d15565b60405180910390f35b61015860048036038101906101539190610dbd565b6103ca565b6040516101659190610e15565b60405180910390f35b6101766104b7565b6040516101839190610c8c565b60405180910390f35b6101946104bd565b6040516101a19190610c8c565b60405180910390f35b6101c460048036038101906101bf9190610e2e565b6104c3565b6040516101d19190610e15565b60405180910390f35b6101f460048036038101906101ef9190610e7e565b6105e0565b6040516102019190610c8c565b60405180910390f35b6102126105f4565b60405161021f9190610ec4565b60405180910390f35b610242600480360381019061023d9190610e7e565b610606565b60405161024f9190610c8c565b60405180910390f35b61026061064b565b005b61027c60048036038101906102779190610edd565b61079a565b005b610286610951565b6040516102939190610f17565b60405180910390f35b6102a4610977565b6040516102b19190610d15565b60405180910390f35b6102c2610a03565b6040516102cf9190610c8c565b60405180910390f35b6102f260048036038101906102ed9190610dbd565b610a09565b6040516102ff9190610e15565b60405180910390f35b610322600480360381019061031d9190610f30565b610a6a565b60405161032f9190610c8c565b60405180910390f35b60075481565b6003805461034b90610f9b565b80601f016020809104026020016040519081016040528092919081815260200182805461037790610f9b565b80156103c25780601f10610399576101008083540402835291602001916103c2565b820191905f5260205f20905b8154815290600101906020018083116103a557829003601f168201915b505050505081565b5f8160015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104a59190610c8c565b60405180910390a36001905092915050565b60085481565b60025481565b5f816104ce85610606565b101561050f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050690611015565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156105ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c19061107d565b60405180910390fd5b6105d5848484610a8a565b600190509392505050565b5f602052805f5260405f205f915090505481565b60055f9054906101000a900460ff1681565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d2906110e5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461082a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610821906110e5565b60405180910390fd5b5f811161086c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108639061114d565b60405180910390fd5b610e106008544261087d9190611198565b10156108be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b59061123b565b60405180910390fd5b6006546007546064836108d19190611259565b6108db91906112c7565b10158061090357506006548160646007546108f69190611259565b61090091906112c7565b10155b1561094e5780600781905550426008819055507fae46785019700e30375a5d7b4f91e32f8060ef085111f896ebf889450aa2ab5a816040516109459190610c8c565b60405180910390a15b50565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6004805461098490610f9b565b80601f01602080910402602001604051908101604052809291908181526020018280546109b090610f9b565b80156109fb5780601f106109d2576101008083540402835291602001916109fb565b820191905f5260205f20905b8154815290600101906020018083116109de57829003601f168201915b505050505081565b60065481565b5f81610a1433610606565b1015610a55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4c90611015565b60405180910390fd5b610a60338484610a8a565b6001905092915050565b6001602052815f5260405f20602052805f5260405f205f91509150505481565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aef90611341565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5d906113a9565b60405180910390fd5b805f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610bb19190611198565b92505081905550805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610c0391906113c7565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c679190610c8c565b60405180910390a3505050565b5f819050919050565b610c8681610c74565b82525050565b5f602082019050610c9f5f830184610c7d565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610ce782610ca5565b610cf18185610caf565b9350610d01818560208601610cbf565b610d0a81610ccd565b840191505092915050565b5f6020820190508181035f830152610d2d8184610cdd565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610d6282610d39565b9050919050565b610d7281610d58565b8114610d7c575f5ffd5b50565b5f81359050610d8d81610d69565b92915050565b610d9c81610c74565b8114610da6575f5ffd5b50565b5f81359050610db781610d93565b92915050565b5f5f60408385031215610dd357610dd2610d35565b5b5f610de085828601610d7f565b9250506020610df185828601610da9565b9150509250929050565b5f8115159050919050565b610e0f81610dfb565b82525050565b5f602082019050610e285f830184610e06565b92915050565b5f5f5f60608486031215610e4557610e44610d35565b5b5f610e5286828701610d7f565b9350506020610e6386828701610d7f565b9250506040610e7486828701610da9565b9150509250925092565b5f60208284031215610e9357610e92610d35565b5b5f610ea084828501610d7f565b91505092915050565b5f60ff82169050919050565b610ebe81610ea9565b82525050565b5f602082019050610ed75f830184610eb5565b92915050565b5f60208284031215610ef257610ef1610d35565b5b5f610eff84828501610da9565b91505092915050565b610f1181610d58565b82525050565b5f602082019050610f2a5f830184610f08565b92915050565b5f5f60408385031215610f4657610f45610d35565b5b5f610f5385828601610d7f565b9250506020610f6485828601610d7f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610fb257607f821691505b602082108103610fc557610fc4610f6e565b5b50919050565b7f62616c616e636520746f6f206c6f7700000000000000000000000000000000005f82015250565b5f610fff600f83610caf565b915061100a82610fcb565b602082019050919050565b5f6020820190508181035f83015261102c81610ff3565b9050919050565b7f616c6c6f77616e636520746f6f206c6f770000000000000000000000000000005f82015250565b5f611067601183610caf565b915061107282611033565b602082019050919050565b5f6020820190508181035f8301526110948161105b565b9050919050565b7f4e6f7420746865206f776e6572000000000000000000000000000000000000005f82015250565b5f6110cf600d83610caf565b91506110da8261109b565b602082019050919050565b5f6020820190508181035f8301526110fc816110c3565b9050919050565b7f496e76616c6964207072696365000000000000000000000000000000000000005f82015250565b5f611137600d83610caf565b915061114282611103565b602082019050919050565b5f6020820190508181035f8301526111648161112b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6111a282610c74565b91506111ad83610c74565b92508282039050818111156111c5576111c461116b565b5b92915050565b7f50726963652063616e206f6e6c792062652075706461746564206f6e636520705f8201527f657220686f757200000000000000000000000000000000000000000000000000602082015250565b5f611225602783610caf565b9150611230826111cb565b604082019050919050565b5f6020820190508181035f83015261125281611219565b9050919050565b5f61126382610c74565b915061126e83610c74565b925082820261127c81610c74565b915082820484148315176112935761129261116b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6112d182610c74565b91506112dc83610c74565b9250826112ec576112eb61129a565b5b828204905092915050565b7f7472616e736665722066726f6d20746865207a65726f206164647265737300005f82015250565b5f61132b601e83610caf565b9150611336826112f7565b602082019050919050565b5f6020820190508181035f8301526113588161131f565b9050919050565b7f7472616e7366657220746f20746865207a65726f2061646472657373000000005f82015250565b5f611393601c83610caf565b915061139e8261135f565b602082019050919050565b5f6020820190508181035f8301526113c081611387565b9050919050565b5f6113d182610c74565b91506113dc83610c74565b92508282019050808211156113f4576113f361116b565b5b9291505056fea264697066735822122056dd207b386774de1f0c23c9cd7be77512d623293d080600f9e83dec644d7a4864736f6c634300081c0033