0x60806040526012600260006101000a81548160ff021916908360ff16021790555060006009556000600a5566038d7ea4c68000600c55600a600d55600260009054906101000a900460ff1660ff16600a0a6103e802600e556000600f55600a60105573b8a33997f1ecea0191b520a8aef82926f2c28cf2601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506064601455348015620000c857600080fd5b50600260009054906101000a900460ff1660ff16600a0a630c84588002600381905550600354601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506040805190810160405280600481526020017f43796c6500000000000000000000000000000000000000000000000000000000815250600090805190602001906200017e929190620002da565b506040805190810160405280600481526020017f43594c450000000000000000000000000000000000000000000000000000000081525060019080519060200190620001cc929190620002da565b504360048190555043600581905550620001fe6003546002620002a4640100000000026200288c176401000000009004565b60078190555062000228600354600754620002c0640100000000026200255c176401000000009004565b60088190555033601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506007600b81905550600260009054906101000a900460ff1660ff16600a0a603202600681905550601460118190555062000389565b6000808284811515620002b357fe5b0490508091505092915050565b6000828211151515620002cf57fe5b818303905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200031d57805160ff19168380011785556200034e565b828001600101855582156200034e579182015b828111156200034d57825182559160200191906001019062000330565b5b5090506200035d919062000361565b5090565b6200038691905b808211156200038257600081600090555060010162000368565b5090565b90565b61293480620003996000396000f3006080604052600436106101cd576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806304cdc542146101d2578063095ea7b3146101e95780630ad61b5f1461024e578063226e4d9c1461027957806323b872dd14610290578063257476df1461031557806326f00c4d1461034057806335823e801461039b57806342966c68146103f2578063617459e51461043757806368c64689146104625780636efcbe041461048d57806370a08231146104b857806379cc67901461050f5780637cd55bd9146105745780637ec3fbfa1461059f5780638f89a447146105f65780639696ccf2146106215780639e4d1b2b14610650578063a153e7081461065a578063a3f43d24146106b1578063a9059cbb1461070c578063aea1eeef14610771578063b1500682146107cc578063b1a4904e14610823578063b61a125e1461083a578063c4e41b221461087f578063cae811e2146108aa578063cae9ca51146108d5578063cc5e6c5014610980578063d018458e146109ad578063d4f9674b14610a04578063dd62ed3e14610a2f578063e79bafa114610aa6578063f12389f514610ad3578063f31ac52014610afe578063f7db31f114610b55575b600080fd5b3480156101de57600080fd5b506101e7610bac565b005b3480156101f557600080fd5b50610234600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610eca565b604051808215151515815260200191505060405180910390f35b34801561025a57600080fd5b50610263610fbc565b6040518082815260200191505060405180910390f35b34801561028557600080fd5b5061028e610fc6565b005b34801561029c57600080fd5b506102fb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061108f565b604051808215151515815260200191505060405180910390f35b34801561032157600080fd5b5061032a6111bc565b6040518082815260200191505060405180910390f35b34801561034c57600080fd5b50610381600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611203565b604051808215151515815260200191505060405180910390f35b3480156103a757600080fd5b506103dc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061125c565b6040518082815260200191505060405180910390f35b3480156103fe57600080fd5b5061041d6004803603810190808035906020019092919050505061132a565b604051808215151515815260200191505060405180910390f35b34801561044357600080fd5b5061044c61142e565b6040518082815260200191505060405180910390f35b34801561046e57600080fd5b50610477611438565b6040518082815260200191505060405180910390f35b34801561049957600080fd5b506104a2611442565b6040518082815260200191505060405180910390f35b3480156104c457600080fd5b506104f9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061144c565b6040518082815260200191505060405180910390f35b34801561051b57600080fd5b5061055a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611464565b604051808215151515815260200191505060405180910390f35b34801561058057600080fd5b5061058961167e565b6040518082815260200191505060405180910390f35b3480156105ab57600080fd5b506105e0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611688565b6040518082815260200191505060405180910390f35b34801561060257600080fd5b5061060b6116a0565b6040518082815260200191505060405180910390f35b34801561062d57600080fd5b506106366116a6565b604051808215151515815260200191505060405180910390f35b6106586117a4565b005b34801561066657600080fd5b5061069b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611af1565b6040518082815260200191505060405180910390f35b3480156106bd57600080fd5b506106f2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b09565b604051808215151515815260200191505060405180910390f35b34801561071857600080fd5b50610757600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b29565b604051808215151515815260200191505060405180910390f35b34801561077d57600080fd5b506107b2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c90565b604051808215151515815260200191505060405180910390f35b3480156107d857600080fd5b5061080d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cb0565b6040518082815260200191505060405180910390f35b34801561082f57600080fd5b50610838611cc8565b005b34801561084657600080fd5b5061086560048036038101908080359060200190929190505050611eb8565b604051808215151515815260200191505060405180910390f35b34801561088b57600080fd5b50610894611ed8565b6040518082815260200191505060405180910390f35b3480156108b657600080fd5b506108bf611ee2565b6040518082815260200191505060405180910390f35b3480156108e157600080fd5b50610966600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611f71565b604051808215151515815260200191505060405180910390f35b34801561098c57600080fd5b506109ab600480360381019080803590602001909291905050506120f4565b005b3480156109b957600080fd5b506109ee600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612340565b6040518082815260200191505060405180910390f35b348015610a1057600080fd5b50610a19612358565b6040518082815260200191505060405180910390f35b348015610a3b57600080fd5b50610a90600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061237d565b6040518082815260200191505060405180910390f35b348015610ab257600080fd5b50610ad1600480360381019080803590602001909291905050506123a2565b005b348015610adf57600080fd5b50610ae8612408565b6040518082815260200191505060405180910390f35b348015610b0a57600080fd5b50610b3f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612412565b6040518082815260200191505060405180910390f35b348015610b6157600080fd5b50610b96600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061245b565b6040518082815260200191505060405180910390f35b6000601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c0657600080fd5b6000600854111515610c1757600080fd5b601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c6f57600080fd5b610c783361125c565b90503073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33610ca08461251a565b6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610d2557600080fd5b505af1158015610d39573d6000803e3d6000fd5b505050506040513d6020811015610d4f57600080fd5b8101908080519060200190929190505050503073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610da98461253b565b6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610e2e57600080fd5b505af1158015610e42573d6000803e3d6000fd5b505050506040513d6020811015610e5857600080fd5b810190808051906020019092919050505050610e72612358565b601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ec16008548261255c565b60088190555050565b600081601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600654905090565b6000610fd0612358565b9050600a81118015610fe25750606481105b1561100f57600260009054906101000a900460ff1660ff16600a0a6028026006819055506005600b819055505b60648111801561102057506103e881105b1561104d57600260009054906101000a900460ff1660ff16600a0a601e026006819055506004600b819055505b6103e88111801561105f575061271081105b1561108c57600260009054906101000a900460ff1660ff16600a0a6014026006819055506003600b819055505b50565b6000601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561111c57600080fd5b81601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506111b1848484612575565b600190509392505050565b6000601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050809050919050565b6000806112ba6112b261126d612358565b601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255c565b60115461288c565b905061131f6113196113126112cd61142e565b601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a7565b606461288c565b826128a7565b915081915050919050565b600081601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561137a57600080fd5b81601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816003600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a260019050919050565b6000600b54905090565b6000600754905090565b6000600d54905090565b60156020528060005260406000206000915090505481565b600081601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156114b457600080fd5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561153f57600080fd5b81601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816003600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a26001905092915050565b6000600c54905090565b60196020528060005260406000206000915090505481565b600e5481565b6000601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561170057600080fd5b6000601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905090565b6006546007541115156117b657600080fd5b601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117fe612358565b11151561180a57600080fd5b60176000611816612358565b815260200190815260200160002060009054906101000a900460ff1615151561183e57600080fd5b611846610fbc565b60068190555061185760065461253b565b60098190555061186860065461251a565b600a819055503073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600a546040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561191357600080fd5b505af1158015611927573d6000803e3d6000fd5b505050506040513d602081101561193d57600080fd5b8101908080519060200190929190505050503073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009546040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611a1657600080fd5b505af1158015611a2a573d6000803e3d6000fd5b505050506040513d6020811015611a4057600080fd5b810190808051906020019092919050505050611a6060075460065461255c565b600781905550600160176000611a74612358565b815260200190815260200160002060006101000a81548160ff021916908315150217905550611aac611aa4612358565b6014546128e2565b601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b601c6020528060005260406000206000915090505481565b60186020528060005260406000206000915054906101000a900460ff1681565b600080601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c7a57611bc7601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461255c565b9050601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111515611c1657600080fd5b600d54811015611c79576000601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b611c85338585612575565b600191505092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b601d6020528060005260406000206000915090505481565b6000601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611d2357600080fd5b600d54601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111515611d7257600080fd5b601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611dcb57600080fd5b611dd3612358565b90506001601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60176020528060005260406000206000915054906101000a900460ff1681565b6000600354905090565b6000611f6c601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255c565b905090565b600080849050611f818585610eca565b156120eb578073ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338630876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561207b578082015181840152602081019050612060565b50505050905090810190601f1680156120a85780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050600191506120ec565b5b509392505050565b601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561214c57600080fd5b806121d5601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255c565b101515156121e257600080fd5b600e54811115801561223e5750600e5461223b601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836128e2565b11155b151561224957600080fd5b600d548111151561225957600080fd5b6001601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506122fa601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826128e2565b601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b601a6020528060005260406000206000915090505481565b6000806000612365612900565b91506123738260045461255c565b9050809250505090565b6016602052816000526040600020602052806000526040600020600091509150505481565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156123fe57600080fd5b8060118190555050565b6000600854905090565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156124b95760009050612514565b61250a601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125058461125c565b6128e2565b9050809050612515565b5b919050565b600061253161252a8360506128a7565b606461288c565b9050809050919050565b600061255261254b8360146128a7565b606461288c565b9050809050919050565b600082821115151561256a57fe5b818303905092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff161415151561259c57600080fd5b81601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156125ea57600080fd5b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011015151561267957600080fd5b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401905081601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a380601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540114151561288657fe5b50505050565b600080828481151561289a57fe5b0490508091505092915050565b60008060008414156128bc57600091506128db565b82840290508284828115156128cd57fe5b041415156128d757fe5b8091505b5092915050565b60008082840190508381101515156128f657fe5b8091505092915050565b6000439050905600a165627a7a72305820b3ad799ba374375a86fadf23fd7aaa1c81075d21b00f37e451a3e5ddf08ace110029