0x608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61190d806100ec6000396000f3fe6080604052600436106100c15760003560e01c8063b6a597dd1161006f578063b6a597dd146101f2578063c415b95c14610212578063d2c35ce814610232578063e0681ee614610252578063e1f21c6714610265578063e94a010214610285578063f2fde38b146102cb57600080fd5b80630411b2521461010257806306fdde03146101375780633de23acd1461015957806354fd4d501461016c578063715018a61461018157806384b0196e146101985780638da5cb5b146101c057600080fd5b366100fd5760405134815233907f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f885258749060200160405180910390a2005b600080fd5b34801561010e57600080fd5b5061012261011d366004611401565b6102eb565b60405190151581526020015b60405180910390f35b34801561014357600080fd5b5061014c61043c565b60405161012e91906114a3565b6101226101673660046114bd565b61044b565b34801561017857600080fd5b5061014c61052d565b34801561018d57600080fd5b50610196610537565b005b3480156101a457600080fd5b506101ad61054b565b60405161012e97969594939291906114f2565b3480156101cc57600080fd5b506033546001600160a01b03165b6040516001600160a01b03909116815260200161012e565b3480156101fe57600080fd5b5061019661020d366004611588565b6105e9565b34801561021e57600080fd5b5060ce546101da906001600160a01b031681565b34801561023e57600080fd5b5061019661024d3660046115f5565b61076d565b61014c610260366004611628565b6107fd565b34801561027157600080fd5b506101226102803660046116db565b6109fb565b34801561029157600080fd5b506101226102a036600461171c565b6001600160a01b03919091166000908152609b60209081526040808320938352929052205460ff1690565b3480156102d757600080fd5b506101966102e63660046115f5565b610aa6565b60006102f5610b1f565b846001600160a01b03168484604051602401610312929190611748565b60408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052516103479190611761565b6000604051808303816000865af19150503d8060008114610384576040519150601f19603f3d011682016040523d82523d6000602084013e610389565b606091505b5050821590506104315760ce546040516001600160a01b03808816926103b6929116908590602401611748565b60408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052516103eb9190611761565b6000604051808303816000865af19150503d8060008114610428576040519150601f19603f3d011682016040523d82523d6000602084013e61042d565b606091505b5050505b506001949350505050565b6060610446610b98565b905090565b6000610455610b1f565b61045f828461177d565b4710156104aa5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b60448201526064015b60405180910390fd5b6040516001600160a01b0385169084156108fc029085906000818181858888f193505050501580156104e0573d6000803e3d6000fd5b5081156105235760ce546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015610521573d6000803e3d6000fd5b505b5060019392505050565b6060610446610c2a565b61053f610b1f565b6105496000610c39565b565b6000606080600080600060606065546000801b14801561056b5750606654155b6105af5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064016104a1565b6105b7610b98565b6105bf610c2a565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b600054610100900460ff16158080156106095750600054600160ff909116105b806106235750303b158015610623575060005460ff166001145b6106865760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104a1565b6000805460ff1916600117905580156106a9576000805461ff0019166101001790555b6106f46040518060400160405280601081526020016f10d95b9bd854db585c9d15d85b1b195d60821b815250604051806040016040528060018152602001603160f81b815250610c8b565b81516106ff90610c39565b602082015160ce80546001600160a01b0319166001600160a01b039092169190911790558015610769576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60ce546001600160a01b031633146107db5760405162461bcd60e51b815260206004820152602b60248201527f4f6e6c792066656520636f6c6c6563746f722063616e2075706461746520666560448201526a329031b7b63632b1ba37b960a91b60648201526084016104a1565b60ce80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600060405180606001604052808981526020018a6001600160a01b0316815260200188888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505091525090506108688982878787610cbc565b6108be5760405162461bcd60e51b815260206004820152602160248201527f5369676e657220616e64207369676e617475726520646f206e6f74206d6174636044820152600d60fb1b60648201526084016104a1565b336001600160a01b0316896001600160a01b03167f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b89896040516109039291906117a3565b60405180910390a361091d81602001518260000151610d6e565b600080306001600160a01b031689898d60405160200161093f939291906117d2565b60408051601f198184030181529082905261095991611761565b6000604051808303816000865af19150503d8060008114610996576040519150601f19603f3d011682016040523d82523d6000602084013e61099b565b606091505b5091509150816109ed5760405162461bcd60e51b815260206004820152601c60248201527f46756e6374696f6e2063616c6c206e6f74207375636365737366756c0000000060448201526064016104a1565b9a9950505050505050505050565b6000610a05610b1f565b836001600160a01b03168383604051602401610a22929190611748565b60408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b17905251610a579190611761565b6000604051808303816000865af19150503d8060008114610a94576040519150601f19603f3d011682016040523d82523d6000602084013e610a99565b606091505b5060019695505050505050565b610aae610b1f565b6001600160a01b038116610b135760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104a1565b610b1c81610c39565b50565b610b27610dc8565b6001600160a01b0316610b426033546001600160a01b031690565b6001600160a01b0316146105495760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a1565b606060678054610ba7906117f8565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd3906117f8565b8015610c205780601f10610bf557610100808354040283529160200191610c20565b820191906000526020600020905b815481529060010190602001808311610c0357829003601f168201915b5050505050905090565b606060688054610ba7906117f8565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610cb25760405162461bcd60e51b81526004016104a190611833565b6107698282610dd2565b60006001600160a01b038616610d225760405162461bcd60e51b815260206004820152602560248201527f4e61746976654d6574615472616e73616374696f6e3a20494e56414c49445f5360448201526424a3a722a960d91b60648201526084016104a1565b610d30868660000151610e2f565b610d4f828585610d47610d428a610ebb565b610f38565b929190610f6b565b6001600160a01b0316866001600160a01b031614905095945050505050565b6001600160a01b0382166000818152609b60209081526040808320858452909152808220805460ff19166001179055518392917f98de503528ee59b575ef0c0a2576a82497bfc029a5685b209e9ec333479b10a591a35050565b6000610446610f93565b600054610100900460ff16610df95760405162461bcd60e51b81526004016104a190611833565b610e038282610ff0565b8051610e1690609990602084019061135c565b508151610e2a90609a90602085019061135c565b505050565b6001600160a01b0382166000908152609b6020908152604080832084845290915290205460ff16156107695760405162461bcd60e51b815260206004820152602f60248201527f4761736c657373546f6b656e3a20617574686f72697a6174696f6e206973207560448201526e1cd959081bdc8818d85b98d95b1959608a1b60648201526084016104a1565b60006040518060800160405280604381526020016118956043913980516020918201208351848301516040808701518051908601209051610f1b950193845260208401929092526001600160a01b03166040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b6000610f65610f4561104d565b8360405161190160f01b8152600281019290925260228201526042902090565b92915050565b6000806000610f7c87878787611057565b91509150610f8981611111565b5095945050505050565b600033301415610fea57600080368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b03169150610fed9050565b50335b90565b600054610100900460ff166110175760405162461bcd60e51b81526004016104a190611833565b815161102a90606790602085019061135c565b50805161103e90606890602084019061135c565b50506000606581905560665550565b600061044661125a565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311156110845750600090506003611108565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156110d8573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661110157600060019250925050611108565b9150600090505b94509492505050565b60008160048111156111255761112561187e565b141561112e5750565b60018160048111156111425761114261187e565b141561118b5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b60448201526064016104a1565b600281600481111561119f5761119f61187e565b14156111ed5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016104a1565b60038160048111156112015761120161187e565b1415610b1c5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016104a1565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6112856112ce565b61128d61132b565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000806112d9610b98565b8051909150156112f0578051602090910120919050565b60655480156112ff5792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b5090565b600080611336610c2a565b80519091501561134d578051602090910120919050565b60665480156112ff5792915050565b828054611368906117f8565b90600052602060002090601f01602090048101928261138a57600085556113d0565b82601f106113a357805160ff19168380011785556113d0565b828001600101855582156113d0579182015b828111156113d05782518255916020019190600101906113b5565b506113279291505b8082111561132757600081556001016113d8565b6001600160a01b0381168114610b1c57600080fd5b6000806000806080858703121561141757600080fd5b8435611422816113ec565b93506020850135611432816113ec565b93969395505050506040820135916060013590565b60005b8381101561146257818101518382015260200161144a565b83811115611471576000848401525b50505050565b6000815180845261148f816020860160208601611447565b601f01601f19169290920160200192915050565b6020815260006114b66020830184611477565b9392505050565b6000806000606084860312156114d257600080fd5b83356114dd816113ec565b95602085013595506040909401359392505050565b60ff60f81b881681526000602060e08184015261151260e084018a611477565b8381036040850152611524818a611477565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b818110156115765783518352928401929184019160010161155a565b50909c9b505050505050505050505050565b60006040828403121561159a57600080fd5b6040516040810181811067ffffffffffffffff821117156115cb57634e487b7160e01b600052604160045260246000fd5b60405282356115d9816113ec565b815260208301356115e9816113ec565b60208201529392505050565b60006020828403121561160757600080fd5b81356114b6816113ec565b803560ff8116811461162357600080fd5b919050565b600080600080600080600060c0888a03121561164357600080fd5b873561164e816113ec565b965060208801359550604088013567ffffffffffffffff8082111561167257600080fd5b818a0191508a601f83011261168657600080fd5b81358181111561169557600080fd5b8b60208285010111156116a757600080fd5b60208301975080965050505060608801359250608088013591506116cd60a08901611612565b905092959891949750929550565b6000806000606084860312156116f057600080fd5b83356116fb816113ec565b9250602084013561170b816113ec565b929592945050506040919091013590565b6000806040838503121561172f57600080fd5b823561173a816113ec565b946020939093013593505050565b6001600160a01b03929092168252602082015260400190565b60008251611773818460208701611447565b9190910192915050565b6000821982111561179e57634e487b7160e01b600052601160045260246000fd5b500190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b600181811c9082168061180c57607f821691505b6020821081141561182d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052602160045260246000fdfe4d6574615472616e73616374696f6e2862797465733332206e6f6e63652c616464726573732066726f6d2c62797465732066756e6374696f6e5369676e617475726529a264697066735822122079f0941651351baae7dac9228dd7e1b51f90f4576700641c9c42cec117b4dec564736f6c634300080c0033