6060604052635a06aba86004556000600555341561001957fe5b5b5b33600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b33600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a0a6326be3680026000819055507326599cd43e65107b738a2aceb3bb47e3329ede7f600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507326599cd43e65107b738a2aceb3bb47e3329ede7f600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060005460016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b612267806102136000396000f30060606040523615610168576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461017a578063095ea7b31461021357806318160ddd1461026a57806323b872dd14610290578063313ce567146103065780633de39c111461032c5780633e0a322d1461035257806341c0e1b514610372578063420a83e7146103845780634783c35b146103d65780634b263adc14610428578063661884631461046757806370a08231146104be57806378e97925146105085780638da5cb5b1461052e57806395d89b4114610580578063a4eddc7714610619578063a9059cbb1461066c578063a9220ec1146106c3578063cedbbeee146106f7578063d3abfc0614610725578063d73dd6231461074b578063d7e84fbf146107a2578063db62ce4f146107f4578063dd62ed3e14610814578063e39465561461087d578063e757223014610914578063f2fde38b14610948575b6101785b6101753361097e565b5b565b005b341561018257fe5b61018a610b62565b60405180806020018281038252838181518152602001915080519060200190808383600083146101d9575b8051825260208311156101d9576020820191506020810190506020830392506101b5565b505050905090810190601f1680156102055780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561021b57fe5b610250600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610b9c565b604051808215151515815260200191505060405180910390f35b341561027257fe5b61027a610c8f565b6040518082815260200191505060405180910390f35b341561029857fe5b6102ec600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610c95565b604051808215151515815260200191505060405180910390f35b341561030e57fe5b610316611059565b6040518082815260200191505060405180910390f35b341561033457fe5b61033c61105e565b6040518082815260200191505060405180910390f35b341561035a57fe5b6103706004808035906020019091905050611067565b005b341561037a57fe5b6103826110d0565b005b341561038c57fe5b61039461116b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103de57fe5b6103e6611191565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561043057fe5b610465600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506111b7565b005b341561046f57fe5b6104a4600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611260565b604051808215151515815260200191505060405180910390f35b34156104c657fe5b6104f2600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506114f3565b6040518082815260200191505060405180910390f35b341561051057fe5b61051861153d565b6040518082815260200191505060405180910390f35b341561053657fe5b61053e611543565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561058857fe5b610590611569565b60405180806020018281038252838181518152602001915080519060200190808383600083146105df575b8051825260208311156105df576020820191506020810190506020830392506105bb565b505050905090810190601f16801561060b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561062157fe5b610656600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506115a3565b6040518082815260200191505060405180910390f35b341561067457fe5b6106a9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611846565b604051808215151515815260200191505060405180910390f35b34156106cb57fe5b6106e16004808035906020019091905050611a6e565b6040518082815260200191505060405180910390f35b610723600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061097e565b005b341561072d57fe5b610735611aca565b6040518082815260200191505060405180910390f35b341561075357fe5b610788600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611ad0565b604051808215151515815260200191505060405180910390f35b34156107aa57fe5b6107b2611ccd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156107fc57fe5b6108126004808035906020019091905050611cf3565b005b341561081c57fe5b610867600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d62565b6040518082815260200191505060405180910390f35b341561088557fe5b61091260048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050611dea565b005b341561091c57fe5b6109326004808035906020019091905050611fe0565b6040518082815260200191505060405180910390f35b341561095057fe5b61097c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612030565b005b6000600034141561098f5760006000fd5b640ba43b74003a111515156109a45760006000fd5b6109ad8261218f565b1515156109ba5760006000fd5b6012600a0a619c40026005541015156109d35760006000fd5b6004544210156109e35760006000fd5b6109ed82346115a3565b9050610a638160016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121cc90919063ffffffff16565b60016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b1a81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121e690919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b604060405190810160405280600781526020017f44617461766c740000000000000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a3600190505b92915050565b60005481565b6000600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610cd45760006000fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610d235760006000fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610daf5760006000fd5b610e0182600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121cc90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e9682600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121e690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f6882600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121cc90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b9392505050565b601281565b640ba43b740081565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110c45760006000fd5b806004819055505b5b50565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561112d5760006000fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b5b565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112145760006000fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc600a600a0a83029081150290604051809050600060405180830381858888f19350505050151561125a57fe5b5b5b5050565b60006000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831115611372576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611406565b61138583826121cc90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505b5092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b60045481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b604060405190810160405280600381526020017f445654000000000000000000000000000000000000000000000000000000000081525081565b600060006000600060006000600060006000600060006115ce8c6005546121e690919063ffffffff16565b99506012600a0a619c40028a11156116a7576115fd6005546012600a0a619c40026121cc90919063ffffffff16565b965061161c61160d600554611fe0565b8861220690919063ffffffff16565b9850611631878d6121cc90919063ffffffff16565b9550611648876005546121e690919063ffffffff16565b6005819055508c73ffffffffffffffffffffffffffffffffffffffff166108fc879081150290604051809050600060405180830381858888f19350505050151561168e57fe5b6103e86103e7880281151561169f57fe5b0497506117d0565b6116b08a611fe0565b6116bb600554611fe0565b141515611782576116cd600554611a6e565b94506116e4600554866121cc90919063ffffffff16565b935060055485038c14156117165761170f611700600554611fe0565b8d61220690919063ffffffff16565b985061177d565b611729848d6121cc90919063ffffffff16565b9250611748611739600554611fe0565b8561220690919063ffffffff16565b91506117656117568b611fe0565b8461220690919063ffffffff16565b905061177a81836121e690919063ffffffff16565b98505b6117a0565b61179d61178e8b611fe0565b8d61220690919063ffffffff16565b98505b6117b58c6005546121e690919063ffffffff16565b6005819055506103e86103e78d028115156117cc57fe5b0497505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc899081150290604051809050600060405180830381858888f19350505050151561183257fe5b889a505b5050505050505050505092915050565b6000600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156118855760006000fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156118d45760006000fd5b61192682600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121cc90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119bb82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121e690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b92915050565b60006012600a0a614e2002821015611a90576012600a0a614e20029050611ac5565b6012600a0a619c400282108015611aaf57506012600a0a614e20028210155b15611ac4576012600a0a619c40029050611ac5565b5b919050565b60055481565b6000611b6182600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121e690919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600190505b92915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d505760006000fd5b600a600a0a81026005819055505b5b50565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b92915050565b600060006000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e4d5760006000fd5b83518551141515611e5e5760006000fd5b600092505b8451831015611fd7578483815181101515611e7a57fe5b9060200190602002015191508383815181101515611e9457fe5b906020019060200201519050600a600a0a8102600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f64600a600a0a820260016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121cc90919063ffffffff16565b60016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8280600101935050611e63565b5b5b5050505050565b60006012600a0a614e2002821015611ffc57611d4c905061202b565b6012600a0a619c40028210801561201b57506012600a0a614e20028210155b1561202a57611d4c905061202b565b5b919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561208d5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156120ca5760006000fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405180905060405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b50565b6000600060008373ffffffffffffffffffffffffffffffffffffffff1614156121bb57600091506121c6565b823b90506000811191505b50919050565b60008282111515156121da57fe5b81830390505b92915050565b6000600082840190508381101515156121fb57fe5b8091505b5092915050565b6000600082840290506000841480612228575082848281151561222557fe5b04145b151561223057fe5b8091505b50929150505600a165627a7a723058206852f8dcb4889c97b200ead85e078943f297778ee6c8e98c24d44344230444d20029