6080604052600160075f6101000a81548160ff0219169083151502179055503480156200002a575f80fd5b5060405162001fa738038062001fa783398181016040528101906200005091906200064e565b338383816003908162000064919062000913565b50806004908162000076919062000913565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000ec575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000e3919062000a3a565b60405180910390fd5b620000fd816200012060201b60201c565b50620001103382620001e360201b60201c565b8060068190555050505062000b23565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000256575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016200024d919062000a3a565b60405180910390fd5b620002695f83836200026d60201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620002c1578060025f828254620002b4919062000a82565b9250508190555062000392565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156200034d578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620003449392919062000acd565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620003db578060025f828254039250508190555062000425565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000484919062000b08565b60405180910390a3505050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b620004f282620004aa565b810181811067ffffffffffffffff82111715620005145762000513620004ba565b5b80604052505050565b5f6200052862000491565b9050620005368282620004e7565b919050565b5f67ffffffffffffffff821115620005585762000557620004ba565b5b6200056382620004aa565b9050602081019050919050565b5f5b838110156200058f57808201518184015260208101905062000572565b5f8484015250505050565b5f620005b0620005aa846200053b565b6200051d565b905082815260208101848484011115620005cf57620005ce620004a6565b5b620005dc84828562000570565b509392505050565b5f82601f830112620005fb57620005fa620004a2565b5b81516200060d8482602086016200059a565b91505092915050565b5f819050919050565b6200062a8162000616565b811462000635575f80fd5b50565b5f8151905062000648816200061f565b92915050565b5f805f606084860312156200066857620006676200049a565b5b5f84015167ffffffffffffffff8111156200068857620006876200049e565b5b6200069686828701620005e4565b935050602084015167ffffffffffffffff811115620006ba57620006b96200049e565b5b620006c886828701620005e4565b9250506040620006db8682870162000638565b9150509250925092565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200073457607f821691505b6020821081036200074a5762000749620006ef565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620007ae7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000771565b620007ba868362000771565b95508019841693508086168417925050509392505050565b5f819050919050565b5f620007fb620007f5620007ef8462000616565b620007d2565b62000616565b9050919050565b5f819050919050565b6200081683620007db565b6200082e620008258262000802565b8484546200077d565b825550505050565b5f90565b6200084462000836565b620008518184846200080b565b505050565b5b8181101562000878576200086c5f826200083a565b60018101905062000857565b5050565b601f821115620008c757620008918162000750565b6200089c8462000762565b81016020851015620008ac578190505b620008c4620008bb8562000762565b83018262000856565b50505b505050565b5f82821c905092915050565b5f620008e95f1984600802620008cc565b1980831691505092915050565b5f620009038383620008d8565b9150826002028217905092915050565b6200091e82620006e5565b67ffffffffffffffff8111156200093a5762000939620004ba565b5b6200094682546200071c565b620009538282856200087c565b5f60209050601f83116001811462000989575f841562000974578287015190505b620009808582620008f6565b865550620009ef565b601f198416620009998662000750565b5f5b82811015620009c2578489015182556001820191506020850194506020810190506200099b565b86831015620009e25784890151620009de601f891682620008d8565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000a2282620009f7565b9050919050565b62000a348162000a16565b82525050565b5f60208201905062000a4f5f83018462000a29565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000a8e8262000616565b915062000a9b8362000616565b925082820190508082111562000ab65762000ab562000a55565b5b92915050565b62000ac78162000616565b82525050565b5f60608201905062000ae25f83018662000a29565b62000af1602083018562000abc565b62000b00604083018462000abc565b949350505050565b5f60208201905062000b1d5f83018462000abc565b92915050565b6114768062000b315f395ff3fe608060405234801561000f575f80fd5b5060043610610114575f3560e01c806370a08231116100a05780639dc29fac1161006f5780639dc29fac146102ba578063a9059cbb146102d6578063dd62ed3e14610306578063e478b5cb14610336578063f2fde38b1461034057610114565b806370a0823114610244578063715018a6146102745780638da5cb5b1461027e57806395d89b411461029c57610114565b806318160ddd116100e757806318160ddd146101a057806323b872dd146101be578063313ce567146101ee57806340c10f191461020c5780636ef8b5411461022857610114565b8063047fc9aa1461011857806306fdde0314610136578063095ea7b314610154578063101aab7814610184575b5f80fd5b61012061035c565b60405161012d9190611015565b60405180910390f35b61013e610362565b60405161014b91906110b8565b60405180910390f35b61016e60048036038101906101699190611160565b6103f2565b60405161017b91906111b8565b60405180910390f35b61019e600480360381019061019991906111d1565b610414565b005b6101a8610474565b6040516101b59190611015565b60405180910390f35b6101d860048036038101906101d391906111fc565b61047d565b6040516101e591906111b8565b60405180910390f35b6101f66104ab565b6040516102039190611267565b60405180910390f35b61022660048036038101906102219190611160565b6104b3565b005b610242600480360381019061023d91906111d1565b6104c9565b005b61025e600480360381019061025991906111d1565b610528565b60405161026b9190611015565b60405180910390f35b61027c61056d565b005b610286610580565b604051610293919061128f565b60405180910390f35b6102a46105a8565b6040516102b191906110b8565b60405180910390f35b6102d460048036038101906102cf9190611160565b610638565b005b6102f060048036038101906102eb9190611160565b61064e565b6040516102fd91906111b8565b60405180910390f35b610320600480360381019061031b91906112a8565b610709565b60405161032d9190611015565b60405180910390f35b61033e61078b565b005b61035a600480360381019061035591906111d1565b6107ae565b005b60065481565b60606003805461037190611313565b80601f016020809104026020016040519081016040528092919081815260200182805461039d90611313565b80156103e85780601f106103bf576101008083540402835291602001916103e8565b820191905f5260205f20905b8154815290600101906020018083116103cb57829003601f168201915b5050505050905090565b5f806103fc610832565b9050610409818585610839565b600191505092915050565b61041c61084b565b600160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f600254905090565b5f80610487610832565b90506104948582856108d2565b61049f858585610964565b60019150509392505050565b5f6012905090565b6104bb61084b565b6104c58282610a54565b5050565b6104d161084b565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61057561084b565b61057e5f610ad3565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546105b790611313565b80601f01602080910402602001604051908101604052809291908181526020018280546105e390611313565b801561062e5780601f106106055761010080835404028352916020019161062e565b820191905f5260205f20905b81548152906001019060200180831161061157829003601f168201915b5050505050905090565b61064061084b565b61064a8282610b96565b5050565b5f60075f9054906101000a900460ff16156106f4576001151560085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515146106f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ea9061138d565b60405180910390fd5b5b6106ff338484610964565b6001905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61079361084b565b5f60075f6101000a81548160ff021916908315150217905550565b6107b661084b565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610826575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161081d919061128f565b60405180910390fd5b61082f81610ad3565b50565b5f33905090565b6108468383836001610c15565b505050565b610853610832565b73ffffffffffffffffffffffffffffffffffffffff16610871610580565b73ffffffffffffffffffffffffffffffffffffffff16146108d057610894610832565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016108c7919061128f565b60405180910390fd5b565b5f6108dd8484610709565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461095e578181101561094f578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610946939291906113ab565b60405180910390fd5b61095d84848484035f610c15565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109d4575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016109cb919061128f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a44575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610a3b919061128f565b60405180910390fd5b610a4f838383610de4565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ac4575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610abb919061128f565b60405180910390fd5b610acf5f8383610de4565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c06575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610bfd919061128f565b60405180910390fd5b610c11825f83610de4565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610c85575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610c7c919061128f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610cf5575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610cec919061128f565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610dde578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610dd59190611015565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e34578060025f828254610e28919061140d565b92505081905550610f02565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610ebd578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610eb4939291906113ab565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f49578060025f8282540392505081905550610f93565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ff09190611015565b60405180910390a3505050565b5f819050919050565b61100f81610ffd565b82525050565b5f6020820190506110285f830184611006565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561106557808201518184015260208101905061104a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61108a8261102e565b6110948185611038565b93506110a4818560208601611048565b6110ad81611070565b840191505092915050565b5f6020820190508181035f8301526110d08184611080565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611105826110dc565b9050919050565b611115816110fb565b811461111f575f80fd5b50565b5f813590506111308161110c565b92915050565b61113f81610ffd565b8114611149575f80fd5b50565b5f8135905061115a81611136565b92915050565b5f8060408385031215611176576111756110d8565b5b5f61118385828601611122565b92505060206111948582860161114c565b9150509250929050565b5f8115159050919050565b6111b28161119e565b82525050565b5f6020820190506111cb5f8301846111a9565b92915050565b5f602082840312156111e6576111e56110d8565b5b5f6111f384828501611122565b91505092915050565b5f805f60608486031215611213576112126110d8565b5b5f61122086828701611122565b935050602061123186828701611122565b92505060406112428682870161114c565b9150509250925092565b5f60ff82169050919050565b6112618161124c565b82525050565b5f60208201905061127a5f830184611258565b92915050565b611289816110fb565b82525050565b5f6020820190506112a25f830184611280565b92915050565b5f80604083850312156112be576112bd6110d8565b5b5f6112cb85828601611122565b92505060206112dc85828601611122565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061132a57607f821691505b60208210810361133d5761133c6112e6565b5b50919050565b7f6e6f7420616c6c6f7765640000000000000000000000000000000000000000005f82015250565b5f611377600b83611038565b915061138282611343565b602082019050919050565b5f6020820190508181035f8301526113a48161136b565b9050919050565b5f6060820190506113be5f830186611280565b6113cb6020830185611006565b6113d86040830184611006565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61141782610ffd565b915061142283610ffd565b925082820190508082111561143a576114396113e0565b5b9291505056fea2646970667358221220745246e61a410811c13250ac42c1e08a0ea6a6d3f05e63716b081cdb8267b3b064736f6c63430008140033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000033b2e3c9fd0803ce8000000000000000000000000000000000000000000000000000000000000000000000a666972737420636f696e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036673630000000000000000000000000000000000000000000000000000000000