60606040526127106005556000600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610140604051908101604052806301e1338063ffffffff1681526020016303c2670063ffffffff1681526020016305a39a8063ffffffff168152602001630784ce0063ffffffff168152602001630966018063ffffffff168152602001630b47350063ffffffff168152602001630d28688063ffffffff168152602001630f099c0063ffffffff1681526020016310eacf8063ffffffff1681526020016312cc030063ffffffff16815250600c90600a62000109929190620009f5565b5061014060405190810160405280737a59b7a5d6b00745effe411090ff424819b7055a73ffffffffffffffffffffffffffffffffffffffff16815260200172b9991e08d8e20b6efd12d259321b7ab88a700a73ffffffffffffffffffffffffffffffffffffffff168152602001734826f541eba27b6db07c14a7c2b1a4ea404eca3773ffffffffffffffffffffffffffffffffffffffff16815260200173f2baf639dc3f7f05912b8760049094adebc8524473ffffffffffffffffffffffffffffffffffffffff16815260200173b64ddc7df18737863eeb613f692595523a0e8d4b73ffffffffffffffffffffffffffffffffffffffff1681526020017346c999a445d6ae5d800ce76e90ce06935188b7ab73ffffffffffffffffffffffffffffffffffffffff1681526020017346c999a445d6ae5d800ce76e90ce06935188b7ab73ffffffffffffffffffffffffffffffffffffffff16815260200173428e8c098453fa9968b712ac59806f91ae20280773ffffffffffffffffffffffffffffffffffffffff1681526020017317a58a997a0a5ea218e82c7ae6d560e04f4defa073ffffffffffffffffffffffffffffffffffffffff1681526020017303ff44be1efb207fea4a30fd546b0741a476a0e473ffffffffffffffffffffffffffffffffffffffff16815250600d90600a6200030692919062000a4f565b5061014060405190810160405280600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff16815250600e90600a6200038892919062000ade565b5034156200039557600080fd5b6040805190810160405280601081526020017f444f4d5553434f494e5320546f6b656e000000000000000000000000000000008152506040805190810160405280600381526020017f444f43000000000000000000000000000000000000000000000000000000000081525060128060ff16600a0a633b9aca000273347364f2bc343f6c676620d09eb9c37431dbee60612710600d805480602002602001604051908101604052809291908181526020018280548015620004ac57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831162000461575b5050505050600e805480602002602001604051908101604052809291908181526020018280548015620004ff57602002820191906000526020600020905b815481526020019060010190808311620004ea575b5050505050600088888888888888886000806000808b600090805190602001906200052c92919062000b35565b508a600190805190602001906200054592919062000b35565b5089600260006101000a81548160ff021916908360ff16021790555088600381905550620005af60055462000592898c620009596401000000000262001de1179091906401000000009004565b6200098d6401000000000262001e12179091906401000000009004565b600481905550600454600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620006206004548a620009b36401000000000262001ba1179091906401000000009004565b93508773ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040518082815260200191505060405180910390a360009250600091505b85518210156200080957620006c285838151811015156200069a57fe5b9060200190602002015184620009d06401000000000262001bbd179091906401000000009004565b92506127108311151515620006d657600080fd5b62000735600554620007188785815181101515620006f057fe5b9060200190602002015187620009596401000000000262001de1179091906401000000009004565b6200098d6401000000000262001e12179091906401000000009004565b9050806006600088858151811015156200074b57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508582815181101515620007a257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a381806001019250506200067d565b50505050505050505050505033600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b82518110156200094a57600c81815481101515620008b657fe5b906000526020600020900154620008e0620009ed64010000000002620015fd176401000000009004565b01600b60008584815181101515620008f457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080806001019150506200089c565b50505050505050505062000c2a565b6000818302905060008314806200097b57508183828115156200097857fe5b04145b15156200098757600080fd5b92915050565b600080821115156200099e57600080fd5b8183811515620009aa57fe5b04905092915050565b6000828211151515620009c557600080fd5b818303905092915050565b60008183019050828110151515620009e757600080fd5b92915050565b600042905090565b82805482825590600052602060002090810192821562000a3c579160200282015b8281111562000a3b578251829063ffffffff1690559160200191906001019062000a16565b5b50905062000a4b919062000bbc565b5090565b82805482825590600052602060002090810192821562000acb579160200282015b8281111562000aca5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000a70565b5b50905062000ada919062000be4565b5090565b82805482825590600052602060002090810192821562000b22579160200282015b8281111562000b21578251829060ff1690559160200191906001019062000aff565b5b50905062000b31919062000bbc565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000b7857805160ff191683800117855562000ba9565b8280016001018555821562000ba9579182015b8281111562000ba857825182559160200191906001019062000b8b565b5b50905062000bb8919062000bbc565b5090565b62000be191905b8082111562000bdd57600081600090555060010162000bc3565b5090565b90565b62000c2791905b8082111562000c2357600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000beb565b5090565b90565b611e628062000c3a6000396000f30060606040526004361061018b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610190578063095ea7b31461021e57806318160ddd1461027857806318821400146102a15780631b6885651461032f57806323452b9c1461035857806323b872dd146103855780632a905318146103fe5780632f54bf6e1461048c578063313ce567146104dd5780633c54caa51461050c57806342966c681461053957806353105fbc1461055c5780635b7f415c1461058557806360a1b056146105b457806370a08231146105eb57806374c950fb146106385780638bc04eb7146106615780638be4886c1461068a5780638da5cb5b146106df57806395d89b4114610734578063a9059cbb146107c2578063b96743271461081c578063bb1d660c1461087f578063c0b6f561146108b6578063c4f99aa514610907578063d153b60c1461095c578063d18e81b3146109b1578063dd62ed3e146109da578063e1f82d6014610a46578063e71a781114610a6f575b600080fd5b341561019b57600080fd5b6101a3610a9c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e35780820151818401526020810190506101c8565b50505050905090810190601f1680156102105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561022957600080fd5b61025e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610b44565b604051808215151515815260200191505060405180910390f35b341561028357600080fd5b61028b610c36565b6040518082815260200191505060405180910390f35b34156102ac57600080fd5b6102b4610c40565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f45780820151818401526020810190506102d9565b50505050905090810190601f1680156103215780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561033a57600080fd5b610342610c79565b6040518082815260200191505060405180910390f35b341561036357600080fd5b61036b610c7f565b604051808215151515815260200191505060405180910390f35b341561039057600080fd5b6103e4600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610d6b565b604051808215151515815260200191505060405180910390f35b341561040957600080fd5b610411610d96565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610451578082015181840152602081019050610436565b50505050905090810190601f16801561047e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561049757600080fd5b6104c3600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610dcf565b604051808215151515815260200191505060405180910390f35b34156104e857600080fd5b6104f0610e29565b604051808260ff1660ff16815260200191505060405180910390f35b341561051757600080fd5b61051f610e40565b604051808215151515815260200191505060405180910390f35b341561054457600080fd5b61055a60048080359060200190919050506110af565b005b341561056757600080fd5b61056f611212565b6040518082815260200191505060405180910390f35b341561059057600080fd5b610598611218565b604051808260ff1660ff16815260200191505060405180910390f35b34156105bf57600080fd5b6105d5600480803590602001909190505061121d565b6040518082815260200191505060405180910390f35b34156105f657600080fd5b610622600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611241565b6040518082815260200191505060405180910390f35b341561064357600080fd5b61064b61128a565b6040518082815260200191505060405180910390f35b341561066c57600080fd5b61067461129b565b6040518082815260200191505060405180910390f35b341561069557600080fd5b61069d6112a6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156106ea57600080fd5b6106f26112be565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561073f57600080fd5b6107476112e4565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561078757808201518184015260208101905061076c565b50505050905090810190601f1680156107b45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107cd57600080fd5b610802600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061138c565b604051808215151515815260200191505060405180910390f35b341561082757600080fd5b61083d60048080359060200190919050506113b5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561088a57600080fd5b6108a060048080359060200190919050506113f4565b6040518082815260200191505060405180910390f35b34156108c157600080fd5b6108ed600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611418565b604051808215151515815260200191505060405180910390f35b341561091257600080fd5b61091a6115b1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561096757600080fd5b61096f6115d7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109bc57600080fd5b6109c46115fd565b6040518082815260200191505060405180910390f35b34156109e557600080fd5b610a30600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611605565b6040518082815260200191505060405180910390f35b3415610a5157600080fd5b610a5961168c565b6040518082815260200191505060405180910390f35b3415610a7a57600080fd5b610a82611692565b604051808215151515815260200191505060405180910390f35b610aa4611dcd565b60008054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b3a5780601f10610b0f57610100808354040283529160200191610b3a565b820191906000526020600020905b815481529060010190602001808311610b1d57829003601f168201915b5050505050905090565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600354905090565b6040805190810160405280601081526020017f444f4d5553434f494e5320546f6b656e0000000000000000000000000000000081525081565b61271081565b6000610c8a33610dcf565b1515610c9557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610cf55760019050610d68565b6000600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f670699162ea7ba4de638b5a57c2148aed9ee8bd69740a5e6a7db727e3886c88b60405160405180910390a1600190505b90565b6000610d7733846117df565b1515610d8257600080fd5b610d8d848484611886565b90509392505050565b6040805190810160405280600381526020017f444f43000000000000000000000000000000000000000000000000000000000081525081565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000600260009054906101000a900460ff16905090565b6000806000610e4e33610dcf565b1515610e5957600080fd5b309150610e6582611241565b90506000811415610e7957600092506110aa565b610ecb81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ba190919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f828160066000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bbd90919063ffffffff16565b60066000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a37fbce3cc672456937708767d1642a17cacb1962753bd5cff46c8dbd377906a6b4b816040518082815260200191505060405180910390a1600192505b505090565b600080821115156110bf57600080fd5b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561110d57600080fd5b33905061116282600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ba190919063ffffffff16565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111ba82600354611ba190919063ffffffff16565b6003819055508073ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a25050565b60055481565b601281565b600c8181548110151561122c57fe5b90600052602060002090016000915090505481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601260ff16600a0a633b9aca000281565b601260ff16600a0a81565b73347364f2bc343f6c676620d09eb9c37431dbee6081565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112ec611dcd565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113825780601f1061135757610100808354040283529160200191611382565b820191906000526020600020905b81548152906001019060200180831161136557829003601f168201915b5050505050905090565b600061139833846117df565b15156113a357600080fd5b6113ad8383611bd9565b905092915050565b600d818154811015156113c457fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e8181548110151561140357fe5b90600052602060002090016000915090505481565b600061142333610dcf565b151561142e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561146a57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156114a557600080fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561150257600080fd5b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f20f5afdf40bf7b43c89031a5d4369a30b159e512d164aa46124bcb706b4a1caf60405160405180910390a260019050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600042905090565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60045481565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116f057600080fd5b33600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f624adc4c72536289dd9d5439ccdeccd8923cb9af95fb626b21935447c77b840760405160405180910390a26001905090565b600080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561181e57600080fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415611872576001915061187f565b8061187b6115fd565b1191505b5092915050565b6000806000600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205491508382101561191b5760009250611b98565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508381101561196e5760009250611b98565b6119818483611ba190919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600084118015611a3d57508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b15611b2e57611a558482611ba190919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611aea84600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bbd90919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a3600192505b50509392505050565b6000828211151515611bb257600080fd5b818303905092915050565b60008183019050828110151515611bd357600080fd5b92915050565b600080600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611c2f5760009150611dc6565b600083118015611c6b57508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611d5c57611c838382611ba190919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d1883600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bbd90919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505b5092915050565b602060405190810160405280600081525090565b600081830290506000831480611e015750818382811515611dfe57fe5b04145b1515611e0c57600080fd5b92915050565b60008082111515611e2257600080fd5b8183811515611e2d57fe5b049050929150505600a165627a7a723058205cb0e3a844500a4248a7eb1f1320e711207519af0a36efc08435fa6de911d63e0029