608060405233600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801562000051575f80fd5b506040516200158d3803806200158d833981810160405281019062000077919062000387565b846003908162000088919062000677565b5083600490816200009a919062000677565b508060055f6101000a81548160ff021916908360ff160217905550815f803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000102919062000788565b925050819055508160025f8282546200011c919062000788565b925050819055505050505050620007c2565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6200018f8262000147565b810181811067ffffffffffffffff82111715620001b157620001b062000157565b5b80604052505050565b5f620001c56200012e565b9050620001d3828262000184565b919050565b5f67ffffffffffffffff821115620001f557620001f462000157565b5b620002008262000147565b9050602081019050919050565b5f5b838110156200022c5780820151818401526020810190506200020f565b5f8484015250505050565b5f6200024d6200024784620001d8565b620001ba565b9050828152602081018484840111156200026c576200026b62000143565b5b620002798482856200020d565b509392505050565b5f82601f8301126200029857620002976200013f565b5b8151620002aa84826020860162000237565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620002de82620002b3565b9050919050565b620002f081620002d2565b8114620002fb575f80fd5b50565b5f815190506200030e81620002e5565b92915050565b5f819050919050565b620003288162000314565b811462000333575f80fd5b50565b5f8151905062000346816200031d565b92915050565b5f60ff82169050919050565b62000363816200034c565b81146200036e575f80fd5b50565b5f81519050620003818162000358565b92915050565b5f805f805f60a08688031215620003a357620003a262000137565b5b5f86015167ffffffffffffffff811115620003c357620003c26200013b565b5b620003d18882890162000281565b955050602086015167ffffffffffffffff811115620003f557620003f46200013b565b5b620004038882890162000281565b94505060406200041688828901620002fe565b9350506060620004298882890162000336565b92505060806200043c8882890162000371565b9150509295509295909350565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200049857607f821691505b602082108103620004ae57620004ad62000453565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620005127fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004d5565b6200051e8683620004d5565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6200055f62000559620005538462000314565b62000536565b62000314565b9050919050565b5f819050919050565b6200057a836200053f565b62000592620005898262000566565b848454620004e1565b825550505050565b5f90565b620005a86200059a565b620005b58184846200056f565b505050565b5b81811015620005dc57620005d05f826200059e565b600181019050620005bb565b5050565b601f8211156200062b57620005f581620004b4565b6200060084620004c6565b8101602085101562000610578190505b620006286200061f85620004c6565b830182620005ba565b50505b505050565b5f82821c905092915050565b5f6200064d5f198460080262000630565b1980831691505092915050565b5f6200066783836200063c565b9150826002028217905092915050565b620006828262000449565b67ffffffffffffffff8111156200069e576200069d62000157565b5b620006aa825462000480565b620006b7828285620005e0565b5f60209050601f831160018114620006ed575f8415620006d8578287015190505b620006e485826200065a565b86555062000753565b601f198416620006fd86620004b4565b5f5b828110156200072657848901518255600182019150602085019450602081019050620006ff565b8683101562000746578489015162000742601f8916826200063c565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620007948262000314565b9150620007a18362000314565b9250828201905080821115620007bc57620007bb6200075b565b5b92915050565b610dbd80620007d05f395ff3fe608060405234801561000f575f80fd5b50600436106100a7575f3560e01c806370a082311161006f57806370a08231146101655780638da5cb5b1461019557806395d89b41146101b3578063a9059cbb146101d1578063c6c3bbe614610201578063dd62ed3e1461021d576100a7565b806306fdde03146100ab578063095ea7b3146100c957806318160ddd146100f957806323b872dd14610117578063313ce56714610147575b5f80fd5b6100b361024d565b6040516100c091906109d0565b60405180910390f35b6100e360048036038101906100de9190610a81565b6102dd565b6040516100f09190610ad9565b60405180910390f35b6101016103ca565b60405161010e9190610b01565b60405180910390f35b610131600480360381019061012c9190610b1a565b6103d3565b60405161013e9190610ad9565b60405180910390f35b61014f610576565b60405161015c9190610b85565b60405180910390f35b61017f600480360381019061017a9190610b9e565b61058b565b60405161018c9190610b01565b60405180910390f35b61019d6105d0565b6040516101aa9190610bd8565b60405180910390f35b6101bb6105d4565b6040516101c891906109d0565b60405180910390f35b6101eb60048036038101906101e69190610a81565b610664565b6040516101f89190610ad9565b60405180910390f35b61021b60048036038101906102169190610b1a565b610778565b005b61023760048036038101906102329190610bf1565b6108c4565b6040516102449190610b01565b60405180910390f35b60606003805461025c90610c5c565b80601f016020809104026020016040519081016040528092919081815260200182805461028890610c5c565b80156102d35780601f106102aa576101008083540402835291602001916102d3565b820191905f5260205f20905b8154815290600101906020018083116102b657829003601f168201915b5050505050905090565b5f8160015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103b89190610b01565b60405180910390a36001905092915050565b5f600254905090565b5f8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461045b9190610cb9565b92505081905550815f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546104ad9190610cb9565b92505081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546104ff9190610cec565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516105639190610b01565b60405180910390a3600190509392505050565b5f60055f9054906101000a900460ff16905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f90565b6060600480546105e390610c5c565b80601f016020809104026020016040519081016040528092919081815260200182805461060f90610c5c565b801561065a5780601f106106315761010080835404028352916020019161065a565b820191905f5260205f20905b81548152906001019060200180831161063d57829003601f168201915b5050505050905090565b5f815f803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546106b09190610cb9565b92505081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107029190610cec565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107669190610b01565b60405180910390a36001905092915050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ff90610d69565b60405180910390fd5b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108539190610cec565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516108b79190610b01565b60405180910390a3505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561097d578082015181840152602081019050610962565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6109a282610946565b6109ac8185610950565b93506109bc818560208601610960565b6109c581610988565b840191505092915050565b5f6020820190508181035f8301526109e88184610998565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610a1d826109f4565b9050919050565b610a2d81610a13565b8114610a37575f80fd5b50565b5f81359050610a4881610a24565b92915050565b5f819050919050565b610a6081610a4e565b8114610a6a575f80fd5b50565b5f81359050610a7b81610a57565b92915050565b5f8060408385031215610a9757610a966109f0565b5b5f610aa485828601610a3a565b9250506020610ab585828601610a6d565b9150509250929050565b5f8115159050919050565b610ad381610abf565b82525050565b5f602082019050610aec5f830184610aca565b92915050565b610afb81610a4e565b82525050565b5f602082019050610b145f830184610af2565b92915050565b5f805f60608486031215610b3157610b306109f0565b5b5f610b3e86828701610a3a565b9350506020610b4f86828701610a3a565b9250506040610b6086828701610a6d565b9150509250925092565b5f60ff82169050919050565b610b7f81610b6a565b82525050565b5f602082019050610b985f830184610b76565b92915050565b5f60208284031215610bb357610bb26109f0565b5b5f610bc084828501610a3a565b91505092915050565b610bd281610a13565b82525050565b5f602082019050610beb5f830184610bc9565b92915050565b5f8060408385031215610c0757610c066109f0565b5b5f610c1485828601610a3a565b9250506020610c2585828601610a3a565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610c7357607f821691505b602082108103610c8657610c85610c2f565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610cc382610a4e565b9150610cce83610a4e565b9250828203905081811115610ce657610ce5610c8c565b5b92915050565b5f610cf682610a4e565b9150610d0183610a4e565b9250828201905080821115610d1957610d18610c8c565b5b92915050565b7f65000000000000000000000000000000000000000000000000000000000000005f82015250565b5f610d53600183610950565b9150610d5e82610d1f565b602082019050919050565b5f6020820190508181035f830152610d8081610d47565b905091905056fea2646970667358221220c3a0c23273c3e5eadfed9b6319cf7b4a7492dc328ce4cdcbf7e04e0fc8d05ee664736f6c6343000818003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033b2e3c9fd0803ce80000000000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000af09fa4a120436c6f776e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000af09fa4a120434c4f574e00000000000000000000000000000000000000000000