6080604052734c3cc1d2229cbd17d26ec984f2e1b9bd336cbf69600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b506040518060400160405280600881526020017f537061726b6c65210000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5350524b0000000000000000000000000000000000000000000000000000000081525060128260009080519060200190620000ed9291906200012b565b508160019080519060200190620001069291906200012b565b5080600260006101000a81548160ff021916908360ff160217905550505050620001da565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200016e57805160ff19168380011785556200019f565b828001600101855582156200019f579182015b828111156200019e57825182559160200191906001019062000181565b5b509050620001ae9190620001b2565b5090565b620001d791905b80821115620001d3576000816000905550600101620001b9565b5090565b90565b6120cf80620001ea6000396000f3fe6080604052600436106101095760003560e01c806370a0823111610095578063a9059cbb11610064578063a9059cbb1461058d578063ab8f893914610600578063b85a8b2014610622578063dd62ed3e1461064d578063e1ee4e4e146106d257610109565b806370a08231146103fa5780638d3c971d1461045f57806395d89b411461048a578063a457c2d71461051a57610109565b8063313ce567116100dc578063313ce567146102d557806332cb6b0c1461030657806339509351146103315780635359def3146103a457806368f58b03146103cf57610109565b806306fdde0314610114578063095ea7b3146101a457806318160ddd1461021757806323b872dd14610242575b610111610725565b50005b34801561012057600080fd5b50610129610ace565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561016957808201518184015260208101905061014e565b50505050905090810190601f1680156101965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101b057600080fd5b506101fd600480360360408110156101c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b70565b604051808215151515815260200191505060405180910390f35b34801561022357600080fd5b5061022c610c9b565b6040518082815260200191505060405180910390f35b34801561024e57600080fd5b506102bb6004803603606081101561026557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ca5565b604051808215151515815260200191505060405180910390f35b3480156102e157600080fd5b506102ea6110f5565b604051808260ff1660ff16815260200191505060405180910390f35b34801561031257600080fd5b5061031b61110c565b6040518082815260200191505060405180910390f35b34801561033d57600080fd5b5061038a6004803603604081101561035457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061111c565b604051808215151515815260200191505060405180910390f35b3480156103b057600080fd5b506103b9611351565b6040518082815260200191505060405180910390f35b3480156103db57600080fd5b506103e461135b565b6040518082815260200191505060405180910390f35b34801561040657600080fd5b506104496004803603602081101561041d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611360565b6040518082815260200191505060405180910390f35b34801561046b57600080fd5b506104746114ad565b6040518082815260200191505060405180910390f35b34801561049657600080fd5b5061049f6114b7565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104df5780820151818401526020810190506104c4565b50505050905090810190601f16801561050c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052657600080fd5b506105736004803603604081101561053d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611559565b604051808215151515815260200191505060405180910390f35b34801561059957600080fd5b506105e6600480360360408110156105b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061178e565b604051808215151515815260200191505060405180910390f35b610608610725565b604051808215151515815260200191505060405180910390f35b34801561062e57600080fd5b50610637611a44565b6040518082815260200191505060405180910390f35b34801561065957600080fd5b506106bc6004803603604081101561067057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a49565b6040518082815260200191505060405180910390f35b3480156106de57600080fd5b5061070b600480360360208110156106f557600080fd5b8101908080359060200190929190505050611ad0565b604051808215151515815260200191505060405180910390f35b60008061075b655af3107a400061074d670de0b6b3a764000034611d5190919063ffffffff16565b611dd790919063ffffffff16565b90506b014adf4b7320334b9000000061077f82600754611e2190919063ffffffff16565b111561078a57600080fd5b60006107b360646107a5600285611d5190919063ffffffff16565b611dd790919063ffffffff16565b905060006107de60646107d0600186611d5190919063ffffffff16565b611dd790919063ffffffff16565b90506000610807826107f98587611ea990919063ffffffff16565b611ea990919063ffffffff16565b90506108248161081633611360565b611e2190919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506108a482610896600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611360565b611e2190919063ffffffff16565b60036000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061091e84600754611e2190919063ffffffff16565b600781905550600654600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060065460086000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506109e783600654611e2190919063ffffffff16565b6006819055507f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968853382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a17fec47f18d3fc9f028ccb9747e39ff0325aba5fd61a28a89d44291f021132aa3be3384604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1600194505050505090565b606060008054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b665780601f10610b3b57610100808354040283529160200191610b66565b820191906000526020600020905b815481529060010190602001808311610b4957829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bab57600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600754905090565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610d3057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d6a57600080fd5b6000610d936064610d85600286611d5190919063ffffffff16565b611dd790919063ffffffff16565b9050610dc281610db485610da689611360565b611ea990919063ffffffff16565b611ea990919063ffffffff16565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e2083610e1286611360565b611e2190919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600654600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600654600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f0481600654611e2190919063ffffffff16565b600681905550610f9983600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea990919063ffffffff16565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a37fec47f18d3fc9f028ccb9747e39ff0325aba5fd61a28a89d44291f021132aa3be8582604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a160019150509392505050565b6000600260009054906101000a900460ff16905090565b6b014adf4b7320334b9000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561115757600080fd5b6111e682600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e2190919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600654905090565b600281565b600080600754141561137557600090506114a8565b60006113cb600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600654611ea990919063ffffffff16565b905060006113e6600654600754611ea990919063ffffffff16565b9050600061144e8261144085600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5190919063ffffffff16565b611dd790919063ffffffff16565b90506114a281600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e2190919063ffffffff16565b93505050505b919050565b655af3107a400081565b606060018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561154f5780601f106115245761010080835404028352916020019161154f565b820191906000526020600020905b81548152906001019060200180831161153257829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561159457600080fd5b61162382600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea990919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117c957600080fd5b60006117f260646117e4600286611d5190919063ffffffff16565b611dd790919063ffffffff16565b9050611821816118138561180533611360565b611ea990919063ffffffff16565b611ea990919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061187f8361187186611360565b611e2190919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600654600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600654600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061196381600654611e2190919063ffffffff16565b6006819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a37fec47f18d3fc9f028ccb9747e39ff0325aba5fd61a28a89d44291f021132aa3be3382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1600191505092915050565b606481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008082118015611ae9575081611ae633611360565b10155b611af257600080fd5b6000611b27670de0b6b3a7640000611b19655af3107a400086611d5190919063ffffffff16565b611dd790919063ffffffff16565b90506000611b526064611b44600385611d5190919063ffffffff16565b611dd790919063ffffffff16565b90506000611b698284611ea990919063ffffffff16565b9050611b8685611b7833611360565b611ea990919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600654600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c2485600754611ea990919063ffffffff16565b600781905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611c92573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611cd9573d6000803e3d6000fd5b507f5e5e995ce3133561afceaa51a9a154d5db228cd7525d34df5185582c18d3df093386604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a160019350505050919050565b600080831415611d645760009050611dd1565b6000828402905082848281611d7557fe5b0414611dcc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061207a6021913960400191505060405180910390fd5b809150505b92915050565b6000611e1983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ef3565b905092915050565b600080828401905083811015611e9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000611eeb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fb9565b905092915050565b60008083118290611f9f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611f64578082015181840152602081019050611f49565b50505050905090810190601f168015611f915780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611fab57fe5b049050809150509392505050565b6000838311158290612066576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561202b578082015181840152602081019050612010565b50505050905090810190601f1680156120585780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838503905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a7231582038d2c3168981150eb481da90bc6cf9557a2ff924387d0b1da6c07be42741a9eb64736f6c634300050b0032