608060405260016000908155600755600e805466ff0000ffffffff191666040000000000001790553480156200003457600080fd5b5060405162003cfb38038062003cfb833981016040819052620000579162000333565b604051806040016040528060018152602001600160fd1b8152506040518060400160405280601981526020017f4b727970746f7269613a20416c70686120436974697a656e7300000000000000815250604051806040016040528060098152602001684b525950544f52494160b81b8152508160019081620000da9190620004d4565b506002620000e98282620004d4565b50505062000106620001006200015e60201b60201c565b62000162565b6200011181620001b4565b506200011d8362000211565b600f6200012b8382620004d4565b5062000139816001620005a0565b600e60046101000a81548161ffff021916908361ffff16021790555050505062000653565b3390565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b620001be620002a7565b6009620001cc8282620004d4565b506009604051620001de9190620005d5565b604051908190038120907f3cc55ff3af8853a28f778ecebc26621f7f37b24525b3769487260b906c74b95890600090a250565b6200021b620002a7565b6001600160a01b038116620002775760405162461bcd60e51b815260206004820152601760248201527f63616e6e6f7420736574207a65726f206164647265737300000000000000000060448201526064015b60405180910390fd5b600e80546001600160a01b0390921667010000000000000002600160381b600160d81b0319909216919091179055565b6008546001600160a01b03163314620003035760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200026e565b565b634e487b7160e01b600052604160045260246000fd5b805161ffff811681146200032e57600080fd5b919050565b6000806000606084860312156200034957600080fd5b83516001600160a01b03811681146200036157600080fd5b602085810151919450906001600160401b03808211156200038157600080fd5b818701915087601f8301126200039657600080fd5b815181811115620003ab57620003ab62000305565b604051601f8201601f19908116603f01168101908382118183101715620003d657620003d662000305565b816040528281528a86848701011115620003ef57600080fd5b600093505b82841015620004135784840186015181850187015292850192620003f4565b82841115620004255760008684830101525b8097505050505050506200043c604085016200031b565b90509250925092565b600181811c908216806200045a57607f821691505b6020821081036200047b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004cf57600081815260208120601f850160051c81016020861015620004aa5750805b601f850160051c820191505b81811015620004cb57828155600101620004b6565b5050505b505050565b81516001600160401b03811115620004f057620004f062000305565b620005088162000501845462000445565b8462000481565b602080601f831160018114620005405760008415620005275750858301515b600019600386901b1c1916600185901b178555620004cb565b600085815260208120601f198616915b82811015620005715788860151825594840194600190910190840162000550565b5085821015620005905787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600061ffff808316818516808303821115620005cc57634e487b7160e01b600052601160045260246000fd5b01949350505050565b6000808354620005e58162000445565b60018281168015620006005760018114620006165762000647565b60ff198416875282151583028701945062000647565b8760005260208060002060005b858110156200063e5781548a82015290840190820162000623565b50505082870194505b50929695505050505050565b61369880620006636000396000f3fe608060405234801561001057600080fd5b506004361061027f5760003560e01c806370a082311161015c578063d41b7375116100ce578063e985e9c511610087578063e985e9c514610531578063ed2bb1ea1461056d578063f2c4ce1e14610580578063f2fde38b14610593578063f6e43c12146105a6578063feded294146105c057600080fd5b8063d41b7375146104d7578063d547cfb7146104ea578063d5abeb01146104f2578063d7224ba01461050d578063da863ed614610516578063e222c7f91461052957600080fd5b8063a22cb46511610120578063a22cb4651461047b578063a475b5dd1461048e578063b88d4fde14610496578063c87b56dd146104a9578063ca3cb522146104bc578063cc03c342146104c457600080fd5b806370a0823114610434578063715018a6146104475780637cb647591461044f5780638da5cb5b1461046257806395d89b411461047357600080fd5b80632f745c59116101f557806346eb4c9a116101b957806346eb4c9a146103d25780634f6ccce7146103da57806357c1af93146103ed5780635f072ef2146104005780636352211e1461040d5780636ebeac851461042057600080fd5b80632f745c59146103885780632fc37ab21461039b57806330176e13146103a45780633b8105b3146103b757806342842e0e146103bf57600080fd5b8063182d180111610247578063182d180114610317578063192e6ae01461032a57806323b872dd1461033c57806323cf7d321461034f5780632abe1509146103625780632bdcfe721461037557600080fd5b806301ffc9a71461028457806306fdde03146102ac578063081812fc146102c1578063095ea7b3146102ec57806318160ddd14610301575b600080fd5b610297610292366004612a62565b6105f0565b60405190151581526020015b60405180910390f35b6102b461065d565b6040516102a39190612ade565b6102d46102cf366004612af1565b6106ef565b6040516001600160a01b0390911681526020016102a3565b6102ff6102fa366004612b26565b61077f565b005b6103096107b9565b6040519081526020016102a3565b6102ff610325366004612baa565b6107cf565b600e5461029790610100900460ff1681565b6102ff61034a366004612c2a565b6109b5565b6102ff61035d366004612c77565b6109f1565b6102ff610370366004612cd6565b610a59565b6102ff610383366004612d28565b610ca6565b610309610396366004612b26565b610f0f565b610309600a5481565b6102ff6103b2366004612df4565b611084565b6102ff6110db565b6102ff6103cd366004612c2a565b611138565b6102b4611153565b6103096103e8366004612af1565b6111e1565b6102ff6103fb366004612d28565b611249565b600e546102979060ff1681565b6102d461041b366004612af1565b6114b3565b600e54610297906301000000900460ff1681565b610309610442366004612e3c565b6114c5565b6102ff611556565b6102ff61045d366004612af1565b61156a565b6008546001600160a01b03166102d4565b6102b4611577565b6102ff610489366004612e57565b611586565b6102ff61164a565b6102ff6104a4366004612e93565b611697565b6102b46104b7366004612af1565b6116d5565b6102ff611813565b6102ff6104d2366004612e3c565b611876565b600e546102979062010000900460ff1681565b6102b4611904565b6104fa611911565b60405161ffff90911681526020016102a3565b61030960075481565b6102ff610524366004612c77565b61192f565b6102ff611a98565b61029761053f366004612f0e565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b61029761057b366004612d28565b611afd565b6102ff61058e366004612df4565b611b81565b6102ff6105a1366004612e3c565b611b95565b600e546102d490600160381b90046001600160a01b031681565b6105d36105ce366004612f41565b611c0e565b6040805193151584526020840192909252908201526060016102a3565b60006001600160e01b031982166380ac58cd60e01b148061062157506001600160e01b03198216635b5e139f60e01b145b8061063c57506001600160e01b0319821663780e9d6360e01b145b8061065757506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606001805461066c90612f5c565b80601f016020809104026020016040519081016040528092919081815260200182805461069890612f5c565b80156106e55780601f106106ba576101008083540402835291602001916106e5565b820191906000526020600020905b8154815290600101906020018083116106c857829003601f168201915b5050505050905090565b60006106fc826000541190565b6107635760405162461bcd60e51b815260206004820152602d60248201527f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560448201526c3c34b9ba32b73a103a37b5b2b760991b60648201526084015b60405180910390fd5b506000908152600560205260409020546001600160a01b031690565b6000818152600b6020526040902054156107ab5760405162461bcd60e51b815260040161075a90612f96565b6107b58282611c64565b5050565b600060016000546107ca9190612fd5565b905090565b600e546301000000900460ff166108345760405162461bcd60e51b815260206004820152602360248201527f6f6e6c7920616c6c6f77656420746f207570646174652061667465722072657660448201526219585b60ea1b606482015260840161075a565b6108438561ffff166000541190565b61085f5760405162461bcd60e51b815260040161075a90612fec565b3361086d61ffff87166114b3565b6001600160a01b0316146108935760405162461bcd60e51b815260040161075a9061302f565b61090684848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f88018190048102820181019092528681529250869150859081908401838280828437600092019190915250611d7692505050565b6109525760405162461bcd60e51b815260206004820152601b60248201527f7369676e61747572652076616c69646174696f6e206661696c65640000000000604482015260640161075a565b61ffff85166000908152600d602052604090206109708486836130b6565b507f84342ad3606289bbfbab15c761ad42caf2d1cd6fae2233a2b5ac0db8f5e031dd858585426040516109a69493929190613176565b60405180910390a15050505050565b6000818152600b6020526040902054156109e15760405162461bcd60e51b815260040161075a90612f96565b6109ec838383611dd4565b505050565b6109f9611ddf565b610a048160016131ba565b600e805466ff0000000000001916600160301b60ff9384160217905560405190821681527f808bfcf8396605e252fb30c908e09b7db2f9863d1580891e8a6e05d7cb7aa656906020015b60405180910390a150565b600e54610100900460ff16610aba5760405162461bcd60e51b815260206004820152602160248201527f6d696e74696e6720666f722077686974656c697374656420697320636c6f73656044820152601960fa1b606482015260840161075a565b600e54640100000000900461ffff16610ad16107b9565b10610aee5760405162461bcd60e51b815260040161075a906131df565b600e54640100000000900461ffff1660ff8416610b096107b9565b610b139190613226565b10610b305760405162461bcd60e51b815260040161075a9061323e565b6040516bffffffffffffffffffffffff193360601b166020820152600090603401604051602081830303815290604052805190602001209050610baa83838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600a549150849050611e39565b610bf65760405162461bcd60e51b815260206004820152601760248201527f796f7520617265206e6f742077686974656c6973746564000000000000000000604482015260640161075a565b600e5460ff600160301b9091048116908516610c1133611e4f565b610c1b9190613226565b10610c385760405162461bcd60e51b815260040161075a9061327f565b610c45338560ff16611eed565b7f64807a7ba4672e96e8802df105347d0ff8aefccbacaa3fc0aaa9895a5d96726333610c7033611e4f565b610c786107b9565b604080516001600160a01b03909416845260208401929092529082015260600160405180910390a150505050565b600e5460ff16610cec5760405162461bcd60e51b81526020600482015260116024820152701cdd185ada5b99c81a5cc818db1bdcd959607a1b604482015260640161075a565b60005b60ff8116821115610ec557610d3283838360ff16818110610d1257610d126132c5565b9050602002016020810190610d279190612f41565b61ffff166000541190565b610d8a5760405162461bcd60e51b815260206004820152602360248201527f72657175657374696e6720666f72206e6f6e206578697374696e6720746f6b656044820152621b925960ea1b606482015260840161075a565b33610dc1848460ff8516818110610da357610da36132c5565b9050602002016020810190610db89190612f41565b61ffff166114b3565b6001600160a01b031614610de75760405162461bcd60e51b815260040161075a9061302f565b600b600084848460ff16818110610e0057610e006132c5565b9050602002016020810190610e159190612f41565b61ffff16815260200190815260200160002054600014610e6f5760405162461bcd60e51b8152602060048201526015602482015274139195081a5cc8185b1c9958591e481cdd185ad959605a1b604482015260640161075a565b42600b600085858560ff16818110610e8957610e896132c5565b9050602002016020810190610e9e9190612f41565b61ffff16815260208101919091526040016000205580610ebd816132db565b915050610cef565b50336001600160a01b03167f9d84ff29125e7368c62733296c952491bd5ba0af344839372dd8fd1afb8e5a1c838342604051610f03939291906132fa565b60405180910390a25050565b6000610f1a836114c5565b8210610f735760405162461bcd60e51b815260206004820152602260248201527f455243373231413a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b606482015260840161075a565b6000610f7d6107b9565b905060008060005b83811015611024576000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160401b03169183019190915215610fd757805192505b876001600160a01b0316836001600160a01b031603611011578684036110035750935061065792505050565b8361100d81613349565b9450505b508061101c81613349565b915050610f85565b5060405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060448201526d0deeedccae440c4f240d2dcc8caf60931b606482015260840161075a565b61108c611ddf565b60096110988282613362565b5060096040516110a89190613421565b604051908190038120907f3cc55ff3af8853a28f778ecebc26621f7f37b24525b3769487260b906c74b95890600090a250565b6110e3611ddf565b600e805460ff8082161560ff1990921682179092556040805191909216151581524260208201527f632ebf87133e4e189c52cb2cc1f90d19e151ad705be2b0d91b533f0eccce093c91015b60405180910390a1565b6109ec83838360405180602001604052806000815250611697565b600f805461116090612f5c565b80601f016020809104026020016040519081016040528092919081815260200182805461118c90612f5c565b80156111d95780601f106111ae576101008083540402835291602001916111d9565b820191906000526020600020905b8154815290600101906020018083116111bc57829003601f168201915b505050505081565b60006111eb6107b9565b82106112455760405162461bcd60e51b815260206004820152602360248201527f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b606482015260840161075a565b5090565b60005b60ff81168211156114755761126f83838360ff16818110610d1257610d126132c5565b61128b5760405162461bcd60e51b815260040161075a90612fec565b336112a4848460ff8516818110610da357610da36132c5565b6001600160a01b031614806112d25750336112c76008546001600160a01b031690565b6001600160a01b0316145b6112ee5760405162461bcd60e51b815260040161075a9061302f565b600b600084848460ff16818110611307576113076132c5565b905060200201602081019061131c9190612f41565b61ffff168152602001908152602001600020546000036113745760405162461bcd60e51b81526020600482015260136024820152724e4654206973206e6f74206f6e207374616b6560681b604482015260640161075a565b6000600b600085858560ff1681811061138f5761138f6132c5565b90506020020160208101906113a49190612f41565b61ffff16815260200190815260200160002054426113c29190612fd5565b905080600c600086868660ff168181106113de576113de6132c5565b90506020020160208101906113f39190612f41565b61ffff1661ffff16815260200190815260200160002060008282546114189190613226565b9091555060009050600b81868660ff8716818110611438576114386132c5565b905060200201602081019061144d9190612f41565b61ffff168152602081019190915260400160002055508061146d816132db565b91505061124c565b50336001600160a01b03167f61084bd3dae1808b0d854a81656669e70b0211c6f070071348d0739b0fd733f1838342604051610f03939291906132fa565b60006114be82611f07565b5192915050565b60006001600160a01b0382166115315760405162461bcd60e51b815260206004820152602b60248201527f455243373231413a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b606482015260840161075a565b506001600160a01b03166000908152600460205260409020546001600160801b031690565b61155e611ddf565b6115686000611fe6565b565b611572611ddf565b600a55565b60606002805461066c90612f5c565b336001600160a01b038316036115de5760405162461bcd60e51b815260206004820152601a60248201527f455243373231413a20617070726f766520746f2063616c6c6572000000000000604482015260640161075a565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b611652611ddf565b600e805463ff000000191663010000001790556040517f1747b48b6ade85d7dc97c0f523e0e780795930a468c01b18a51546791fdd3ac09061112e9042815260200190565b6000828152600b6020526040902054156116c35760405162461bcd60e51b815260040161075a90612f96565b6116cf84848484612038565b50505050565b60606116e2826000541190565b6116fe5760405162461bcd60e51b815260040161075a90612fec565b600e546301000000900460ff166117a157600f805461171c90612f5c565b80601f016020809104026020016040519081016040528092919081815260200182805461174890612f5c565b80156117955780601f1061176a57610100808354040283529160200191611795565b820191906000526020600020905b81548152906001019060200180831161177857829003601f168201915b50505050509050919050565b6000828152600d6020526040812080546117ba90612f5c565b905011156117db576000828152600d60205260409020805461171c90612f5c565b6117e3612082565b6117ec8361208c565b6040516020016117fd929190613497565b6040516020818303038152906040529050919050565b61181b611ddf565b600e805460ff610100808304821615810261ff00199093169290921792839055604080519290930416151581524260208201527f1a422b0e1abe0da9a84283950dd30698d023e99cd0f2f9db3492a91bc380d6e4910161112e565b61187e611ddf565b6001600160a01b0381166118d45760405162461bcd60e51b815260206004820152601760248201527f63616e6e6f7420736574207a65726f2061646472657373000000000000000000604482015260640161075a565b600e80546001600160a01b03909216600160381b02670100000000000000600160d81b0319909216919091179055565b6009805461116090612f5c565b600e546000906107ca90600190640100000000900461ffff166134d6565b600e5462010000900460ff1661197b5760405162461bcd60e51b81526020600482015260116024820152701b5a5b9d1a5b99c81a5cc818db1bdcd959607a1b604482015260640161075a565b600e54640100000000900461ffff166119926107b9565b106119af5760405162461bcd60e51b815260040161075a906131df565b600e54640100000000900461ffff1660ff82166119ca6107b9565b6119d49190613226565b106119f15760405162461bcd60e51b815260040161075a9061323e565b600e5460ff600160301b9091048116908216611a0c33611e4f565b611a169190613226565b10611a335760405162461bcd60e51b815260040161075a9061327f565b611a40338260ff16611eed565b7f64807a7ba4672e96e8802df105347d0ff8aefccbacaa3fc0aaa9895a5d96726333611a6b33611e4f565b611a736107b9565b604080516001600160a01b039094168452602084019290925290820152606001610a4e565b611aa0611ddf565b600e805460ff62010000808304821615810262ff0000199093169290921792839055604080519290930416151581524260208201527f9903efc87f9bd1a27864993f92ff41adc4a6e1267d0461e7fd70b888c94991f6910161112e565b6040516bffffffffffffffffffffffff193360601b1660208201526000908190603401604051602081830303815290604052805190602001209050611b7984848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600a549150849050611e39565b949350505050565b611b89611ddf565b600f6107b58282613362565b611b9d611ddf565b6001600160a01b038116611c025760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161075a565b611c0b81611fe6565b50565b61ffff81166000908152600b6020526040812054819081908015611c3d5760019350611c3a8142612fd5565b92505b61ffff85166000908152600c6020526040902054611c5b9084613226565b93959294505050565b6000611c6f826114b3565b9050806001600160a01b0316836001600160a01b031603611cdd5760405162461bcd60e51b815260206004820152602260248201527f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60448201526132b960f11b606482015260840161075a565b336001600160a01b0382161480611cf95750611cf9813361053f565b611d6b5760405162461bcd60e51b815260206004820152603960248201527f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000606482015260840161075a565b6109ec83838361218c565b60008083604051602001611d8a91906134f9565b60408051808303601f190181529190528051602090910120600e54909150600160381b90046001600160a01b0316611dc282856121e8565b6001600160a01b031614949350505050565b6109ec838383612267565b6008546001600160a01b031633146115685760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161075a565b600082611e4685846125ed565b14949350505050565b60006001600160a01b038216611ec15760405162461bcd60e51b815260206004820152603160248201527f455243373231413a206e756d626572206d696e74656420717565727920666f7260448201527020746865207a65726f206164647265737360781b606482015260840161075a565b506001600160a01b0316600090815260046020526040902054600160801b90046001600160801b031690565b6107b5828260405180602001604052806000815250612661565b6040805180820190915260008082526020820152611f26826000541190565b611f855760405162461bcd60e51b815260206004820152602a60248201527f455243373231413a206f776e657220717565727920666f72206e6f6e657869736044820152693a32b73a103a37b5b2b760b11b606482015260840161075a565b815b6000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160401b03169183019190915215611fd3579392505050565b5080611fde81613515565b915050611f87565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b612043848484612267565b6001600160a01b0383163b15158015612065575061206384848484612924565b155b156116cf5760405162461bcd60e51b815260040161075a9061352c565b60606107ca612a0e565b6060816000036120b35750506040805180820190915260018152600360fc1b602082015290565b8160005b81156120dd57806120c781613349565b91506120d69050600a83613595565b91506120b7565b6000816001600160401b038111156120f7576120f7612d69565b6040519080825280601f01601f191660200182016040528015612121576020820181803683370190505b5090505b8415611b7957612136600183612fd5565b9150612143600a866135a9565b61214e906030613226565b60f81b818381518110612163576121636132c5565b60200101906001600160f81b031916908160001a905350612185600a86613595565b9450612125565b60008281526005602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000806000806121f785612a1d565b6040805160008152602081018083528b905260ff8516918101919091526060810183905260808101829052929550909350915060019060a0016020604051602081039080840390855afa158015612252573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b600061227282611f07565b80519091506000906001600160a01b0316336001600160a01b031614806122a957503361229e846106ef565b6001600160a01b0316145b806122bb575081516122bb903361053f565b9050806123255760405162461bcd60e51b815260206004820152603260248201527f455243373231413a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b606482015260840161075a565b846001600160a01b031682600001516001600160a01b0316146123995760405162461bcd60e51b815260206004820152602660248201527f455243373231413a207472616e736665722066726f6d20696e636f72726563746044820152651037bbb732b960d11b606482015260840161075a565b6001600160a01b0384166123fd5760405162461bcd60e51b815260206004820152602560248201527f455243373231413a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b606482015260840161075a565b61240d600084846000015161218c565b6001600160a01b038516600090815260046020526040812080546001929061243f9084906001600160801b03166135bd565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b0386166000908152600460205260408120805460019450909261248b918591166135dd565b82546001600160801b039182166101009390930a9283029190920219909116179055506040805180820182526001600160a01b0380871682526001600160401b03428116602080850191825260008981526003909152948520935184549151909216600160a01b026001600160e01b03199091169190921617179055612512846001613226565b6000818152600360205260409020549091506001600160a01b03166125a35761253c816000541190565b156125a35760408051808201825284516001600160a01b0390811682526020808701516001600160401b039081168285019081526000878152600390935294909120925183549451909116600160a01b026001600160e01b03199094169116179190911790555b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b600081815b845181101561265957600085828151811061260f5761260f6132c5565b602002602001015190508083116126355760008381526020829052604090209250612646565b600081815260208490526040902092505b508061265181613349565b9150506125f2565b509392505050565b6000546001600160a01b0384166126c45760405162461bcd60e51b815260206004820152602160248201527f455243373231413a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b606482015260840161075a565b6126cf816000541190565b1561271c5760405162461bcd60e51b815260206004820152601d60248201527f455243373231413a20746f6b656e20616c7265616479206d696e746564000000604482015260640161075a565b6001600160a01b0384166000908152600460209081526040918290208251808401845290546001600160801b038082168352600160801b90910416918101919091528151808301909252805190919081906127789087906135dd565b6001600160801b0316815260200185836020015161279691906135dd565b6001600160801b039081169091526001600160a01b0380881660008181526004602090815260408083208751978301518716600160801b029790961696909617909455845180860186529182526001600160401b034281168386019081528883526003909552948120915182549451909516600160a01b026001600160e01b031990941694909216939093179190911790915582906128358683613226565b90506001600160a01b0387163b156128ce575b60405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46128986000888461289081613349565b955088612924565b6128b45760405162461bcd60e51b815260040161075a9061352c565b8082036128485783600054146128c957600080fd5b612919565b816128d881613349565b6040519093506001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a48082036128ce575b506000555050505050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290612959903390899088908890600401613608565b6020604051808303816000875af1925050508015612994575060408051601f3d908101601f1916820190925261299191810190613645565b60015b6129f1573d8080156129c2576040519150601f19603f3d011682016040523d82523d6000602084013e6129c7565b606091505b5080516000036129e95760405162461bcd60e51b815260040161075a9061352c565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b60606009805461066c90612f5c565b60008060008351604114612a3057600080fd5b5050506020810151604082015160609092015160001a92909190565b6001600160e01b031981168114611c0b57600080fd5b600060208284031215612a7457600080fd5b8135612a7f81612a4c565b9392505050565b60005b83811015612aa1578181015183820152602001612a89565b838111156116cf5750506000910152565b60008151808452612aca816020860160208601612a86565b601f01601f19169290920160200192915050565b602081526000612a7f6020830184612ab2565b600060208284031215612b0357600080fd5b5035919050565b80356001600160a01b0381168114612b2157600080fd5b919050565b60008060408385031215612b3957600080fd5b612b4283612b0a565b946020939093013593505050565b803561ffff81168114612b2157600080fd5b60008083601f840112612b7457600080fd5b5081356001600160401b03811115612b8b57600080fd5b602083019150836020828501011115612ba357600080fd5b9250929050565b600080600080600060608688031215612bc257600080fd5b612bcb86612b50565b945060208601356001600160401b0380821115612be757600080fd5b612bf389838a01612b62565b90965094506040880135915080821115612c0c57600080fd5b50612c1988828901612b62565b969995985093965092949392505050565b600080600060608486031215612c3f57600080fd5b612c4884612b0a565b9250612c5660208501612b0a565b9150604084013590509250925092565b803560ff81168114612b2157600080fd5b600060208284031215612c8957600080fd5b612a7f82612c66565b60008083601f840112612ca457600080fd5b5081356001600160401b03811115612cbb57600080fd5b6020830191508360208260051b8501011115612ba357600080fd5b600080600060408486031215612ceb57600080fd5b612cf484612c66565b925060208401356001600160401b03811115612d0f57600080fd5b612d1b86828701612c92565b9497909650939450505050565b60008060208385031215612d3b57600080fd5b82356001600160401b03811115612d5157600080fd5b612d5d85828601612c92565b90969095509350505050565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b0380841115612d9957612d99612d69565b604051601f8501601f19908116603f01168101908282118183101715612dc157612dc1612d69565b81604052809350858152868686011115612dda57600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215612e0657600080fd5b81356001600160401b03811115612e1c57600080fd5b8201601f81018413612e2d57600080fd5b611b7984823560208401612d7f565b600060208284031215612e4e57600080fd5b612a7f82612b0a565b60008060408385031215612e6a57600080fd5b612e7383612b0a565b915060208301358015158114612e8857600080fd5b809150509250929050565b60008060008060808587031215612ea957600080fd5b612eb285612b0a565b9350612ec060208601612b0a565b92506040850135915060608501356001600160401b03811115612ee257600080fd5b8501601f81018713612ef357600080fd5b612f0287823560208401612d7f565b91505092959194509250565b60008060408385031215612f2157600080fd5b612f2a83612b0a565b9150612f3860208401612b0a565b90509250929050565b600060208284031215612f5357600080fd5b612a7f82612b50565b600181811c90821680612f7057607f821691505b602082108103612f9057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600f908201526e4e4654206973206f6e207374616b6560881b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082821015612fe757612fe7612fbf565b500390565b60208082526023908201527f72657175657374696e6720666f72206e6f6e206578697374696e6720746f6b656040820152621b925160ea1b606082015260800190565b60208082526021908201527f796f7520617265206e6f7420746865206f776e6572206f662074686973206e666040820152601d60fa1b606082015260800190565b601f8211156109ec57600081815260208120601f850160051c810160208610156130975750805b601f850160051c820191505b818110156125e5578281556001016130a3565b6001600160401b038311156130cd576130cd612d69565b6130e1836130db8354612f5c565b83613070565b6000601f84116001811461311557600085156130fd5750838201355b600019600387901b1c1916600186901b17835561316f565b600083815260209020601f19861690835b828110156131465786850135825560209485019460019092019101613126565b50868210156131635760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b61ffff85168152606060208201528260608201528284608083013760006080848301015260006080601f19601f860116830101905082604083015295945050505050565b600060ff821660ff84168060ff038211156131d7576131d7612fbf565b019392505050565b60208082526027908201527f636f6e7472616374207265616368656420746865206c696d6974206f66206d6160408201526678537570706c7960c81b606082015260800190565b6000821982111561323957613239612fbf565b500190565b60208082526021908201527f706c6174666f726d2072656163686564206c696d6974206f66206d696e74696e6040820152606760f81b606082015260800190565b60208082526026908201527f796f752063616e2774206d696e74206d6f7265207468656e206d696e74696e67604082015265081b1a5b5a5d60d21b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff81036132f1576132f1612fbf565b60010192915050565b6040808252810183905260008460608301825b868110156133365761ffff61332184612b50565b1682526020928301929091019060010161330d565b5060209390930193909352509392505050565b60006001820161335b5761335b612fbf565b5060010190565b81516001600160401b0381111561337b5761337b612d69565b61338f816133898454612f5c565b84613070565b602080601f8311600181146133c457600084156133ac5750858301515b600019600386901b1c1916600185901b1785556125e5565b600085815260208120601f198616915b828110156133f3578886015182559484019460019091019084016133d4565b50858210156134115787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600080835461342f81612f5c565b60018281168015613447576001811461345c5761348b565b60ff198416875282151583028701945061348b565b8760005260208060002060005b858110156134825781548a820152908401908201613469565b50505082870194505b50929695505050505050565b600083516134a9818460208801612a86565b8351908301906134bd818360208801612a86565b64173539b7b760d91b9101908152600501949350505050565b600061ffff838116908316818110156134f1576134f1612fbf565b039392505050565b6000825161350b818460208701612a86565b9190910192915050565b60008161352457613524612fbf565b506000190190565b60208082526033908201527f455243373231413a207472616e7366657220746f206e6f6e204552433732315260408201527232b1b2b4bb32b91034b6b83632b6b2b73a32b960691b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b6000826135a4576135a461357f565b500490565b6000826135b8576135b861357f565b500690565b60006001600160801b03838116908316818110156134f1576134f1612fbf565b60006001600160801b038083168185168083038211156135ff576135ff612fbf565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061363b90830184612ab2565b9695505050505050565b60006020828403121561365757600080fd5b8151612a7f81612a4c56fea2646970667358221220901e97fc8a6b5f23daad80a8b56fc485cdcfd20b249912a1fec0b1367bd9da6964736f6c634300080f003300000000000000000000000055bf8ba0eca5e367f86db3def773aed95e9ee861000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d6343684e4c416e547968576e587872635739765a6447386238754a486e5370346e64464e665a4333776379580000000000000000000000