//
0x60806040526005805460ff1916905534801561001a57600080fd5b506040516116d93803806116d98339818101604052602081101561003d57600080fd5b5051600280546001600160a01b0319163317908190556001600160a01b039081166000908152600160208190526040909120805460ff19169091179055600580549190921661010002610100600160a81b0319909116179055611634806100a56000396000f3fe608060405234801561001057600080fd5b50600436106101075760003560e01c806309a8acb01461010c578063127ffda01461013a57806316c38b3c1461016657806317fcb39b1461018557806324759ef7146101a957806324e48a2d146101cf578063275d86ed146102f25780632bdb70e31461032c5780635aa6e675146103525780635afc4c0b1461035a5780635c975abb146103af5780635e9a523c146103b757806366331bba146103ef57806378b4e96d146103f75780637e8af985146104255780638edbf43614610451578063cfed246b1461049e578063d38bfff4146104c4578063e857b432146104ea578063f799051e14610510578063fc57d4df14610633575b600080fd5b6101386004803603604081101561012257600080fd5b506001600160a01b038135169060200135610659565b005b6101386004803603604081101561015057600080fd5b506001600160a01b038135169060200135610886565b6101386004803603602081101561017c57600080fd5b50351515610950565b61018d6109b0565b604080516001600160a01b039092168252519081900360200190f35b610138600480360360208110156101bf57600080fd5b50356001600160a01b03166109c4565b610138600480360360408110156101e557600080fd5b810190602081018135600160201b8111156101ff57600080fd5b82018360208201111561021157600080fd5b803590602001918460208302840111600160201b8311171561023257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561028157600080fd5b82018360208201111561029357600080fd5b803590602001918460208302840111600160201b831117156102b457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610a69945050505050565b6103186004803603602081101561030857600080fd5b50356001600160a01b0316610bd6565b604080519115158252519081900360200190f35b6101386004803603602081101561034257600080fd5b50356001600160a01b0316610beb565b61018d610c94565b6103806004803603602081101561037057600080fd5b50356001600160a01b0316610ca3565b604080519485526020850193909352838301919091526001600160a01b03166060830152519081900360800190f35b610318610cd5565b6103dd600480360360208110156103cd57600080fd5b50356001600160a01b0316610cde565b60408051918252519081900360200190f35b610318610cfd565b6101386004803603604081101561040d57600080fd5b506001600160a01b0381351690602001351515610d02565b6103186004803603604081101561043b57600080fd5b506001600160a01b038135169060200135610d7a565b6104776004803603602081101561046757600080fd5b50356001600160a01b0316610e12565b6040805193845260208401929092526001600160a01b031682820152519081900360600190f35b610477600480360360208110156104b457600080fd5b50356001600160a01b0316610e40565b610138600480360360208110156104da57600080fd5b50356001600160a01b0316610e6a565b6103186004803603602081101561050057600080fd5b50356001600160a01b0316610f58565b6101386004803603604081101561052657600080fd5b810190602081018135600160201b81111561054057600080fd5b82018360208201111561055257600080fd5b803590602001918460208302840111600160201b8311171561057357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156105c257600080fd5b8201836020820111156105d457600080fd5b803590602001918460208302840111600160201b831117156105f557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610f6d945050505050565b6103dd6004803603602081101561064957600080fd5b50356001600160a01b0316611099565b3360009081526001602052604090205460ff166106ab576040805162461bcd60e51b815260206004820152601560248201526000805160206115e0833981519152604482015290519081900360640190fd5b60055460ff16156106ec576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b6001600160a01b038216600090815260208190526040902054816107108482610d7a565b156107b9576040805160608082018352838252426020808401918252338486019081526001600160a01b038a811660008181528085528890209651808855945160018801559151600290960180546001600160a01b0319169690911695909517909455845193845283018690528284018590529082015290517fdd71a1d19fcba687442a1d5c58578f1e409af71a79d10fd95a4d66efd8fa9ae7916080908290030190a1610880565b604080516080808201835242825260208083018681528385018681523360608087018281526001600160a01b038d811660008181526003808a528c82209b518c5597516001808d0191909155965160028c015592519990960180546001600160a01b03191699909116989098179097556004855295879020805460ff191690921790915585519081529182015280840186905291820184905291517f31c928b2bfe885b951a40367e1c4536474e0d21de2cd0df492d64de9084c1c95929181900390910190a15b50505050565b3360009081526001602052604090205460ff166108d8576040805162461bcd60e51b815260206004820152601560248201526000805160206115e0833981519152604482015290519081900360640190fd5b6000826001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561091357600080fd5b505afa158015610927573d6000803e3d6000fd5b505050506040513d602081101561093d57600080fd5b5051905061094b8183610659565b505050565b6002546001600160a01b0316331461099d576040805162461bcd60e51b81526020600482015260146024820152600080516020611556833981519152604482015290519081900360640190fd5b6005805460ff1916911515919091179055565b60055461010090046001600160a01b031681565b6002546001600160a01b03163314610a11576040805162461bcd60e51b81526020600482015260146024820152600080516020611556833981519152604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff19169055815192835290517fabf1d094d9e9c9351d9c0e02bfd4894eb625b9f845a0a8fd5e747565dae2ba0f9281900390910190a150565b3360009081526001602052604090205460ff16610abb576040805162461bcd60e51b815260206004820152601560248201526000805160206115e0833981519152604482015290519081900360640190fd5b60055460ff1615610afc576040805162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015290519081900360640190fd5b6000825111610b3c5760405162461bcd60e51b81526004018080602001828103825260248152602001806115bc6024913960400191505060405180910390fd5b8051825114610b92576040805162461bcd60e51b815260206004820152601f60248201527f41737365747320616e642070726963657320617265206e6f74206d6174636800604482015290519081900360640190fd5b60005b825181101561094b57610bce838281518110610bad57fe5b6020026020010151838381518110610bc157fe5b6020026020010151610659565b600101610b95565b60046020526000908152604090205460ff1681565b6002546001600160a01b03163314610c38576040805162461bcd60e51b81526020600482015260146024820152600080516020611556833981519152604482015290519081900360640190fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916909217909155815192835290517fd5d03defe9897c2d1107395e3d398b0a1ba742edb0c72d5cb872d78b86ad94369281900390910190a150565b6002546001600160a01b031681565b60036020819052600091825260409091208054600182015460028301549290930154909291906001600160a01b031684565b60055460ff1681565b6001600160a01b0381166000908152602081905260409020545b919050565b600181565b6002546001600160a01b03163314610d4f576040805162461bcd60e51b81526020600482015260146024820152600080516020611556833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6001600160a01b038216600090815260208190526040812054610d9f57506001610e0c565b6001600160a01b038316600090815260208190526040812054610dc990600263ffffffff61131116565b6001600160a01b03851660009081526020819052604081205491925090610df790600263ffffffff61135716565b90508184118015610e0757508084105b925050505b92915050565b6001600160a01b03908116600090815260208190526040902080546001820154600290920154909391921690565b6000602081905290815260409020805460018201546002909201549091906001600160a01b031683565b6002546001600160a01b03163314610eb7576040805162461bcd60e51b81526020600482015260146024820152600080516020611556833981519152604482015290519081900360640190fd5b6001600160a01b038116610efc5760405162461bcd60e51b81526004018080602001828103825260258152602001806115766025913960400191505060405180910390fd5b6002546040516001600160a01b038084169216907f5f56bee8cffbe9a78652a74a60705edede02af10b0bbb888ca44b79a0d42ce8090600090a3600280546001600160a01b0319166001600160a01b0392909216919091179055565b60016020526000908152604090205460ff1681565b3360009081526001602052604090205460ff16610fbf576040805162461bcd60e51b815260206004820152601560248201526000805160206115e0833981519152604482015290519081900360640190fd5b6000825111610fff5760405162461bcd60e51b81526004018080602001828103825260248152602001806115bc6024913960400191505060405180910390fd5b8051825114611055576040805162461bcd60e51b815260206004820152601f60248201527f41737365747320616e642070726963657320617265206e6f74206d6174636800604482015290519081900360640190fd5b60005b825181101561094b5761109183828151811061107057fe5b602002602001015183838151811061108457fe5b60200260200101516113b0565b600101611058565b6000816001600160a01b0316639af4ee7e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110d457600080fd5b505afa1580156110e8573d6000803e3d6000fd5b505050506040513d60208110156110fe57600080fd5b5051156111145750670de0b6b3a7640000610cf8565b6000826001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561114f57600080fd5b505afa158015611163573d6000803e3d6000fd5b505050506040513d602081101561117957600080fd5b50516040805163313ce56760e01b815290519192506000916001600160a01b0384169163313ce567916004808301926020929190829003018186803b1580156111c157600080fd5b505afa1580156111d5573d6000803e3d6000fd5b505050506040513d60208110156111eb57600080fd5b50516005546001600160a01b036101009091048116600090815260208181526040808320548151636f307dc360e01b8152915160ff909616965094929384938493918b1692636f307dc3926004808301939192829003018186803b15801561125257600080fd5b505afa158015611266573d6000803e3d6000fd5b505050506040513d602081101561127c57600080fd5b50516001600160a01b0316815260208101919091526040016000205490508015806112a5575081155b156112b7576000945050505050610cf8565b60006113046112d084600a87900a63ffffffff61135716565b6112f8670de0b6b3a76400006112ec868263ffffffff61135716565b9063ffffffff61135716565b9063ffffffff61131116565b9550610cf8945050505050565b600061135083836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b8152506114b3565b9392505050565b60008261136657506000610e0c565b8282028284828161137357fe5b04146113505760405162461bcd60e51b815260040180806020018281038252602181526020018061159b6021913960400191505060405180910390fd5b3360009081526001602052604090205460ff16611402576040805162461bcd60e51b815260206004820152601560248201526000805160206115e0833981519152604482015290519081900360640190fd5b6001600160a01b0380831660008181526020818152604080832080548251606080820185528982524282870190815233838701908152898952978752915180855591516001850155955160029093018054939098166001600160a01b0319909316929092179096558151948552918401859052838101869052918301525183917fdd71a1d19fcba687442a1d5c58578f1e409af71a79d10fd95a4d66efd8fa9ae7919081900360800190a150505050565b6000818361153f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156115045781810151838201526020016114ec565b50505050905090810190601f1680156115315780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161154b57fe5b049594505050505056fe476f7665726e616e63652072657175697265642e000000000000000000000000476f7665726e616e636520616464726573732073686f756c64206e6f74206265207a65726f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774174206c65617374206f6e6520617373657420707269636520697320726571756972656450726963652041646d696e2072657175697265642e0000000000000000000000a265627a7a723158206e348b1bb0e3d55033174b3c994d0f378da2d59ea7f4f8101d13b877852b3df264736f6c63430005100032000000000000000000000000a00744882684c3e4747faefd68d283ea44099d03