6060604052341561000f57600080fd5b5b610bd38061001f6000396000f300606060405236156100ad576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100b2578063095ea7b31461014157806318160ddd1461019b57806323b872dd146101c4578063313ce5671461023d57806370a082311461026c57806395d89b41146102b9578063a0712d6814610348578063a9059cbb1461036b578063d8ccd0f3146103c5578063dd62ed3e14610400575b600080fd5b34156100bd57600080fd5b6100c561046c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101065780820151818401525b6020810190506100ea565b50505050905090810190601f1680156101335780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561014c57600080fd5b610181600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506104a5565b604051808215151515815260200191505060405180910390f35b34156101a657600080fd5b6101ae610639565b6040518082815260200191505060405180910390f35b34156101cf57600080fd5b610223600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061064d565b604051808215151515815260200191505060405180910390f35b341561024857600080fd5b610250610790565b604051808260ff1660ff16815260200191505060405180910390f35b341561027757600080fd5b6102a3600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610795565b6040518082815260200191505060405180910390f35b34156102c457600080fd5b6102cc6107de565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561030d5780820151818401525b6020810190506102f1565b50505050905090810190601f16801561033a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561035357600080fd5b6103696004808035906020019091905050610817565b005b341561037657600080fd5b6103ab600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506108b3565b604051808215151515815260200191505060405180910390f35b34156103d057600080fd5b6103e660048080359060200190919050506108ce565b604051808215151515815260200191505060405180910390f35b341561040b57600080fd5b610456600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506109bf565b6040518082815260200191505060405180910390f35b6040805190810160405280600b81526020017f476173746f6b656e2e696f00000000000000000000000000000000000000000081525081565b6000803390506000831415801561053957506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b156105475760009150610632565b82600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a3600191505b5092915050565b60008064ffffffffff9050805491505b5090565b600080339050600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483111580156106e657506106e5858585610a47565b5b1561077e5782600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555060019150610788565b60009150610788565b5b509392505050565b600281565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b6040805190810160405280600381526020017f475354000000000000000000000000000000000000000000000000000000000081525081565b600080600080600064ffffffffff9450845493506001848601019250858486010191508290505b818111151561085957600181555b808060010191505061083e565b8584018555856000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b505050505050565b6000803390506108c4818585610a47565b91505b5092915050565b60008060008060008060008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205495508588111561092b57600096506109b4565b64ffffffffff9450845493506001888587010301925083850191508290505b818111151561096557600081555b808060010191505061094a565b87840385558786036000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600196505b505050505050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b92915050565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515610b9657816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610ba0565b60009050610ba0565b5b93925050505600a165627a7a723058202da0ed40d8c3a516c8ed4185ceeb55e65d6941c8c639f6969eb9b2294075758c0029