0x60e06040523480156200001157600080fd5b5060405162004052380380620040528339810160408190526200003491620001f5565b6001600160a01b0382166200005c5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038116620000845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808316608081905290821660a0526040805163416ecebf60e01b8152905163416ecebf916004808201926020929091908290030181865afa158015620000d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000fc91906200022d565b63ffffffff1660c0526200010f62000117565b50506200025c565b600054610100900460ff1615620001845760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620001d6576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b0381168114620001f057600080fd5b919050565b600080604083850312156200020957600080fd5b6200021483620001d8565b91506200022460208401620001d8565b90509250929050565b6000602082840312156200024057600080fd5b815163ffffffff811681146200025557600080fd5b9392505050565b60805160a05160c051613d87620002cb6000396000818161059c01528181611e3f01528181611ee30152611fdd01526000818161074f0152818161202d015281816122300152612c3501526000818161071b01528181611e83015281816121730152612ba40152613d876000f3fe60806040526004361061025c5760003560e01c8063800c778911610144578063bf417684116100b6578063dc7e3d581161007a578063dc7e3d58146107f1578063de0c60d41461081e578063e0ac429f1461084b578063e4ef6e4214610860578063eca03e2c14610880578063f2fde38b146108a057600080fd5b8063bf4176841461073d578063c879c6d814610771578063ce19556a14610791578063d1ba4cc9146107b1578063d66a22aa146107d157600080fd5b806393d04dcf1161010857806393d04dcf1461067657806395d376d7146106965780639ad920c4146106a95780639c6596d2146106c9578063a541b37d146106e9578063b31298961461070957600080fd5b8063800c7789146105d357806380765130146105f35780638129fc1c1461062357806384795a2c146106385780638da5cb5b1461065857600080fd5b8063501b7000116101dd57806369802149116101a157806369802149146104df5780636dea4190146104ff5780636f1788351461051f5780637119005114610555578063715018a614610575578063726075371461058a57600080fd5b8063501b70001461041e5780635bf48e3a1461045457806360b71d4e1461047457806362b69baa14610489578063679ef7b0146104a957600080fd5b806331108fbc1161022457806331108fbc1461036557806332d269301461039e5780633ea89585146103be578063414af43a146103de57806343fbdc4e146103fe57600080fd5b8063016b89131461026157806315ad2b781461028357806322e3f810146102a357806329681700146102e057806330bb3aac14610320575b600080fd5b34801561026d57600080fd5b5061028161027c36600461313c565b6108c0565b005b34801561028f57600080fd5b5061028161029e3660046131b7565b6108fe565b3480156102af57600080fd5b506068546102c3906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102ec57600080fd5b506103106102fb366004613250565b60666020526000908152604090205460ff1681565b60405190151581526020016102d7565b34801561032c57600080fd5b5061035761033b3660046132c1565b5050505063ffffffff1660009081526065602052604090205490565b6040519081526020016102d7565b34801561037157600080fd5b5061031061038036600461333a565b6001600160a01b03166000908152606b602052604090205460ff1690565b3480156103aa57600080fd5b506102816103b936600461333a565b610b7f565b3480156103ca57600080fd5b506102c36103d9366004613250565b610d2c565b3480156103ea57600080fd5b506102816103f9366004613357565b610d69565b34801561040a57600080fd5b5061028161041936600461313c565b610f00565b34801561042a57600080fd5b506102c3610439366004613250565b606e602052600090815260409020546001600160a01b031681565b34801561046057600080fd5b5061028161046f3660046133b0565b611001565b34801561048057600080fd5b5061035761115a565b34801561049557600080fd5b506102816104a436600461333a565b611239565b3480156104b557600080fd5b506102c36104c4366004613250565b6067602052600090815260409020546001600160a01b031681565b3480156104eb57600080fd5b506102816104fa3660046131b7565b61132b565b34801561050b57600080fd5b5061028161051a36600461313c565b6115c7565b34801561052b57600080fd5b506102c361053a36600461333a565b606d602052600090815260409020546001600160a01b031681565b34801561056157600080fd5b5061028161057036600461313c565b6116c8565b34801561058157600080fd5b506102816117c9565b34801561059657600080fd5b506105be7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016102d7565b3480156105df57600080fd5b506102816105ee366004613418565b6117dd565b3480156105ff57600080fd5b5061031061060e36600461333a565b606c6020526000908152604090205460ff1681565b34801561062f57600080fd5b5061028161192b565b34801561064457600080fd5b5061028161065336600461333a565b611a5b565b34801561066457600080fd5b506033546001600160a01b03166102c3565b34801561068257600080fd5b5061028161069136600461333a565b611c2d565b6103576106a4366004613477565b611cf3565b3480156106b557600080fd5b506103106106c43660046134e7565b612157565b3480156106d557600080fd5b506102816106e436600461333a565b612484565b3480156106f557600080fd5b50610281610704366004613528565b61254a565b34801561071557600080fd5b506102c37f000000000000000000000000000000000000000000000000000000000000000081565b34801561074957600080fd5b506102c37f000000000000000000000000000000000000000000000000000000000000000081565b34801561077d57600080fd5b5061028161078c366004613552565b6125c7565b34801561079d57600080fd5b506102816107ac36600461357e565b61270f565b3480156107bd57600080fd5b506102816107cc3660046135ac565b6127db565b3480156107dd57600080fd5b506102816107ec366004613552565b61287a565b3480156107fd57600080fd5b5061081161080c36600461333a565b6128b0565b6040516102d791906135de565b34801561082a57600080fd5b50610357610839366004613250565b60656020526000908152604090205481565b34801561085757600080fd5b50606a54610357565b34801561086c57600080fd5b506102c361087b366004613250565b612945565b34801561088c57600080fd5b506069546102c3906001600160a01b031681565b3480156108ac57600080fd5b506102816108bb36600461333a565b61297c565b6108c86129f2565b63ffffffff919091166000908152606e6020526040902080546001600160a01b0319166001600160a01b03909216919091179055565b848314158061090d5750848114155b1561092b57604051630e52390960e41b815260040160405180910390fd5b60408051606080820183526000808352602083018190529282015290805b87811015610b7457600061097d8888848181106109685761096861362b565b905060200201602081019061087b9190613250565b90506001600160a01b0381166109a657604051639c93283560e01b815260040160405180910390fd5b806001600160a01b031663010082fd8787858181106109c7576109c761362b565b90506020028101906109d99190613641565b6040518363ffffffff1660e01b81526004016109f69291906136b0565b600060405180830381865afa158015610a13573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a3b91908101906137a2565b60208101519094506001600160a01b0316610a6957604051634c9ec4bb60e01b815260040160405180910390fd5b610a768460400151612a4c565b63ffffffff81166000908152606e6020908152604090912054908601519194506001600160a01b03918216911614610ac157604051634c9ec4bb60e01b815260040160405180910390fd5b8263ffffffff16888884818110610ada57610ada61362b565b9050602002016020810190610aef9190613250565b63ffffffff1614610b1357604051634c9ec4bb60e01b815260040160405180910390fd5b610b618a8a84818110610b2857610b2861362b565b90506020020135856000015185610b428860400151612a59565b610b4f8960400151612a66565b610b5c8a60400151612a75565b612a8e565b5080610b6c81613895565b915050610949565b505050505050505050565b610b876129f2565b6001600160a01b0381166000908152606b602052604090205460ff16610bc0576040516301d007a760e01b815260040160405180910390fd5b6001600160a01b0381166000818152606b6020526040808220805460ff191690555163faaebd2160e01b815230600482015290919063faaebd2190602401602060405180830381865afa158015610c1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3f91906138ae565b90508015610d2857816001600160a01b031663fd9be522610c686033546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401600060405180830381600087803b158015610cb057600080fd5b505af1158015610cc4573d6000803e3d6000fd5b505050507ff15a0a3784dea9b4fe33bc98e2450745e262d310237b2868ea8ef56967ff3ecb82610cfc6033546001600160a01b031690565b604080516001600160a01b03938416815292909116602083015281018390526060015b60405180910390a15b5050565b63ffffffff81166000908152606f60205260408120546001600160a01b031680610d635750506068546001600160a01b0316919050565b92915050565b6000610d7484612945565b90506001600160a01b038116610d9d57604051639c93283560e01b815260040160405180910390fd5b60405163010082fd60e01b81526000906001600160a01b0383169063010082fd90610dce90879087906004016136b0565b600060405180830381865afa158015610deb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e1391908101906137a2565b60208101519091506001600160a01b0316610e4157604051634c9ec4bb60e01b815260040160405180910390fd5b6000610e508260400151612a4c565b90508563ffffffff168163ffffffff1614610e7e57604051634c9ec4bb60e01b815260040160405180910390fd5b63ffffffff81166000908152606e6020908152604090912054908301516001600160a01b03908116911614610ec657604051634c9ec4bb60e01b815260040160405180910390fd5b610ef787836000015183610edd8660400151612a59565b610eea8760400151612a66565b610b5c8860400151612a75565b50505050505050565b610f086129f2565b6001600160a01b038116610f2f5760405163d92e233d60e01b815260040160405180910390fd5b63ffffffff82166000908152606f60205260409020546001600160a01b03808316911603610f705760405163a741a04560e01b815260040160405180910390fd5b63ffffffff82166000908152606f6020526040908190205490517fbb9876fa966e481b49f2db07b84e08a34d8e70a0cd75a30a4bac205b9e872f4391610fc39185916001600160a01b03169085906138c7565b60405180910390a163ffffffff919091166000908152606f6020526040902080546001600160a01b0319166001600160a01b03909216919091179055565b600061100d8585612dbe565b9050600061101a82610d2c565b90506001600160a01b0381166110435760405163c78835e160e01b815260040160405180910390fd5b60405163010082fd60e01b81526000906001600160a01b0383169063010082fd9061107490889088906004016136b0565b6040805180830381865afa158015611090573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b491906138ee565b9050806020015187876040516110cb929190613920565b6040518091039020146110f15760405163e1ac453160e01b815260040160405180910390fd5b611150888260000151856111058b8b612de1565b61110f8c8c612dfa565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610b5c92508f91508e9050612e16565b5050505050505050565b6000805b606a54811015611235576000606a828154811061117d5761117d61362b565b60009182526020808320909101546001600160a01b0316808352606b90915260409091205490915060ff16156112225760405163faaebd2160e01b81523060048201526001600160a01b0382169063faaebd2190602401602060405180830381865afa1580156111f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121591906138ae565b61121f9084613930565b92505b508061122d81613895565b91505061115e565b5090565b6112416129f2565b60408051606081019091526001815260208101600081526001600160a01b03831660209182018190526000908152606b8252604090208251815490151560ff19821681178355928401519192839161ff001990911661ffff19909116176101008360028111156112b3576112b36135c8565b021790555060409190910151815462010000600160b01b031916620100006001600160a01b039283160217909155606a80546001810182556000919091527f116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a510180546001600160a01b03191692909116919091179055565b848314158061133a5750848114155b1561135857604051630e52390960e41b815260040160405180910390fd5b604080518082019091526000808252602082018190529060005b87811015610b745760006113a88888848181106113915761139161362b565b90506020028101906113a39190613641565b612dbe565b90506113b381610d2c565b93506001600160a01b0384166113dc5760405163c78835e160e01b815260040160405180910390fd5b836001600160a01b031663010082fd8787858181106113fd576113fd61362b565b905060200281019061140f9190613641565b6040518363ffffffff1660e01b815260040161142c9291906136b0565b6040805180830381865afa158015611448573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146c91906138ee565b925082602001518888848181106114855761148561362b565b90506020028101906114979190613641565b6040516114a5929190613920565b6040518091039020146114cb5760405163e1ac453160e01b815260040160405180910390fd5b6115b48a8a848181106114e0576114e061362b565b905060200201358460000151836115198c8c888181106115025761150261362b565b90506020028101906115149190613641565b612de1565b6115458d8d8981811061152e5761152e61362b565b90506020028101906115409190613641565b612dfa565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610b5c8e8e8a81811061159d5761159d61362b565b90506020028101906115af9190613641565b612e16565b50806115bf81613895565b915050611372565b6115cf6129f2565b6001600160a01b0381166115f65760405163d92e233d60e01b815260040160405180910390fd5b63ffffffff82166000908152606760205260409020546001600160a01b038083169116036116375760405163a741a04560e01b815260040160405180910390fd5b63ffffffff8216600090815260676020526040908190205490517f9738de301c763a91427d836968b3504d77cf4c72624e54407b8482707897fcac9161168a9185916001600160a01b03169085906138c7565b60405180910390a163ffffffff91909116600090815260676020526040902080546001600160a01b0319166001600160a01b03909216919091179055565b6116d06129f2565b6001600160a01b0381166116f75760405163d92e233d60e01b815260040160405180910390fd5b63ffffffff82166000908152607060205260409020546001600160a01b038083169116036117385760405163a741a04560e01b815260040160405180910390fd5b63ffffffff8216600090815260706020526040908190205490517f322bac3f3084916730ad14708c0971a06f314e78ba86772c004001237f1642f69161178b9185916001600160a01b03169085906138c7565b60405180910390a163ffffffff91909116600090815260706020526040902080546001600160a01b0319166001600160a01b03909216919091179055565b6117d16129f2565b6117db6000612e40565b565b336000908152606c602052604090205460ff1661180c576040516282b42960e81b815260040160405180910390fd5b82811461182c57604051630e52390960e41b815260040160405180910390fd5b60005b83811015611924578282828181106118495761184961362b565b90506020020135606560008787858181106118665761186661362b565b905060200201602081019061187b9190613250565b63ffffffff1681526020810191909152604001600020557f3722a9f6d5cdd3d4506591f2182163eedf8e74f346faf115ae42f4f0ffdc1a1f8585838181106118c5576118c561362b565b90506020020160208101906118da9190613250565b8484848181106118ec576118ec61362b565b6040805163ffffffff90951685526020918202939093013590840152500160405180910390a18061191c81613895565b91505061182f565b5050505050565b600054610100900460ff161580801561194b5750600054600160ff909116105b806119655750303b158015611965575060005460ff166001145b6119cd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156119f0576000805461ff0019166101001790555b336000908152606c60205260409020805460ff19166001179055611a12612e92565b8015611a58576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b611a636129f2565b6000805b606a54811015611c0c576000606a8281548110611a8657611a8661362b565b6000918252602090912001546001600160a01b03169050611abf816001600160a01b03166000908152606b602052604090205460ff1690565b611ac95750611bfa565b60405163faaebd2160e01b81523060048201526000906001600160a01b0383169063faaebd2190602401602060405180830381865afa158015611b10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3491906138ae565b90508015611bf757604051637ecdf29160e11b81526001600160a01b0386811660048301526024820183905283169063fd9be52290604401600060405180830381600087803b158015611b8657600080fd5b505af1158015611b9a573d6000803e3d6000fd5b5050604080516001600160a01b038087168252891660208201529081018490527ff15a0a3784dea9b4fe33bc98e2450745e262d310237b2868ea8ef56967ff3ecb9250606001905060405180910390a1611bf48185613930565b93505b50505b80611c0481613895565b915050611a67565b5080600003610d285760405162976f7560e21b815260040160405180910390fd5b611c356129f2565b6001600160a01b038116611c5c5760405163d92e233d60e01b815260040160405180910390fd5b6069546001600160a01b03808316911603611c8a5760405163a741a04560e01b815260040160405180910390fd5b606954604080516001600160a01b03928316815291831660208301527f1abe69b439fa9d46894d9f24dc9e27392ec01df1994af5471c79d256211453cd910160405180910390a1606980546001600160a01b0319166001600160a01b0392909216919091179055565b6000606681611d056020870187613250565b63ffffffff16815260208101919091526040016000205460ff16611d5257611d306020850185613250565b604051635c12eebb60e11b815263ffffffff90911660048201526024016119c4565b336000908152606b602052604090205460ff16611d8257604051636073e9bf60e11b815260040160405180910390fd5b60656000611d936020870187613250565b63ffffffff1681526020808201929092526040016000205491507f915615b444fd15cbe20634e8d0a109373bea8c1ed15d3c503ca9e70547a4c22090611ddb90860186613250565b611deb6080870160608801613943565b611dfb60a088016080890161333a565b6040805163ffffffff90941684526001600160401b0390921660208401526001600160a01b0316908201526060810183905260800160405180910390a163ffffffff7f000000000000000000000000000000000000000000000000000000000000000016611e6c6020860186613250565b63ffffffff1603611fd65760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663402f8468611eb86115146020890189613641565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015263ffffffff7f00000000000000000000000000000000000000000000000000000000000000001660248201526044016040805180830381865afa158015611f27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4b9190613960565b5090506001600160a01b038116630223536e611f6a6020880188613641565b6040890135611f7f60808b0160608c01613943565b6040518563ffffffff1660e01b8152600401611f9e949392919061398f565b600060405180830381600087803b158015611fb857600080fd5b505af1158015611fcc573d6000803e3d6000fd5b5050505050612150565b63ffffffff7f00000000000000000000000000000000000000000000000000000000000000001661200a6020860186613250565b612016906175306139c3565b63ffffffff16036121505760006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166371ba2fd66120626115146020890189613641565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156120a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ca91906139e7565b90506001600160a01b038116630223536e6120e86020880188613641565b60408901356120fd60808b0160608c01613943565b6040518563ffffffff1660e01b815260040161211c949392919061398f565b600060405180830381600087803b15801561213657600080fd5b505af115801561214a573d6000803e3d6000fd5b50505050505b9392505050565b60008061216c6121678585612dbe565b612ec1565b1561222e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663402f84686121aa8686612de1565b6121b48787612dbe565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015263ffffffff1660248201526044016040805180830381865afa158015612202573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122269190613960565b5090506122d2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371ba2fd66122678686612de1565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156122ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122cf91906139e7565b90505b6001600160a01b038082166000908152606d6020526040902054168061230b5760405163d9931b0d60e01b815260040160405180910390fd5b6000816001600160a01b03166327d12cd96123268888612dfa565b6123308a8a612e16565b6040518463ffffffff1660e01b815260040161234e93929190613a04565b602060405180830381865afa15801561236b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061238f9190613a28565b905060018160038111156123a5576123a56135c8565b14806123c2575060028160038111156123c0576123c06135c8565b145b156123d35760019350505050610d63565b6000836001600160a01b0316633c782a526123ee8989612dfa565b6040516123fc929190613920565b604051809103902061240e8a8a612e16565b6040516001600160e01b031960e085901b168152600481019290925260248201523060448201526064016040805180830381865afa158015612454573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124789190613a54565b51979650505050505050565b61248c6129f2565b6001600160a01b0381166124b35760405163d92e233d60e01b815260040160405180910390fd5b6068546001600160a01b038083169116036124e15760405163a741a04560e01b815260040160405180910390fd5b606854604080516001600160a01b03928316815291831660208301527f46f228076186c559dfeeb080f2e41a90702c6a6d3c5b6345f050e0f958f1220b910160405180910390a1606880546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152606c602052604090205460ff16612579576040516282b42960e81b815260040160405180910390fd5b63ffffffff8216600081815260656020908152604091829020849055815192835282018390527f3722a9f6d5cdd3d4506591f2182163eedf8e74f346faf115ae42f4f0ffdc1a1f9101610d1f565b6125cf6129f2565b60405163faaebd2160e01b81523060048201526000906001600160a01b0384169063faaebd2190602401602060405180830381865afa158015612616573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263a91906138ae565b90508060000361265c5760405162976f7560e21b815260040160405180910390fd5b604051637ecdf29160e11b81526001600160a01b0383811660048301526024820183905284169063fd9be52290604401600060405180830381600087803b1580156126a657600080fd5b505af11580156126ba573d6000803e3d6000fd5b5050604080516001600160a01b038088168252861660208201529081018490527ff15a0a3784dea9b4fe33bc98e2450745e262d310237b2868ea8ef56967ff3ecb9250606001905060405180910390a1505050565b6127176129f2565b6001600160a01b03821661273e5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0382166000908152606c602052604090205481151560ff90911615150361277f5760405163a741a04560e01b815260040160405180910390fd5b6001600160a01b0382166000818152606c6020908152604091829020805460ff19168515159081179091558251938452908301527f882386da003a547e108f4013481dc50dd637ba9e2f89b0a884803db03eef247a9101610d1f565b6127e36129f2565b63ffffffff821660009081526066602052604090205481151560ff9091161515036128215760405163a741a04560e01b815260040160405180910390fd5b63ffffffff8216600081815260666020908152604091829020805460ff19168515159081179091558251938452908301527f968effd490f9188c28dc3411469f24794e98398797d621c8670c5ff1f99dd4af9101610d1f565b6128826129f2565b6001600160a01b039182166000908152606d6020526040902080546001600160a01b03191691909216179055565b6040805160608082018352600080835260208084018290528385018290526001600160a01b0386168252606b8152908490208451928301909452835460ff808216151584529394929391840191610100909104166002811115612915576129156135c8565b6002811115612926576129266135c8565b815290546201000090046001600160a01b031660209091015292915050565b63ffffffff81166000908152607060205260408120546001600160a01b031680610d635750506069546001600160a01b0316919050565b6129846129f2565b6001600160a01b0381166129e95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016119c4565b611a5881612e40565b6033546001600160a01b031633146117db5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016119c4565b6000610d63826009612ee3565b6000610d6382603d612f40565b6060610d638260006051612fa5565b6000612a80826130b2565b805190602001209050919050565b63ffffffff84166000908152606760205260409020546001600160a01b031680612ad3576040516349659b1360e01b815263ffffffff861660048201526024016119c4565b60405163254252af60e01b8152600481018890526024810187905260009081906001600160a01b0384169063254252af906044016040805180830381865afa158015612b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b479190613a95565b9150915081612b695760405163b767edf560e01b815260040160405180910390fd5b6000612b7488612ec1565b15612c1657604051630805f08d60e31b81526001600160a01b03888116600483015263ffffffff8a1660248301527f0000000000000000000000000000000000000000000000000000000000000000169063402f8468906044016040805180830381865afa158015612bea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c0e9190613960565b509050612ca3565b6040516338dd17eb60e11b81526001600160a01b0388811660048301527f000000000000000000000000000000000000000000000000000000000000000016906371ba2fd690602401602060405180830381865afa158015612c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ca091906139e7565b90505b6040516343ea4fa960e01b81526001600160a01b03888116600483015263ffffffff8a166024830152600091908316906343ea4fa990604401600060405180830381865afa158015612cf9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d219190810190613b5c565b80519091506001600160401b0316831015612d4f57604051633098e00360e11b815260040160405180910390fd5b604051630111a9b760e11b81526001600160a01b03831690630223536e90612d7f908a908a908890600401613c30565b600060405180830381600087803b158015612d9957600080fd5b505af1158015612dad573d6000803e3d6000fd5b505050505050505050505050505050565b6000612dce600d60098486613c7b565b612dd791613ca5565b60e01c9392505050565b6000612df1605160318486613c7b565b61215091613cd5565b366000612e0a6051828587613c7b565b915091505b9250929050565b6000612e2283836130ce565b604051612e30929190613920565b6040518091039020905092915050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16612eb95760405162461bcd60e51b81526004016119c490613cf3565b6117db6130de565b60006175308263ffffffff161115612edb57506001919050565b506000919050565b6000612ef0826004613930565b83511015612f375760405162461bcd60e51b8152602060048201526014602482015273746f55696e7433325f6f75744f66426f756e647360601b60448201526064016119c4565b50016004015190565b6000612f4d826014613930565b83511015612f955760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b60448201526064016119c4565b500160200151600160601b900490565b606081612fb381601f613930565b1015612ff25760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016119c4565b612ffc8284613930565b845110156130405760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016119c4565b60608215801561305f57604051915060008252602082016040526130a9565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015613098578051835260209283019201613080565b5050858452601f01601f1916604052505b50949350505050565b6060610d6360518084516130c69190613d3e565b849190612fa5565b366000612e0a8360518187613c7b565b600054610100900460ff166131055760405162461bcd60e51b81526004016119c490613cf3565b6117db33612e40565b803563ffffffff8116811461312257600080fd5b919050565b6001600160a01b0381168114611a5857600080fd5b6000806040838503121561314f57600080fd5b6131588361310e565b9150602083013561316881613127565b809150509250929050565b60008083601f84011261318557600080fd5b5081356001600160401b0381111561319c57600080fd5b6020830191508360208260051b8501011115612e0f57600080fd5b600080600080600080606087890312156131d057600080fd5b86356001600160401b03808211156131e757600080fd5b6131f38a838b01613173565b9098509650602089013591508082111561320c57600080fd5b6132188a838b01613173565b9096509450604089013591508082111561323157600080fd5b5061323e89828a01613173565b979a9699509497509295939492505050565b60006020828403121561326257600080fd5b6121508261310e565b6001600160401b0381168114611a5857600080fd5b60008083601f84011261329257600080fd5b5081356001600160401b038111156132a957600080fd5b602083019150836020828501011115612e0f57600080fd5b6000806000806000608086880312156132d957600080fd5b6132e28661310e565b945060208601356132f28161326b565b9350604086013561330281613127565b925060608601356001600160401b0381111561331d57600080fd5b61332988828901613280565b969995985093965092949392505050565b60006020828403121561334c57600080fd5b813561215081613127565b6000806000806060858703121561336d57600080fd5b8435935061337d6020860161310e565b925060408501356001600160401b0381111561339857600080fd5b6133a487828801613280565b95989497509550505050565b6000806000806000606086880312156133c857600080fd5b8535945060208601356001600160401b03808211156133e657600080fd5b6133f289838a01613280565b9096509450604088013591508082111561340b57600080fd5b5061332988828901613280565b6000806000806040858703121561342e57600080fd5b84356001600160401b038082111561344557600080fd5b61345188838901613173565b9096509450602087013591508082111561346a57600080fd5b506133a487828801613173565b60008060006040848603121561348c57600080fd5b83356001600160401b03808211156134a357600080fd5b9085019060a082880312156134b757600080fd5b909350602085013590808211156134cd57600080fd5b506134da86828701613280565b9497909650939450505050565b600080602083850312156134fa57600080fd5b82356001600160401b0381111561351057600080fd5b61351c85828601613280565b90969095509350505050565b6000806040838503121561353b57600080fd5b6135448361310e565b946020939093013593505050565b6000806040838503121561356557600080fd5b823561315881613127565b8015158114611a5857600080fd5b6000806040838503121561359157600080fd5b823561359c81613127565b9150602083013561316881613570565b600080604083850312156135bf57600080fd5b61359c8361310e565b634e487b7160e01b600052602160045260246000fd5b815115158152602082015160608201906003811061360c57634e487b7160e01b600052602160045260246000fd5b60208301526040928301516001600160a01b0316929091019190915290565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261365857600080fd5b8301803591506001600160401b0382111561367257600080fd5b602001915036819003821315612e0f57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260006136c4602083018486613687565b949350505050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715613704576137046136cc565b60405290565b604080519081016001600160401b0381118282101715613704576137046136cc565b60405160c081016001600160401b0381118282101715613704576137046136cc565b604051601f8201601f191681016001600160401b0381118282101715613776576137766136cc565b604052919050565b60005b83811015613799578181015183820152602001613781565b50506000910152565b600060208083850312156137b557600080fd5b82516001600160401b03808211156137cc57600080fd5b90840190606082870312156137e057600080fd5b6137e86136e2565b82518152838301516137f981613127565b8185015260408301518281111561380f57600080fd5b80840193505086601f84011261382457600080fd5b825182811115613836576138366136cc565b613848601f8201601f1916860161374e565b9250808352878582860101111561385e57600080fd5b61386d8186850187870161377e565b50604081019190915295945050505050565b634e487b7160e01b600052601160045260246000fd5b6000600182016138a7576138a761387f565b5060010190565b6000602082840312156138c057600080fd5b5051919050565b63ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60006040828403121561390057600080fd5b61390861370a565b82518152602083015160208201528091505092915050565b8183823760009101908152919050565b80820180821115610d6357610d6361387f565b60006020828403121561395557600080fd5b81356121508161326b565b6000806040838503121561397357600080fd5b825161397e81613127565b602084015190925061316881613570565b6060815260006139a3606083018688613687565b90508360208301526001600160401b038316604083015295945050505050565b63ffffffff8181168382160190808211156139e0576139e061387f565b5092915050565b6000602082840312156139f957600080fd5b815161215081613127565b604081526000613a18604083018587613687565b9050826020830152949350505050565b600060208284031215613a3a57600080fd5b81516004811061215057600080fd5b80516131228161326b565b600060408284031215613a6657600080fd5b613a6e61370a565b8251613a7981613570565b81526020830151613a898161326b565b60208201529392505050565b60008060408385031215613aa857600080fd5b8251613ab381613570565b6020939093015192949293505050565b805160ff8116811461312257600080fd5b600082601f830112613ae557600080fd5b815160206001600160401b03821115613b0057613b006136cc565b8160051b613b0f82820161374e565b9283528481018201928281019087851115613b2957600080fd5b83870192505b84831015613b51578251613b4281613127565b82529183019190830190613b2f565b979650505050505050565b600060208284031215613b6e57600080fd5b81516001600160401b0380821115613b8557600080fd5b9083019060c08286031215613b9957600080fd5b613ba161372c565b613baa83613a49565b8152613bb860208401613ac3565b6020820152613bc960408401613ac3565b6040820152613bda60608401613ac3565b6060820152608083015182811115613bf157600080fd5b613bfd87828601613ad4565b60808301525060a083015182811115613c1557600080fd5b613c2187828601613ad4565b60a08301525095945050505050565b6060815260008451806060840152613c4f81608085016020890161377e565b6020830194909452506001600160401b039190911660408201526080601f909201601f19160101919050565b60008085851115613c8b57600080fd5b83861115613c9857600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015613ccd5780818660040360031b1b83161692505b505092915050565b80356020831015610d6357600019602084900360031b1b1692915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b81810381811115610d6357610d6361387f56fea2646970667358221220574d890d967ac8368819e94d2f1a39aaff670f1ee6a766c64f08f8e630189a9164736f6c634300081200330000000000000000000000001a44076050125825900e736c501f859c50fe728c00000000000000000000000066a71dcef29a0ffbdbe3c6a460a3b5bc225cd675