0x60806040526040518061010001604052807316de59092dae5ccf4a1e6439d611fd0653f0bd0173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173d6ad7a6750a7593e092a9b218d66c0a814a3436e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017383f798e925bcd4017eb265844fddabb448f1707d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017373a052500105205d34daf004eab301916da8190f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173c2cb1040220768554cf699b0d863a3cd4324ce3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017326ea744e5b887e5205727f55dfbe8685e3b2195173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173e6354ed5bc4b393a5aad09f21c46e101e692d44773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017304bc0ab673d88ae9dbc9da2380cb6b79c4bca9ae73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250600090600862000250929190620003c5565b506040518060600160405280735d3a536e4d6dbd6114cc1ead35777bab948e364373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017339aa39c021dfbae8fac545936693ac917d5e756373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173f650c3d88d12db855b8bf7d11be6c55a4e07dcc973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525060019060036200033e92919062000454565b506040518060800160405280670de0b6b3a764000067ffffffffffffffff168152602001620f424067ffffffffffffffff168152602001620f424067ffffffffffffffff168152602001670de0b6b3a764000067ffffffffffffffff168152506002906004620003b0929190620004e3565b50348015620003be57600080fd5b50620005af565b82805482825590600052602060002090810192821562000441579160200282015b82811115620004405782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190620003e6565b5b50905062000450919062000541565b5090565b828054828255906000526020600020908101928215620004d0579160200282015b82811115620004cf5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000475565b5b509050620004df919062000541565b5090565b8280548282559060005260206000209081019282156200052e579160200282015b828111156200052d578251829067ffffffffffffffff1690559160200191906001019062000504565b5b5090506200053d919062000587565b5090565b6200058491905b808211156200058057600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000548565b5090565b90565b620005ac91905b80821115620005a85760008160009055506001016200058e565b5090565b90565b6118a880620005bf6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80638cd2ae73116100715780638cd2ae73146102bc5780639184f8ef1461031e578063a484e05c1461038c578063d4c13794146103ee578063d781c73e14610450578063f53e73b9146104b2576100a9565b8063081a0957146100ae57806324cbaeea14610118578063363999b614610182578063690cf5fb146101e857806386418ebb14610252575b600080fd5b6100da600480360360208110156100c457600080fd5b810190808035906020019092919050505061050a565b6040518082600860200280838360005b838110156101055780820151818401526020810190506100ea565b5050505090500191505060405180910390f35b6101446004803603602081101561012e57600080fd5b81019080803590602001909291905050506105c9565b6040518082600360200280838360005b8381101561016f578082015181840152602081019050610154565b5050505090500191505060405180910390f35b6101c46004803603602081101561019857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061067e565b60405180848152602001838152602001828152602001935050505060405180910390f35b610214600480360360208110156101fe57600080fd5b8101908080359060200190929190505050610b09565b6040518082600860200280838360005b8381101561023f578082015181840152602081019050610224565b5050505090500191505060405180910390f35b61027e6004803603602081101561026857600080fd5b8101908080359060200190929190505050610bc8565b6040518082600360200280838360005b838110156102a957808201518184015260208101905061028e565b5050505090500191505060405180910390f35b610308600480360360408110156102d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c7d565b6040518082815260200191505060405180910390f35b61034a6004803603602081101561033457600080fd5b8101908080359060200190929190505050610dac565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103d8600480360360408110156103a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610de8565b6040518082815260200191505060405180910390f35b61043a6004803603604081101561040457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e27565b6040518082815260200191505060405180910390f35b61049c6004803603604081101561046657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f56565b6040518082815260200191505060405180910390f35b6104f4600480360360208110156104c857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f95565b6040518082815260200191505060405180910390f35b61051261180d565b61051a61180d565b60008090505b60088110156105bf5761059d6000828154811061053957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661059860026004858161057357fe5b068154811061057e57fe5b9060005260206000200154876114e590919063ffffffff16565b610c7d565b8282600881106105a957fe5b6020020181815250508080600101915050610520565b5080915050919050565b6105d1611830565b6105d9611830565b60008090505b600381101561067457610652600182815481106105f857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661064d6002848154811061063357fe5b9060005260206000200154876114e590919063ffffffff16565b610f56565b82826003811061065e57fe5b60200201818152505080806001019150506105df565b5080915050919050565b60008060008084905060008173ffffffffffffffffffffffffffffffffffffffff16633b1d21a26040518163ffffffff1660e01b815260040160206040518083038186803b1580156106cf57600080fd5b505afa1580156106e3573d6000803e3d6000fd5b505050506040513d60208110156106f957600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff166347bd37186040518163ffffffff1660e01b815260040160206040518083038186803b15801561075457600080fd5b505afa158015610768573d6000803e3d6000fd5b505050506040513d602081101561077e57600080fd5b8101908080519060200190929190505050905060008373ffffffffffffffffffffffffffffffffffffffff16638f840ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107d957600080fd5b505afa1580156107ed573d6000803e3d6000fd5b505050506040513d602081101561080357600080fd5b81019080805190602001909291905050509050600043905060008573ffffffffffffffffffffffffffffffffffffffff16636c540baf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561086357600080fd5b505afa158015610877573d6000803e3d6000fd5b505050506040513d602081101561088d57600080fd5b8101908080519060200190929190505050905060008673ffffffffffffffffffffffffffffffffffffffff1663f3fdb15a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156108e857600080fd5b505afa1580156108fc573d6000803e3d6000fd5b505050506040513d602081101561091257600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff166315f240538787876040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b15801561098357600080fd5b505afa158015610997573d6000803e3d6000fd5b505050506040513d60208110156109ad57600080fd5b8101908080519060200190929190505050905060006109e76109d8848661156b90919063ffffffff16565b836114e590919063ffffffff16565b90506000610a18670de0b6b3a7640000610a0a89856114e590919063ffffffff16565b6115b590919063ffffffff16565b9050610a2d81886115ff90919063ffffffff16565b9650610aee86610ae0670de0b6b3a7640000610ad2858e73ffffffffffffffffffffffffffffffffffffffff1663173b99046040518163ffffffff1660e01b815260040160206040518083038186803b158015610a8957600080fd5b505afa158015610a9d573d6000803e3d6000fd5b505050506040513d6020811015610ab357600080fd5b81019080805190602001909291905050506114e590919063ffffffff16565b6115b590919063ffffffff16565b6115ff90919063ffffffff16565b95505050505050828282965096509650505050509193909250565b610b1161180d565b610b1961180d565b60008090505b6008811015610bbe57610b9c60008281548110610b3857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610b97600260048581610b7257fe5b0681548110610b7d57fe5b9060005260206000200154876114e590919063ffffffff16565b610e27565b828260088110610ba857fe5b6020020181815250508080600101915050610b1f565b5080915050919050565b610bd0611830565b610bd8611830565b60008090505b6003811015610c7357610c5160018281548110610bf757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610c4c60028481548110610c3257fe5b9060005260206000200154876114e590919063ffffffff16565b610de8565b828260038110610c5d57fe5b6020020181815250508080600101915050610bde565b5080915050919050565b6000610da48373ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cc857600080fd5b505afa158015610cdc573d6000803e3d6000fd5b505050506040513d6020811015610cf257600080fd5b8101908080519060200190929190505050610d968573ffffffffffffffffffffffffffffffffffffffff16637137ef996040518163ffffffff1660e01b815260040160206040518083038186803b158015610d4c57600080fd5b505afa158015610d60573d6000803e3d6000fd5b505050506040513d6020811015610d7657600080fd5b8101908080519060200190929190505050856114e590919063ffffffff16565b6115b590919063ffffffff16565b905092915050565b60018181548110610db957fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610e1f610df684610f95565b610e11670de0b6b3a7640000856114e590919063ffffffff16565b6115b590919063ffffffff16565b905092915050565b6000610f4e8373ffffffffffffffffffffffffffffffffffffffff16637137ef996040518163ffffffff1660e01b815260040160206040518083038186803b158015610e7257600080fd5b505afa158015610e86573d6000803e3d6000fd5b505050506040513d6020811015610e9c57600080fd5b8101908080519060200190929190505050610f408573ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ef657600080fd5b505afa158015610f0a573d6000803e3d6000fd5b505050506040513d6020811015610f2057600080fd5b8101908080519060200190929190505050856114e590919063ffffffff16565b6115b590919063ffffffff16565b905092915050565b6000610f8d670de0b6b3a7640000610f7f610f7086610f95565b856114e590919063ffffffff16565b6115b590919063ffffffff16565b905092915050565b60008082905060008173ffffffffffffffffffffffffffffffffffffffff16633b1d21a26040518163ffffffff1660e01b815260040160206040518083038186803b158015610fe357600080fd5b505afa158015610ff7573d6000803e3d6000fd5b505050506040513d602081101561100d57600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff166347bd37186040518163ffffffff1660e01b815260040160206040518083038186803b15801561106857600080fd5b505afa15801561107c573d6000803e3d6000fd5b505050506040513d602081101561109257600080fd5b8101908080519060200190929190505050905060008373ffffffffffffffffffffffffffffffffffffffff16638f840ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110ed57600080fd5b505afa158015611101573d6000803e3d6000fd5b505050506040513d602081101561111757600080fd5b81019080805190602001909291905050509050600043905060008573ffffffffffffffffffffffffffffffffffffffff16636c540baf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561117757600080fd5b505afa15801561118b573d6000803e3d6000fd5b505050506040513d60208110156111a157600080fd5b8101908080519060200190929190505050905060008673ffffffffffffffffffffffffffffffffffffffff1663f3fdb15a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111fc57600080fd5b505afa158015611210573d6000803e3d6000fd5b505050506040513d602081101561122657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff166315f240538787876040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b15801561129757600080fd5b505afa1580156112ab573d6000803e3d6000fd5b505050506040513d60208110156112c157600080fd5b8101908080519060200190929190505050905060006112fb6112ec848661156b90919063ffffffff16565b836114e590919063ffffffff16565b9050600061132c670de0b6b3a764000061131e89856114e590919063ffffffff16565b6115b590919063ffffffff16565b905061134181886115ff90919063ffffffff16565b9650611402866113f4670de0b6b3a76400006113e6858e73ffffffffffffffffffffffffffffffffffffffff1663173b99046040518163ffffffff1660e01b815260040160206040518083038186803b15801561139d57600080fd5b505afa1580156113b1573d6000803e3d6000fd5b505050506040513d60208110156113c757600080fd5b81019080805190602001909291905050506114e590919063ffffffff16565b6115b590919063ffffffff16565b6115ff90919063ffffffff16565b955050505050506114da8473ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561145257600080fd5b505afa158015611466573d6000803e3d6000fd5b505050506040513d602081101561147c57600080fd5b81019080805190602001909291905050506114cc670de0b6b3a76400006114be856114b0888a6115ff90919063ffffffff16565b61156b90919063ffffffff16565b6114e590919063ffffffff16565b6115b590919063ffffffff16565b945050505050919050565b6000808314156114f85760009050611565565b600082840290508284828161150957fe5b0414611560576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806118536021913960400191505060405180910390fd5b809150505b92915050565b60006115ad83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611687565b905092915050565b60006115f783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611747565b905092915050565b60008082840190508381101561167d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000838311158290611734576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156116f95780820151818401526020810190506116de565b50505050905090810190601f1680156117265780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080831182906117f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156117b857808201518184015260208101905061179d565b50505050905090810190601f1680156117e55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816117ff57fe5b049050809150509392505050565b604051806101000160405280600890602082028038833980820191505090505090565b604051806060016040528060039060208202803883398082019150509050509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a72315820a9963892641c2edc0cabf9a5b200e1f36594b97b1e9fafb6f9fcb7a2f008d80764736f6c63430005110032