0x608060405234801562000010575f80fd5b506040516200159a3803806200159a83398181016040528101906200003691906200027d565b806040518060400160405280600a81526020017f54657468657220555344000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f55534454000000000000000000000000000000000000000000000000000000008152508160039081620000b4919062000511565b508060049081620000c6919062000511565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200013c575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040162000133919062000606565b60405180910390fd5b6200014d816200015560201b60201c565b505062000621565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000247826200021c565b9050919050565b62000259816200023b565b811462000264575f80fd5b50565b5f8151905062000277816200024e565b92915050565b5f6020828403121562000295576200029462000218565b5b5f620002a48482850162000267565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200032957607f821691505b6020821081036200033f576200033e620002e4565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620003a37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000366565b620003af868362000366565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620003f9620003f3620003ed84620003c7565b620003d0565b620003c7565b9050919050565b5f819050919050565b6200041483620003d9565b6200042c620004238262000400565b84845462000372565b825550505050565b5f90565b6200044262000434565b6200044f81848462000409565b505050565b5b8181101562000476576200046a5f8262000438565b60018101905062000455565b5050565b601f821115620004c5576200048f8162000345565b6200049a8462000357565b81016020851015620004aa578190505b620004c2620004b98562000357565b83018262000454565b50505b505050565b5f82821c905092915050565b5f620004e75f1984600802620004ca565b1980831691505092915050565b5f620005018383620004d6565b9150826002028217905092915050565b6200051c82620002ad565b67ffffffffffffffff811115620005385762000537620002b7565b5b62000544825462000311565b620005518282856200047a565b5f60209050601f83116001811462000587575f841562000572578287015190505b6200057e8582620004f4565b865550620005ed565b601f198416620005978662000345565b5f5b82811015620005c05784890151825560018201915060208501945060208101905062000599565b86831015620005e05784890151620005dc601f891682620004d6565b8355505b6001600288020188555050505b505050505050565b62000600816200023b565b82525050565b5f6020820190506200061b5f830184620005f5565b92915050565b610f6b806200062f5f395ff3fe608060405234801561000f575f80fd5b50600436106100e8575f3560e01c806370a082311161008a57806395d89b411161006457806395d89b4114610236578063a9059cbb14610254578063dd62ed3e14610284578063f2fde38b146102b4576100e8565b806370a08231146101de578063715018a61461020e5780638da5cb5b14610218576100e8565b806318160ddd116100c657806318160ddd1461015657806323b872dd14610174578063313ce567146101a457806340c10f19146101c2576100e8565b806306fdde03146100ec578063095ea7b31461010a578063140297561461013a575b5f80fd5b6100f46102d0565b6040516101019190610c44565b60405180910390f35b610124600480360381019061011f9190610cf5565b610360565b6040516101319190610d4d565b60405180910390f35b610154600480360381019061014f9190610d66565b610382565b005b61015e6103c5565b60405161016b9190610da0565b60405180910390f35b61018e60048036038101906101899190610db9565b6103ce565b60405161019b9190610d4d565b60405180910390f35b6101ac6103fc565b6040516101b99190610e24565b60405180910390f35b6101dc60048036038101906101d79190610cf5565b610404565b005b6101f860048036038101906101f39190610d66565b61041a565b6040516102059190610da0565b60405180910390f35b61021661045f565b005b610220610472565b60405161022d9190610e4c565b60405180910390f35b61023e61049a565b60405161024b9190610c44565b60405180910390f35b61026e60048036038101906102699190610cf5565b61052a565b60405161027b9190610d4d565b60405180910390f35b61029e60048036038101906102999190610e65565b610566565b6040516102ab9190610da0565b60405180910390f35b6102ce60048036038101906102c99190610d66565b6105e8565b005b6060600380546102df90610ed0565b80601f016020809104026020016040519081016040528092919081815260200182805461030b90610ed0565b80156103565780601f1061032d57610100808354040283529160200191610356565b820191905f5260205f20905b81548152906001019060200180831161033957829003601f168201915b5050505050905090565b5f8061036a61066c565b9050610377818585610673565b600191505092915050565b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f600254905090565b5f806103d861066c565b90506103e5858285610685565b6103f0858585610717565b60019150509392505050565b5f6012905090565b61040c610727565b61041682826107ae565b5050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610467610727565b6104705f61082d565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546104a990610ed0565b80601f01602080910402602001604051908101604052809291908181526020018280546104d590610ed0565b80156105205780601f106104f757610100808354040283529160200191610520565b820191905f5260205f20905b81548152906001019060200180831161050357829003601f168201915b5050505050905090565b5f8060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061055b818585610717565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6105f0610727565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610660575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016106579190610e4c565b60405180910390fd5b6106698161082d565b50565b5f33905090565b61068083838360016108f0565b505050565b5f6106908484610566565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107115781811015610702578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016106f993929190610f00565b60405180910390fd5b61071084848484035f6108f0565b5b50505050565b610722838383610abf565b505050565b61072f61066c565b73ffffffffffffffffffffffffffffffffffffffff1661074d610472565b73ffffffffffffffffffffffffffffffffffffffff16146107ac5761077061066c565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016107a39190610e4c565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361081e575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016108159190610e4c565b60405180910390fd5b6108295f8383610abf565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610960575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016109579190610e4c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109d0575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016109c79190610e4c565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610ab9578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ab09190610da0565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b06578060025f8282540392505081905550610b50565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bad9190610da0565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610bf1578082015181840152602081019050610bd6565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610c1682610bba565b610c208185610bc4565b9350610c30818560208601610bd4565b610c3981610bfc565b840191505092915050565b5f6020820190508181035f830152610c5c8184610c0c565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610c9182610c68565b9050919050565b610ca181610c87565b8114610cab575f80fd5b50565b5f81359050610cbc81610c98565b92915050565b5f819050919050565b610cd481610cc2565b8114610cde575f80fd5b50565b5f81359050610cef81610ccb565b92915050565b5f8060408385031215610d0b57610d0a610c64565b5b5f610d1885828601610cae565b9250506020610d2985828601610ce1565b9150509250929050565b5f8115159050919050565b610d4781610d33565b82525050565b5f602082019050610d605f830184610d3e565b92915050565b5f60208284031215610d7b57610d7a610c64565b5b5f610d8884828501610cae565b91505092915050565b610d9a81610cc2565b82525050565b5f602082019050610db35f830184610d91565b92915050565b5f805f60608486031215610dd057610dcf610c64565b5b5f610ddd86828701610cae565b9350506020610dee86828701610cae565b9250506040610dff86828701610ce1565b9150509250925092565b5f60ff82169050919050565b610e1e81610e09565b82525050565b5f602082019050610e375f830184610e15565b92915050565b610e4681610c87565b82525050565b5f602082019050610e5f5f830184610e3d565b92915050565b5f8060408385031215610e7b57610e7a610c64565b5b5f610e8885828601610cae565b9250506020610e9985828601610cae565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610ee757607f821691505b602082108103610efa57610ef9610ea3565b5b50919050565b5f606082019050610f135f830186610e3d565b610f206020830185610d91565b610f2d6040830184610d91565b94935050505056fea264697066735822122003866b1dd284b0c67cf19ee0dc66e696610e01d6f4e706f6338b0f63a55bb97b64736f6c6343000815003300000000000000000000000005a364588e77d226c6734b0f896c179ca4cb66bd