6080604052600960045f6101000a81548160ff021916908360ff1602179055503480156200002b575f80fd5b5060405162001db638038062001db683398181016040528101906200005191906200048a565b5f62000062620002b160201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081600590816200010f91906200074f565b5080600690816200012191906200074f565b5062000132620002b860201b60201c565b600a620001409190620009bc565b64174876e7ff62000152919062000a0c565b60035f82825462000164919062000a56565b9250508190555060035460015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254620001bb919062000a56565b925050819055508260025f8073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600354604051620002a0919062000aa1565b60405180910390a350505062000abc565b5f33905090565b5f60045f9054906101000a900460ff16905090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b620002f281620002de565b8114620002fd575f80fd5b50565b5f815190506200031081620002e7565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b62000366826200031e565b810181811067ffffffffffffffff821117156200038857620003876200032e565b5b80604052505050565b5f6200039c620002cd565b9050620003aa82826200035b565b919050565b5f67ffffffffffffffff821115620003cc57620003cb6200032e565b5b620003d7826200031e565b9050602081019050919050565b5f5b8381101562000403578082015181840152602081019050620003e6565b5f8484015250505050565b5f620004246200041e84620003af565b62000391565b9050828152602081018484840111156200044357620004426200031a565b5b62000450848285620003e4565b509392505050565b5f82601f8301126200046f576200046e62000316565b5b8151620004818482602086016200040e565b91505092915050565b5f805f60608486031215620004a457620004a3620002d6565b5b5f620004b38682870162000300565b935050602084015167ffffffffffffffff811115620004d757620004d6620002da565b5b620004e58682870162000458565b925050604084015167ffffffffffffffff811115620005095762000508620002da565b5b620005178682870162000458565b9150509250925092565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200057057607f821691505b6020821081036200058657620005856200052b565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620005ea7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005ad565b620005f68683620005ad565b95508019841693508086168417925050509392505050565b5f819050919050565b5f62000637620006316200062b84620002de565b6200060e565b620002de565b9050919050565b5f819050919050565b620006528362000617565b6200066a62000661826200063e565b848454620005b9565b825550505050565b5f90565b6200068062000672565b6200068d81848462000647565b505050565b5b81811015620006b457620006a85f8262000676565b60018101905062000693565b5050565b601f8211156200070357620006cd816200058c565b620006d8846200059e565b81016020851015620006e8578190505b62000700620006f7856200059e565b83018262000692565b50505b505050565b5f82821c905092915050565b5f620007255f198460080262000708565b1980831691505092915050565b5f6200073f838362000714565b9150826002028217905092915050565b6200075a8262000521565b67ffffffffffffffff8111156200077657620007756200032e565b5b62000782825462000558565b6200078f828285620006b8565b5f60209050601f831160018114620007c5575f8415620007b0578287015190505b620007bc858262000732565b8655506200082b565b601f198416620007d5866200058c565b5f5b82811015620007fe57848901518255600182019150602085019450602081019050620007d7565b868310156200081e57848901516200081a601f89168262000714565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620008bd5780860481111562000895576200089462000833565b5b6001851615620008a55780820291505b8081029050620008b58562000860565b945062000875565b94509492505050565b5f82620008d75760019050620009a9565b81620008e6575f9050620009a9565b8160018114620008ff57600281146200090a5762000940565b6001915050620009a9565b60ff8411156200091f576200091e62000833565b5b8360020a91508482111562000939576200093862000833565b5b50620009a9565b5060208310610133831016604e8410600b84101617156200097a5782820a90508381111562000974576200097362000833565b5b620009a9565b6200098984848460016200086c565b92509050818404811115620009a357620009a262000833565b5b81810290505b9392505050565b5f60ff82169050919050565b5f620009c882620002de565b9150620009d583620009b0565b925062000a047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008c6565b905092915050565b5f62000a1882620002de565b915062000a2583620002de565b925082820262000a3581620002de565b9150828204841483151762000a4f5762000a4e62000833565b5b5092915050565b5f62000a6282620002de565b915062000a6f83620002de565b925082820190508082111562000a8a5762000a8962000833565b5b92915050565b62000a9b81620002de565b82525050565b5f60208201905062000ab65f83018462000a90565b92915050565b6112ec8062000aca5f395ff3fe608060405234801561000f575f80fd5b50600436106100a7575f3560e01c806370a082311161006f57806370a0823114610165578063715018a6146101955780638da5cb5b1461019f57806395d89b41146101bd578063a9059cbb146101db578063dd62ed3e1461020b576100a7565b806306fdde03146100ab578063095ea7b3146100c957806318160ddd146100f957806323b872dd14610117578063313ce56714610147575b5f80fd5b6100b361023b565b6040516100c09190610c6a565b60405180910390f35b6100e360048036038101906100de9190610d1b565b6102cb565b6040516100f09190610d73565b60405180910390f35b6101016102e8565b60405161010e9190610d9b565b60405180910390f35b610131600480360381019061012c9190610db4565b6102f1565b60405161013e9190610d73565b60405180910390f35b61014f6103a4565b60405161015c9190610e1f565b60405180910390f35b61017f600480360381019061017a9190610e38565b6103b9565b60405161018c9190610d9b565b60405180910390f35b61019d6103ff565b005b6101a761054d565b6040516101b49190610e72565b60405180910390f35b6101c5610574565b6040516101d29190610c6a565b60405180910390f35b6101f560048036038101906101f09190610d1b565b610604565b6040516102029190610d73565b60405180910390f35b61022560048036038101906102209190610e8b565b610621565b6040516102329190610d9b565b60405180910390f35b60606005805461024a90610ef6565b80601f016020809104026020016040519081016040528092919081815260200182805461027690610ef6565b80156102c15780601f10610298576101008083540402835291602001916102c1565b820191905f5260205f20905b8154815290600101906020018083116102a457829003601f168201915b5050505050905090565b5f6102de6102d76106a3565b84846106aa565b6001905092915050565b5f600354905090565b5f6102fd84848461086d565b610399846103096106a3565b8460025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6103506106a3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546103949190610f53565b6106aa565b600190509392505050565b5f60045f9054906101000a900460ff16905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6104076106a3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048a90610fd0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606006805461058390610ef6565b80601f01602080910402602001604051908101604052809291908181526020018280546105af90610ef6565b80156105fa5780601f106105d1576101008083540402835291602001916105fa565b820191905f5260205f20905b8154815290600101906020018083116105dd57829003601f168201915b5050505050905090565b5f6106176106106106a3565b848461086d565b6001905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070f9061105e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077d906110ec565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516108609190610d9b565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d29061105e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610949576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610940906110ec565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156109c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c090611154565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282540392505081905550610a1e838383610ad4565b90508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ac79190610d9b565b60405180910390a3505050565b5f80610ae05f80610621565b90508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610b3957600354620f4240610b269190611172565b83610b3191906111b3565b915050610bd9565b6064610b458286610621565b03610b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7c90611230565b60405180910390fd5b630850aaea610b948287610621565b10610bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcb90611298565b60405180910390fd5b829150505b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610c17578082015181840152602081019050610bfc565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610c3c82610be0565b610c468185610bea565b9350610c56818560208601610bfa565b610c5f81610c22565b840191505092915050565b5f6020820190508181035f830152610c828184610c32565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610cb782610c8e565b9050919050565b610cc781610cad565b8114610cd1575f80fd5b50565b5f81359050610ce281610cbe565b92915050565b5f819050919050565b610cfa81610ce8565b8114610d04575f80fd5b50565b5f81359050610d1581610cf1565b92915050565b5f8060408385031215610d3157610d30610c8a565b5b5f610d3e85828601610cd4565b9250506020610d4f85828601610d07565b9150509250929050565b5f8115159050919050565b610d6d81610d59565b82525050565b5f602082019050610d865f830184610d64565b92915050565b610d9581610ce8565b82525050565b5f602082019050610dae5f830184610d8c565b92915050565b5f805f60608486031215610dcb57610dca610c8a565b5b5f610dd886828701610cd4565b9350506020610de986828701610cd4565b9250506040610dfa86828701610d07565b9150509250925092565b5f60ff82169050919050565b610e1981610e04565b82525050565b5f602082019050610e325f830184610e10565b92915050565b5f60208284031215610e4d57610e4c610c8a565b5b5f610e5a84828501610cd4565b91505092915050565b610e6c81610cad565b82525050565b5f602082019050610e855f830184610e63565b92915050565b5f8060408385031215610ea157610ea0610c8a565b5b5f610eae85828601610cd4565b9250506020610ebf85828601610cd4565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610f0d57607f821691505b602082108103610f2057610f1f610ec9565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610f5d82610ce8565b9150610f6883610ce8565b9250828203905081811115610f8057610f7f610f26565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f610fba602083610bea565b9150610fc582610f86565b602082019050919050565b5f6020820190508181035f830152610fe781610fae565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611048602483610bea565b915061105382610fee565b604082019050919050565b5f6020820190508181035f8301526110758161103c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6110d6602283610bea565b91506110e18261107c565b604082019050919050565b5f6020820190508181035f830152611103816110ca565b9050919050565b7f746f6b656e206973207a65726f206164647265737300000000000000000000005f82015250565b5f61113e601583610bea565b91506111498261110a565b602082019050919050565b5f6020820190508181035f83015261116b81611132565b9050919050565b5f61117c82610ce8565b915061118783610ce8565b925082820261119581610ce8565b915082820484148315176111ac576111ab610f26565b5b5092915050565b5f6111bd82610ce8565b91506111c883610ce8565b92508282019050808211156111e0576111df610f26565b5b92915050565b7f45524332303a20544f4b454e205a6f72650000000000000000000000000000005f82015250565b5f61121a601183610bea565b9150611225826111e6565b602082019050919050565b5f6020820190508181035f8301526112478161120e565b9050919050565b7f45524332303a544f4b454e204572726f720000000000000000000000000000005f82015250565b5f611282601183610bea565b915061128d8261124e565b602082019050919050565b5f6020820190508181035f8301526112af81611276565b905091905056fea2646970667358221220b10c17dd4a1b3245d633576d24a782d32d9a3774efa8ca770a49decaee2b427964736f6c63430008180033000000000000000000000000af923c173be00e05e86fd2a584bd67311326ec56000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000009f09f90b8205065706500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009f09f90b820504550450000000000000000000000000000000000000000000000