0x6080604052600660055f6101000a81548160ff021916908360ff16021790555066c6efce9c8507f7600655348015610035575f5ffd5b506040518060400160405280600581526020017f555344d0a20000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f555344d0a200000000000000000000000000000000000000000000000000000081525081600390816100b19190610306565b5080600490816100c19190610306565b5050506103d5565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061014457607f821691505b60208210810361015757610156610100565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026101b97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261017e565b6101c3868361017e565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6102076102026101fd846101db565b6101e4565b6101db565b9050919050565b5f819050919050565b610220836101ed565b61023461022c8261020e565b84845461018a565b825550505050565b5f5f905090565b61024b61023c565b610256818484610217565b505050565b5b818110156102795761026e5f82610243565b60018101905061025c565b5050565b601f8211156102be5761028f8161015d565b6102988461016f565b810160208510156102a7578190505b6102bb6102b38561016f565b83018261025b565b50505b505050565b5f82821c905092915050565b5f6102de5f19846008026102c3565b1980831691505092915050565b5f6102f683836102cf565b9150826002028217905092915050565b61030f826100c9565b67ffffffffffffffff811115610328576103276100d3565b5b610332825461012d565b61033d82828561027d565b5f60209050601f83116001811461036e575f841561035c578287015190505b61036685826102eb565b8655506103cd565b601f19841661037c8661015d565b5f5b828110156103a35784890151825560018201915060208501945060208101905061037e565b868310156103c057848901516103bc601f8916826102cf565b8355505b6001600288020188555050505b505050505050565b6110c9806103e25f395ff3fe608060405234801561000f575f5ffd5b506004361061009c575f3560e01c806370a082311161006457806370a082311461015a57806395d89b411461018a578063a9059cbb146101a8578063aae883dc146101d8578063dd62ed3e146102085761009c565b806306fdde03146100a0578063095ea7b3146100be57806318160ddd146100ee57806323b872dd1461010c578063313ce5671461013c575b5f5ffd5b6100a8610238565b6040516100b59190610bab565b60405180910390f35b6100d860048036038101906100d39190610c60565b6102c8565b6040516100e59190610cb8565b60405180910390f35b6100f66102ea565b6040516101039190610ce0565b60405180910390f35b61012660048036038101906101219190610cf9565b6102f3565b6040516101339190610cb8565b60405180910390f35b610144610321565b6040516101519190610d64565b60405180910390f35b610174600480360381019061016f9190610d7d565b610336565b6040516101819190610ce0565b60405180910390f35b61019261037b565b60405161019f9190610bab565b60405180910390f35b6101c260048036038101906101bd9190610c60565b61040b565b6040516101cf9190610cb8565b60405180910390f35b6101f260048036038101906101ed9190610e5e565b61042d565b6040516101ff9190610cb8565b60405180910390f35b610222600480360381019061021d9190610f0e565b610536565b60405161022f9190610ce0565b60405180910390f35b60606003805461024790610f79565b80601f016020809104026020016040519081016040528092919081815260200182805461027390610f79565b80156102be5780601f10610295576101008083540402835291602001916102be565b820191905f5260205f20905b8154815290600101906020018083116102a157829003601f168201915b5050505050905090565b5f5f6102d26105b8565b90506102df8185856105bf565b600191505092915050565b5f600254905090565b5f5f6102fd6105b8565b905061030a8582856105d1565b610315858585610663565b60019150509392505050565b5f60055f9054906101000a900460ff16905090565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60606004805461038a90610f79565b80601f01602080910402602001604051908101604052809291908181526020018280546103b690610f79565b80156104015780601f106103d857610100808354040283529160200191610401565b820191905f5260205f20905b8154815290600101906020018083116103e457829003601f168201915b5050505050905090565b5f5f6104156105b8565b9050610422818585610663565b600191505092915050565b5f5f8585905090505f5b818161ffff1610156105265786868261ffff1681811061045a57610459610fa9565b5b905060200201602081019061046f9190610d7d565b73ffffffffffffffffffffffffffffffffffffffff1685858361ffff1681811061049c5761049b610fa9565b5b90506020020160208101906104b19190610d7d565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8b8b8561ffff168181106104ff576104fe610fa9565b5b905060200201356040516105139190610ce0565b60405180910390a3806001019050610437565b5060019150509695505050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b6105cc8383836001610753565b505050565b5f6105dc8484610536565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461065d578181101561064e578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161064593929190610fe5565b60405180910390fd5b61065c84848484035f610753565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036106d3575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016106ca919061101a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610743575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161073a919061101a565b60405180910390fd5b61074e838383610922565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036107c3575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016107ba919061101a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610833575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161082a919061101a565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550801561091c578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109139190610ce0565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610972578060025f8282546109669190611060565b92505081905550610a40565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156109fb578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016109f293929190610fe5565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a87578060025f8282540392505081905550610ad1565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b2e9190610ce0565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610b7d82610b3b565b610b878185610b45565b9350610b97818560208601610b55565b610ba081610b63565b840191505092915050565b5f6020820190508181035f830152610bc38184610b73565b905092915050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610bfc82610bd3565b9050919050565b610c0c81610bf2565b8114610c16575f5ffd5b50565b5f81359050610c2781610c03565b92915050565b5f819050919050565b610c3f81610c2d565b8114610c49575f5ffd5b50565b5f81359050610c5a81610c36565b92915050565b5f5f60408385031215610c7657610c75610bcb565b5b5f610c8385828601610c19565b9250506020610c9485828601610c4c565b9150509250929050565b5f8115159050919050565b610cb281610c9e565b82525050565b5f602082019050610ccb5f830184610ca9565b92915050565b610cda81610c2d565b82525050565b5f602082019050610cf35f830184610cd1565b92915050565b5f5f5f60608486031215610d1057610d0f610bcb565b5b5f610d1d86828701610c19565b9350506020610d2e86828701610c19565b9250506040610d3f86828701610c4c565b9150509250925092565b5f60ff82169050919050565b610d5e81610d49565b82525050565b5f602082019050610d775f830184610d55565b92915050565b5f60208284031215610d9257610d91610bcb565b5b5f610d9f84828501610c19565b91505092915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f840112610dc957610dc8610da8565b5b8235905067ffffffffffffffff811115610de657610de5610dac565b5b602083019150836020820283011115610e0257610e01610db0565b5b9250929050565b5f5f83601f840112610e1e57610e1d610da8565b5b8235905067ffffffffffffffff811115610e3b57610e3a610dac565b5b602083019150836020820283011115610e5757610e56610db0565b5b9250929050565b5f5f5f5f5f5f60608789031215610e7857610e77610bcb565b5b5f87013567ffffffffffffffff811115610e9557610e94610bcf565b5b610ea189828a01610db4565b9650965050602087013567ffffffffffffffff811115610ec457610ec3610bcf565b5b610ed089828a01610e09565b9450945050604087013567ffffffffffffffff811115610ef357610ef2610bcf565b5b610eff89828a01610e09565b92509250509295509295509295565b5f5f60408385031215610f2457610f23610bcb565b5b5f610f3185828601610c19565b9250506020610f4285828601610c19565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610f9057607f821691505b602082108103610fa357610fa2610f4c565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b610fdf81610bf2565b82525050565b5f606082019050610ff85f830186610fd6565b6110056020830185610cd1565b6110126040830184610cd1565b949350505050565b5f60208201905061102d5f830184610fd6565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61106a82610c2d565b915061107583610c2d565b925082820190508082111561108d5761108c611033565b5b9291505056fea2646970667358221220cdb40bc6542a6152c0d05a4ecf272ede31a98fa352597abe586d05ea78f5ad0764736f6c634300081b0033