"0x608060405234801561001057600080fd5b50600436106100ec576000357c0100000000000000000000000000000000000000000000000000000000900480639c52a7f1116100a9578063c959c42b11610083578063c959c42b146103f2578063cfc4af5514610420578063cfdd33021461044e578063f4b9fa751461046c576100ec565b80639c52a7f1146102ea578063b7e9cd241461032e578063bf353dbb1461039a576100ec565b80634423c5f1146100f15780634e8b1dd5146101ce5780635ff3a382146101fc57806365fae35e1461023e5780637bd2bea7146102825780637d780d82146102cc575b600080fd5b61011d6004803603602081101561010757600080fd5b81019080803590602001909291905050506104b6565b604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018465ffffffffffff1665ffffffffffff1681526020018365ffffffffffff1665ffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001965050505050505060405180910390f35b6101d6610556565b604051808265ffffffffffff1665ffffffffffff16815260200191505060405180910390f35b61023c6004803603606081101561021257600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061056e565b005b6102806004803603602081101561025457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109ad565b005b61028a610afe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102d4610b24565b6040518082815260200191505060405180910390f35b61032c6004803603602081101561030057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b2a565b005b6103846004803603606081101561034457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610c7b565b6040518082815260200191505060405180910390f35b6103dc600480360360208110156103b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ea6565b6040518082815260200191505060405180910390f35b61041e6004803603602081101561040857600080fd5b8101908080359060200190929190505050610ebe565b005b610428611202565b604051808265ffffffffffff1665ffffffffffff16815260200191505060405180910390f35b61045661121a565b6040518082815260200191505060405180910390f35b610474611220565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60016020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160149054906101000a900465ffffffffffff169080600201601a9054906101000a900465ffffffffffff16908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905086565b600560009054906101000a900465ffffffffffff1681565b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a4600073ffffffffffffffffffffffffffffffffffffffff166001600088815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561069a57600080fd5b426001600088815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff161180610708575060006001600088815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff16145b151561071357600080fd5b4260016000888152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff1611151561075157600080fd5b60016000878152602001908152602001600020600001548414151561077557600080fd5b60016000878152602001908152602001600020600101548510151561079957600080fd5b60016000878152602001908152602001600020600101546b033b2e3c9fd0803ce80000006107c960045488611246565b8115156107d257fe5b04111515156107e057600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0c8052661082733611276565b610866600160008b815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611276565b876040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018381526020018281526020019350505050600060405180830381600087803b1580156108c757600080fd5b505af11580156108db573d6000803e3d6000fd5b50505050336001600088815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600160008881526020019081526020016000206001018190555061096d42600560009054906101000a900465ffffffffffff1661129e565b6001600088815260200190815260200160002060020160146101000a81548165ffffffffffff021916908365ffffffffffff160217905550505050505050565b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a460016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141515610ab457600080fd5b60016000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a460016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141515610c3157600080fd5b60008060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050565b600060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141515610cca57600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600654101515610cfa57600080fd5b6006600081546001019190508190559050336001600083815260200190815260200160002060030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816001600083815260200190815260200160002060000181905550826001600083815260200190815260200160002060010181905550836001600083815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e0942600560069054906101000a900465ffffffffffff1661129e565b60016000838152602001908152602001600020600201601a6101000a81548165ffffffffffff021916908365ffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff167f7e8881001566f9f89aedb9c5dc3d856a2b81e5235a8196413ed484be91cc0df682858560405180848152602001838152602001828152602001935050505060405180910390a29392505050565b60006020528060005260406000206000915090505481565b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a4426001600086815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff16108015610fe8575060006001600086815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff1614155b8061102257504260016000868152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff16105b151561102d57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f196001600087815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016000888152602001908152602001600020600101546040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561113e57600080fd5b505af1158015611152573d6000803e3d6000fd5b505050506001600085815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160146101000a81549065ffffffffffff021916905560028201601a6101000a81549065ffffffffffff02191690556003820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055505050505050565b600560069054906101000a900465ffffffffffff1681565b60065481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000808214806112655750828283850292508281151561126257fe5b04145b151561127057600080fd5b92915050565b6000816c01000000000000000000000000026bffffffffffffffffffffffff19169050919050565b60008265ffffffffffff1682840191508165ffffffffffff16101515156112c457600080fd5b9291505056fea165627a7a723058207d29f9eced5494ec209d6866f7c4664c37ee07fd50d81bd8a8f39d8a110693a30029"