0x608060405234801561001057600080fd5b50600436106101375760003560e01c80636ef8d66d116100b8578063983b2d561161007c578063983b2d561461035b5780639865027514610381578063a457c2d714610389578063a9059cbb146103b5578063aa271e1a146103e1578063dd62ed3e1461040757610137565b80636ef8d66d146102f757806370a08231146102ff57806382dc1ec4146103255780638456cb591461034b57806395d89b411461035357610137565b806339509351116100ff57806339509351146102675780633f4ba83a1461029357806340c10f191461029d57806346fbf68e146102c95780635c975abb146102ef57610137565b806306fdde031461013c578063095ea7b3146101b957806318160ddd146101f957806323b872dd14610213578063313ce56714610249575b600080fd5b610144610435565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017e578181015183820152602001610166565b50505050905090810190601f1680156101ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e5600480360360408110156101cf57600080fd5b506001600160a01b0381351690602001356104cb565b604080519115158252519081900360200190f35b61020161052a565b60408051918252519081900360200190f35b6101e56004803603606081101561022957600080fd5b506001600160a01b03813581169160208101359091169060400135610530565b610251610591565b6040805160ff9092168252519081900360200190f35b6101e56004803603604081101561027d57600080fd5b506001600160a01b03813516906020013561059a565b61029b6105f2565b005b6101e5600480360360408110156102b357600080fd5b506001600160a01b0381351690602001356106c3565b6101e5600480360360208110156102df57600080fd5b50356001600160a01b031661071c565b6101e5610735565b61029b61073e565b6102016004803603602081101561031557600080fd5b50356001600160a01b0316610749565b61029b6004803603602081101561033b57600080fd5b50356001600160a01b0316610764565b61029b6107b4565b610144610885565b61029b6004803603602081101561037157600080fd5b50356001600160a01b03166108e6565b61029b610933565b6101e56004803603604081101561039f57600080fd5b506001600160a01b03813516906020013561093c565b6101e5600480360360408110156103cb57600080fd5b506001600160a01b038135169060200135610994565b6101e5600480360360208110156103f757600080fd5b50356001600160a01b03166109ec565b6102016004803603604081101561041d57600080fd5b506001600160a01b03813581169160200135166109ff565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104c15780601f10610496576101008083540402835291602001916104c1565b820191906000526020600020905b8154815290600101906020018083116104a457829003601f168201915b5050505050905090565b60075460009060ff1615610519576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6105238383610a2a565b9392505050565b60025490565b60075460009060ff161561057e576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b610589848484610a37565b949350505050565b60055460ff1690565b60075460009060ff16156105e8576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6105238383610a8e565b6105fb3361071c565b6106365760405162461bcd60e51b815260040180806020018281038252603081526020018061117b6030913960400191505060405180910390fd5b60075460ff16610684576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6007805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b60006106ce336109ec565b6107095760405162461bcd60e51b81526004018080602001828103825260308152602001806111cd6030913960400191505060405180910390fd5b6107138383610aca565b50600192915050565b600061072f60068363ffffffff610bba16565b92915050565b60075460ff1690565b61074733610c21565b565b6001600160a01b031660009081526020819052604090205490565b61076d3361071c565b6107a85760405162461bcd60e51b815260040180806020018281038252603081526020018061117b6030913960400191505060405180910390fd5b6107b181610c69565b50565b6107bd3361071c565b6107f85760405162461bcd60e51b815260040180806020018281038252603081526020018061117b6030913960400191505060405180910390fd5b60075460ff1615610843576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6007805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104c15780601f10610496576101008083540402835291602001916104c1565b6108ef336109ec565b61092a5760405162461bcd60e51b81526004018080602001828103825260308152602001806111cd6030913960400191505060405180910390fd5b6107b181610cb1565b61074733610cf9565b60075460009060ff161561098a576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6105238383610d41565b60075460009060ff16156109e2576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6105238383610d7d565b600061072f60088363ffffffff610bba16565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6000610713338484610d8a565b6000610a44848484610e76565b6001600160a01b038416600090815260016020908152604080832033808552925290912054610a84918691610a7f908663ffffffff610fb816565b610d8a565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610713918590610a7f908663ffffffff61101516565b6001600160a01b038216610b25576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254610b38908263ffffffff61101516565b6002556001600160a01b038216600090815260208190526040902054610b64908263ffffffff61101516565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60006001600160a01b038216610c015760405162461bcd60e51b815260040180806020018281038252602281526020018061121e6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b610c3260068263ffffffff61106f16565b6040516001600160a01b038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b610c7a60068263ffffffff6110d616565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b610cc260088263ffffffff6110d616565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b610d0a60088263ffffffff61106f16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610713918590610a7f908663ffffffff610fb816565b6000610713338484610e76565b6001600160a01b038316610dcf5760405162461bcd60e51b81526004018080602001828103825260248152602001806112656024913960400191505060405180910390fd5b6001600160a01b038216610e145760405162461bcd60e51b81526004018080602001828103825260228152602001806111ab6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610ebb5760405162461bcd60e51b81526004018080602001828103825260258152602001806112406025913960400191505060405180910390fd5b6001600160a01b038216610f005760405162461bcd60e51b81526004018080602001828103825260238152602001806111586023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054610f29908263ffffffff610fb816565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610f5e908263ffffffff61101516565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282111561100f576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015610523576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6110798282610bba565b6110b45760405162461bcd60e51b81526004018080602001828103825260218152602001806111fd6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6110e08282610bba565b15611132576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff1916600117905556fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373506175736572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652050617573657220726f6c6545524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a265627a7a72305820fd2f344df6304374cda8c6a4e1ccbaca67201aecb4c30abf3096ec5ddad9a77764736f6c63430005090032
0x60806040523480156200001157600080fd5b506040518060400160405280601c81526020017f4e6578742047656e65726174696f6e20476c6f62616c20546f6b656e000000008152506040518060400160405280600381526020017f4e47540000000000000000000000000000000000000000000000000000000000815250600282600390805190602001906200009892919062000495565b508151620000ae90600490602085019062000495565b506005805460ff191660ff9290921691909117905550620000d190503362000126565b6007805460ff19169055620000ef336001600160e01b036200017816565b6200012033620001076001600160e01b03620001ca16565b60ff16600a0a6402540be40002620001d460201b60201c565b62000537565b62000141816006620002ef60201b620010d61790919060201c565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b62000193816008620002ef60201b620010d61790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b60055460ff165b90565b6001600160a01b0382166200024a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b62000266816002546200039660201b620010151790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620002999183906200101562000396821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6200030482826001600160e01b036200041216565b156200037157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6000828201838110156200040b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60006001600160a01b03821662000475576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620018046022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004d857805160ff191683800117855562000508565b8280016001018555821562000508579182015b8281111562000508578251825591602001919060010190620004eb565b50620005169291506200051a565b5090565b620001d191905b8082111562000516576000815560010162000521565b6112bd80620005476000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80636ef8d66d116100b8578063983b2d561161007c578063983b2d561461035b5780639865027514610381578063a457c2d714610389578063a9059cbb146103b5578063aa271e1a146103e1578063dd62ed3e1461040757610137565b80636ef8d66d146102f757806370a08231146102ff57806382dc1ec4146103255780638456cb591461034b57806395d89b411461035357610137565b806339509351116100ff57806339509351146102675780633f4ba83a1461029357806340c10f191461029d57806346fbf68e146102c95780635c975abb146102ef57610137565b806306fdde031461013c578063095ea7b3146101b957806318160ddd146101f957806323b872dd14610213578063313ce56714610249575b600080fd5b610144610435565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017e578181015183820152602001610166565b50505050905090810190601f1680156101ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e5600480360360408110156101cf57600080fd5b506001600160a01b0381351690602001356104cb565b604080519115158252519081900360200190f35b61020161052a565b60408051918252519081900360200190f35b6101e56004803603606081101561022957600080fd5b506001600160a01b03813581169160208101359091169060400135610530565b610251610591565b6040805160ff9092168252519081900360200190f35b6101e56004803603604081101561027d57600080fd5b506001600160a01b03813516906020013561059a565b61029b6105f2565b005b6101e5600480360360408110156102b357600080fd5b506001600160a01b0381351690602001356106c3565b6101e5600480360360208110156102df57600080fd5b50356001600160a01b031661071c565b6101e5610735565b61029b61073e565b6102016004803603602081101561031557600080fd5b50356001600160a01b0316610749565b61029b6004803603602081101561033b57600080fd5b50356001600160a01b0316610764565b61029b6107b4565b610144610885565b61029b6004803603602081101561037157600080fd5b50356001600160a01b03166108e6565b61029b610933565b6101e56004803603604081101561039f57600080fd5b506001600160a01b03813516906020013561093c565b6101e5600480360360408110156103cb57600080fd5b506001600160a01b038135169060200135610994565b6101e5600480360360208110156103f757600080fd5b50356001600160a01b03166109ec565b6102016004803603604081101561041d57600080fd5b506001600160a01b03813581169160200135166109ff565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104c15780601f10610496576101008083540402835291602001916104c1565b820191906000526020600020905b8154815290600101906020018083116104a457829003601f168201915b5050505050905090565b60075460009060ff1615610519576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6105238383610a2a565b9392505050565b60025490565b60075460009060ff161561057e576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b610589848484610a37565b949350505050565b60055460ff1690565b60075460009060ff16156105e8576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6105238383610a8e565b6105fb3361071c565b6106365760405162461bcd60e51b815260040180806020018281038252603081526020018061117b6030913960400191505060405180910390fd5b60075460ff16610684576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6007805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b60006106ce336109ec565b6107095760405162461bcd60e51b81526004018080602001828103825260308152602001806111cd6030913960400191505060405180910390fd5b6107138383610aca565b50600192915050565b600061072f60068363ffffffff610bba16565b92915050565b60075460ff1690565b61074733610c21565b565b6001600160a01b031660009081526020819052604090205490565b61076d3361071c565b6107a85760405162461bcd60e51b815260040180806020018281038252603081526020018061117b6030913960400191505060405180910390fd5b6107b181610c69565b50565b6107bd3361071c565b6107f85760405162461bcd60e51b815260040180806020018281038252603081526020018061117b6030913960400191505060405180910390fd5b60075460ff1615610843576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6007805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104c15780601f10610496576101008083540402835291602001916104c1565b6108ef336109ec565b61092a5760405162461bcd60e51b81526004018080602001828103825260308152602001806111cd6030913960400191505060405180910390fd5b6107b181610cb1565b61074733610cf9565b60075460009060ff161561098a576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6105238383610d41565b60075460009060ff16156109e2576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6105238383610d7d565b600061072f60088363ffffffff610bba16565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6000610713338484610d8a565b6000610a44848484610e76565b6001600160a01b038416600090815260016020908152604080832033808552925290912054610a84918691610a7f908663ffffffff610fb816565b610d8a565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610713918590610a7f908663ffffffff61101516565b6001600160a01b038216610b25576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254610b38908263ffffffff61101516565b6002556001600160a01b038216600090815260208190526040902054610b64908263ffffffff61101516565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60006001600160a01b038216610c015760405162461bcd60e51b815260040180806020018281038252602281526020018061121e6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b610c3260068263ffffffff61106f16565b6040516001600160a01b038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b610c7a60068263ffffffff6110d616565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b610cc260088263ffffffff6110d616565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b610d0a60088263ffffffff61106f16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610713918590610a7f908663ffffffff610fb816565b6000610713338484610e76565b6001600160a01b038316610dcf5760405162461bcd60e51b81526004018080602001828103825260248152602001806112656024913960400191505060405180910390fd5b6001600160a01b038216610e145760405162461bcd60e51b81526004018080602001828103825260228152602001806111ab6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610ebb5760405162461bcd60e51b81526004018080602001828103825260258152602001806112406025913960400191505060405180910390fd5b6001600160a01b038216610f005760405162461bcd60e51b81526004018080602001828103825260238152602001806111586023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054610f29908263ffffffff610fb816565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610f5e908263ffffffff61101516565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282111561100f576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015610523576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6110798282610bba565b6110b45760405162461bcd60e51b81526004018080602001828103825260218152602001806111fd6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6110e08282610bba565b15611132576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff1916600117905556fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373506175736572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652050617573657220726f6c6545524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a265627a7a72305820fd2f344df6304374cda8c6a4e1ccbaca67201aecb4c30abf3096ec5ddad9a77764736f6c63430005090032526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373