0x608060405261069060015573dc6dfe8040fc162ab318de99c63ec2cd0e203010600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561006b57600080fd5b5061221e8061007b6000396000f3fe60806040526004361061013d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062f696f4146101cc578063069edaa0146101e357806306ececcb14610211578063126879e61461022857806316eaa4b4146102535780632dbb323f1461026a578063500d7c7414610295578063573074f9146102fa5780635aa8ad82146103255780635f3ebe0a1461035057806363615abf1461037b57806381d6c866146103a65780638da12b2b146103d1578063926d9181146103fc57806393d51daf146104275780639d5e2e1e14610452578063a81005bf146104da578063aaaea047146104e4578063b7304a11146104ee578063cbc774ba1461053f578063d0ac7e1e1461056a578063d5a0eb9714610581578063e5ec5d8a146105e6578063f0385bc414610615575b60003390506000813b90506000811415156101c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f736f7272792068756d616e73206f6e6c7900000000000000000000000000000081525060200191505060405180910390fd5b6101c8610650565b5050005b3480156101d857600080fd5b506101e1610b21565b005b61020f600480360360208110156101f957600080fd5b8101908080359060200190929190505050610b94565b005b34801561021d57600080fd5b50610226610ca5565b005b34801561023457600080fd5b5061023d610d18565b6040518082815260200191505060405180910390f35b34801561025f57600080fd5b50610268610d1e565b005b34801561027657600080fd5b5061027f610df1565b6040518082815260200191505060405180910390f35b3480156102a157600080fd5b506102e4600480360360208110156102b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f65565b6040518082815260200191505060405180910390f35b34801561030657600080fd5b5061030f610f7d565b6040518082815260200191505060405180910390f35b34801561033157600080fd5b5061033a610f83565b6040518082815260200191505060405180910390f35b34801561035c57600080fd5b50610365610fdc565b6040518082815260200191505060405180910390f35b34801561038757600080fd5b50610390611020565b6040518082815260200191505060405180910390f35b3480156103b257600080fd5b506103bb61103f565b6040518082815260200191505060405180910390f35b3480156103dd57600080fd5b506103e661112d565b6040518082815260200191505060405180910390f35b34801561040857600080fd5b50610411611174565b6040518082815260200191505060405180910390f35b34801561043357600080fd5b5061043c6111cf565b6040518082815260200191505060405180910390f35b34801561045e57600080fd5b5061048b6004803603602081101561047557600080fd5b81019080803590602001909291905050506112be565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018260ff1660ff1681526020019250505060405180910390f35b6104e2610650565b005b6104ec61130f565b005b3480156104fa57600080fd5b5061053d6004803603602081101561051157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117b3565b005b34801561054b57600080fd5b50610554611834565b6040518082815260200191505060405180910390f35b34801561057657600080fd5b5061057f61183a565b005b34801561058d57600080fd5b506105d0600480360360208110156105a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118ad565b6040518082815260200191505060405180910390f35b3480156105f257600080fd5b506105fb6118c5565b604051808215151515815260200191505060405180910390f35b34801561062157600080fd5b5061064e6004803603602081101561063857600080fd5b8101908080359060200190929190505050611930565b005b60003390506000813b90506000811415156106d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f736f7272792068756d616e73206f6e6c7900000000000000000000000000000081525060200191505060405180910390fd5b60003490506703782dace9d90000811415610b1c5760003390506000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610b1a5760038060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600254905060408051908101604052808373ffffffffffffffffffffffffffffffffffffffff168152602001600160ff168152506009600083806001019450815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff021916908360ff16021790555090505060408051908101604052808373ffffffffffffffffffffffffffffffffffffffff168152602001600260ff168152506009600083806001019450815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff021916908360ff16021790555090505060408051908101604052808373ffffffffffffffffffffffffffffffffffffffff168152602001600360ff168152506009600083806001019450815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff021916908360ff1602179055509050508060028190555043600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555043600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060036000808282540192505081905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6611c37937e080009081150290604051600060405180830381858888f19350505050158015610aa7573d6000803e3d6000fd5b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc660aa87bee5380009081150290604051600060405180830381858888f19350505050158015610b17573d6000803e3d6000fd5b50505b505b505050565b60003390506000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111515610b7457600080fd5b610b7c6118c5565b1515610b8757600080fd5b610b916003611d72565b50565b73b3775fb83f7d12a36e0475abdd1fca35c091efbe73ffffffffffffffffffffffffffffffffffffffff1663f088d54782600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506020604051808303818588803b158015610c6557600080fd5b505af1158015610c79573d6000803e3d6000fd5b50505050506040513d6020811015610c9057600080fd5b81019080805190602001909291905050505050565b60003390506000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111515610cf857600080fd5b610d006118c5565b1515610d0b57600080fd5b610d156002611d72565b50565b60005481565b73b3775fb83f7d12a36e0475abdd1fca35c091efbe73ffffffffffffffffffffffffffffffffffffffff16633ccfd60b6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b158015610d9657600080fd5b505af1158015610daa573d6000803e3d6000fd5b5050505033600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080610e46600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544361210a90919063ffffffff16565b9050600062010f2c90508082101515610ea357610e9a600c54610e8c600484023073ffffffffffffffffffffffffffffffffffffffff163161212690919063ffffffff16565b61215790919063ffffffff16565b92505050610f62565b6000610ef6612710610ee86374722e40610eda612710610ecc898a61212690919063ffffffff16565b61212690919063ffffffff16565b61215790919063ffffffff16565b61217b90919063ffffffff16565b9050610f5c612710610f4e600c54610f4085610f32893073ffffffffffffffffffffffffffffffffffffffff163161212690919063ffffffff16565b61212690919063ffffffff16565b61215790919063ffffffff16565b61215790919063ffffffff16565b93505050505b90565b60046020528060005260406000206000915090505481565b60025481565b6000610fd7600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544361210a90919063ffffffff16565b905090565b600061101b600c5461100d600054610fff600b544361210a90919063ffffffff16565b61212690919063ffffffff16565b61217b90919063ffffffff16565b905090565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600073b3775fb83f7d12a36e0475abdd1fca35c091efbe73ffffffffffffffffffffffffffffffffffffffff166265318b306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156110ed57600080fd5b505afa158015611101573d6000803e3d6000fd5b505050506040513d602081101561111757600080fd5b8101908080519060200190929190505050905090565b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b60006111ca600154600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461217b90919063ffffffff16565b905090565b600073b3775fb83f7d12a36e0475abdd1fca35c091efbe73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561127e57600080fd5b505afa158015611292573d6000803e3d6000fd5b505050506040513d60208110156112a857600080fd5b8101908080519060200190929190505050905090565b60096020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460ff16905082565b60003490506703782dace9d900008114151561132a57600080fd5b60001515600a60019054906101000a900460ff16151514151561134c57600080fd5b600033905060038060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060408051908101604052808273ffffffffffffffffffffffffffffffffffffffff168152602001600160ff1681525060096000600254815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff021916908360ff16021790555090505060026000815480929190600101919050555060408051908101604052808273ffffffffffffffffffffffffffffffffffffffff168152602001600260ff1681525060096000600254815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff021916908360ff16021790555090505060026000815480929190600101919050555060408051908101604052808273ffffffffffffffffffffffffffffffffffffffff168152602001600360ff1681525060096000600254815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff021916908360ff16021790555090505060026000815480929190600101919050555043600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555043600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600360005401600081905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6611c37937e080009081150290604051600060405180830381858888f1935050505015801561171c573d6000803e3d6000fd5b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc660aa87bee5380009081150290604051600060405180830381858888f1935050505015801561178c573d6000803e3d6000fd5b5043600b819055506001600a60016101000a81548160ff0219169083151502179055505050565b60001515600a60009054906101000a900460ff1615151415156117d557600080fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a60006101000a81548160ff02191690831515021790555050565b60015481565b60003390506000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411151561188d57600080fd5b6118956118c5565b15156118a057600080fd5b6118aa6001611d72565b50565b60036020528060005260406000206000915090505481565b6000611919600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544361210a90919063ffffffff16565b60015411151561192c576001905061192d565b5b90565b60003390506000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411151561198357600080fd5b61198b6118c5565b151561199657600080fd5b600033905060006009600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d6c57611a12612197565b600060026000815460019003919050819055905060096000828152602001908152602001600020600960008781526020019081526020016000206000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000820160149054906101000a900460ff168160000160146101000a81548160ff021916908360ff16021790555090505060096000828152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549060ff02191690555050600080815480929190600190039190505550600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550600062010f2c90506000611bf3600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544361210a90919063ffffffff16565b905060008282101515611c4857611c41600c54611c33600486023073ffffffffffffffffffffffffffffffffffffffff163161212690919063ffffffff16565b61215790919063ffffffff16565b9050611d05565b6000611c9b612710611c8d6374722e40611c7f612710611c71898a61212690919063ffffffff16565b61212690919063ffffffff16565b61215790919063ffffffff16565b61217b90919063ffffffff16565b9050611d01612710611cf3600c54611ce585611cd7893073ffffffffffffffffffffffffffffffffffffffff163161212690919063ffffffff16565b61212690919063ffffffff16565b61215790919063ffffffff16565b61215790919063ffffffff16565b9150505b611d1a82600c5461210a90919063ffffffff16565b600c819055508573ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d66573d6000803e3d6000fd5b50505050505b50505050565b611d7a612197565b6000600254424432604051602001808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140193505050506040516020818303038152906040528051906020012060019004811515611dfe57fe5b0690508160ff166009600083815260200190815260200160002060000160149054906101000a900460ff1660ff16141561210657600033905060006009600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060096000600260008154600190039190508190558152602001908152602001600020600960008581526020019081526020016000206000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000820160149054906101000a900460ff168160000160146101000a81548160ff021916908360ff160217905550905050600960006002548152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549060ff021916905550506000611fe6600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544361210a90919063ffffffff16565b9050600061203b600261202d600c5461201f863073ffffffffffffffffffffffffffffffffffffffff163161212690919063ffffffff16565b61215790919063ffffffff16565b61215790919063ffffffff16565b905061205282600c5461210a90919063ffffffff16565b600c81905550600080815480929190600190039190505550600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055508373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612100573d6000803e3d6000fd5b50505050505b5050565b600082821115151561211b57600080fd5b818303905092915050565b600081830290506000831480612146575081838281151561214357fe5b04145b151561215157600080fd5b92915050565b6000808211151561216757600080fd5b818381151561217257fe5b04905092915050565b6000818301905082811015151561219157600080fd5b92915050565b61219f610fdc565b600c8190555043600b8190555043600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555056fea165627a7a72305820a67ba4b227e6d0587079b84eb60e44480a486519c7747a33588f2b76782f3e8e0029