60806040526008805461ffff60a01b191661320560a11b1790556000600c553480156200002b57600080fd5b50604051620050d7380380620050d78339810160408190526200004e9162000d7c565b888860006200005e838262000f33565b5060016200006d828262000f33565b5050506200008a620000846200015360201b60201c565b62000157565b6006805460ff60a01b191690556001600755600880546001600160a81b031916600160a01b60ff8416026001600160a01b031916176001600160a01b038416179055620000d88686620001a9565b600d620000e6888262000f33565b50620000f2846200024d565b60005b835181101562000143576200012e84828151811062000118576200011862000fff565b60200260200101516001620003b260201b60201c565b806200013a8162001015565b915050620000f5565b5050505050505050505062001068565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b620001b36200041b565b6001600160a01b0382166200021f5760405162461bcd60e51b815260206004820152602760248201527f446973706174636820616464726573732063616e6e6f74206265206e756c6c206044820152666164647265737360c81b60648201526084015b60405180910390fd5b600980546001600160a01b039384166001600160a01b031991821617909155600a8054929093169116179055565b6006546001600160a01b03163314806200027b5750336000908152600b602052604090205460ff1615156001145b620002cd5760405162461bcd60e51b815260206004820152602c6024820152600080516020620050b783398151915260448201526b3a32b21030b2323932b9b99760a11b606482015260840162000216565b620002d762000479565b60005b8151811015620003ae5762000399828281518110620002fd57620002fd62000fff565b6020026020010151600001518383815181106200031e576200031e62000fff565b6020026020010151604001518484815181106200033f576200033f62000fff565b60200260200101516080015185858151811062000360576200036062000fff565b602002602001015160a0015186868151811062000381576200038162000fff565b602002602001015160c00151620004cf60201b60201c565b80620003a58162001015565b915050620002da565b5050565b620003bc6200041b565b6001600160a01b0382166000818152600b6020908152604091829020805460ff191685151590811790915591519182527fb840a1dbd8b09a3dc45161bba92dfb9aba643c0e44c085a447f839d1d02cf13b910160405180910390a25050565b6006546001600160a01b03163314620004775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000216565b565b6200048d600654600160a01b900460ff1690565b15620004775760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640162000216565b6006546001600160a01b0316331480620004fd5750336000908152600b602052604090205460ff1615156001145b6200054f5760405162461bcd60e51b815260206004820152602c6024820152600080516020620050b783398151915260448201526b3a32b21030b2323932b9b99760a11b606482015260840162000216565b6200055962000479565b600e80549060006200056b8362001015565b9091555050600e54620005839086868686866200058a565b5050505050565b6006546001600160a01b0316331480620005b85750336000908152600b602052604090205460ff1615156001145b6200060a5760405162461bcd60e51b815260206004820152602c6024820152600080516020620050b783398151915260448201526b3a32b21030b2323932b9b99760a11b606482015260840162000216565b6200061462000479565b6200061e62000a33565b600e548611156200068b5760405162461bcd60e51b815260206004820152603060248201527f6e65772070726f6475637473206d75737420757365206372656174654e65775060448201526f3937b23ab1ba10333ab731ba34b7b71760811b606482015260840162000216565b6000835111620007045760405162461bcd60e51b815260206004820152603e60248201527f70726f64756374436f6c6c656374696f6e5572692069732061206e656365737360448201527f61727920636f6e646974696f6e20666f7220616e792070726f647563742e0000606482015260840162000216565b8015620007e2576040516301ffc9a760e01b8152636cdb3d1360e11b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa15801562000757573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200077d91906200103d565b620007dc5760405162461bcd60e51b815260206004820152602860248201527f4d757374207573652045524331313535206164647265737320776974682061206044820152673a37b5b2b724a21760c11b606482015260840162000216565b620008c5565b6001600160a01b03821615620008c5576040516301ffc9a760e01b81526380ac58cd60e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa1580156200083e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200086491906200103d565b620008c55760405162461bcd60e51b815260206004820152602a60248201527f4d7573742075736520455243373231206164647265737320776974686f75742060448201526930903a37b5b2b724a21760b11b606482015260840162000216565b6040518060e001604052808681526020016011600089815260200190815260200160002060010154815260200185815260200160116000898152602001908152602001600020600301548152602001848152602001836001600160a01b0316815260200182815250601160008881526020019081526020016000206000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040190816200097f919062000f33565b5060a0828101516005830180546001600160a01b0319166001600160a01b0392831617905560c093840151600690930192909255600089815260116020908152604091829020600181015460039091015483518c8152928301919091528183018a9052606082015292861660808401529082018490525188927fa53c0adbaf8a2485c730b832ac266634bab632b2ede02a05c01cda6367e44399928290030190a262000a2b6001600755565b505050505050565b60026007540362000a875760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640162000216565b6002600755565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b038111828210171562000ac95762000ac962000a8e565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000afa5762000afa62000a8e565b604052919050565b600082601f83011262000b1457600080fd5b81516001600160401b0381111562000b305762000b3062000a8e565b602062000b46601f8301601f1916820162000acf565b828152858284870101111562000b5b57600080fd5b60005b8381101562000b7b57858101830151828201840152820162000b5e565b506000928101909101919091529392505050565b6001600160a01b038116811462000ba557600080fd5b50565b805162000bb58162000b8f565b919050565b60006001600160401b0382111562000bd65762000bd662000a8e565b5060051b60200190565b600082601f83011262000bf257600080fd5b8151602062000c0b62000c058362000bba565b62000acf565b82815260059290921b8401810191818101908684111562000c2b57600080fd5b8286015b8481101562000cf25780516001600160401b038082111562000c515760008081fd5b9088019060e0828b03601f190181131562000c6c5760008081fd5b62000c7662000aa4565b87840151815260408085015189830152606080860151828401526080915081860151818401525060a0808601518581111562000cb25760008081fd5b62000cc28f8c838a010162000b02565b838501525060c0945062000cd885870162000ba8565b908301525092015190820152835291830191830162000c2f565b509695505050505050565b600082601f83011262000d0f57600080fd5b8151602062000d2262000c058362000bba565b82815260059290921b8401810191818101908684111562000d4257600080fd5b8286015b8481101562000cf257805162000d5c8162000b8f565b835291830191830162000d46565b805160ff8116811462000bb557600080fd5b60008060008060008060008060006101208a8c03121562000d9c57600080fd5b89516001600160401b038082111562000db457600080fd5b62000dc28d838e0162000b02565b9a5060208c015191508082111562000dd957600080fd5b62000de78d838e0162000b02565b995060408c015191508082111562000dfe57600080fd5b62000e0c8d838e0162000b02565b985062000e1c60608d0162000ba8565b975062000e2c60808d0162000ba8565b965060a08c015191508082111562000e4357600080fd5b62000e518d838e0162000be0565b955060c08c015191508082111562000e6857600080fd5b5062000e778c828d0162000cfd565b93505062000e8860e08b0162000ba8565b915062000e996101008b0162000d6a565b90509295985092959850929598565b600181811c9082168062000ebd57607f821691505b60208210810362000ede57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000f2e57600081815260208120601f850160051c8101602086101562000f0d5750805b601f850160051c820191505b8181101562000a2b5782815560010162000f19565b505050565b81516001600160401b0381111562000f4f5762000f4f62000a8e565b62000f678162000f60845462000ea8565b8462000ee4565b602080601f83116001811462000f9f576000841562000f865750858301515b600019600386901b1c1916600185901b17855562000a2b565b600085815260208120601f198616915b8281101562000fd05788860151825594840194600190910190840162000faf565b508582101562000fef5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b6000600182016200103657634e487b7160e01b600052601160045260246000fd5b5060010190565b6000602082840312156200105057600080fd5b815180151581146200106157600080fd5b9392505050565b61403f80620010786000396000f3fe60806040526004361061027d5760003560e01c8063715018a61161014f578063b88d4fde116100c1578063c87b56dd1161007a578063c87b56dd14610792578063da541e09146107b2578063e4623c1b146107d2578063e4d57be5146107f2578063e985e9c514610813578063f2fde38b1461083357600080fd5b8063b88d4fde146106c0578063bed20a87146106e0578063c166d13d146106f5578063c1c8526414610725578063c6e64e5314610752578063c7c4dd771461076557600080fd5b806384c5e8241161011357806384c5e824146106225780638da5cb5b1461063757806395d89b411461065557806398bdf6f51461066a578063a22cb46514610680578063a74a28d6146106a057600080fd5b8063715018a61461057a578063767c0f011461058f578063780bd3f1146105af5780637b337a36146105e25780637fb5bb771461060257600080fd5b80633570aa26116101f357806355f804b3116101ac57806355f804b3146104a85780635c975abb146104c857806360ebfee6146104e75780636352211e1461051a578063701812a71461053a57806370a082311461055a57600080fd5b80633570aa26146103f55780633d099196146104155780634228ff481461042857806342842e0e1461044857806342966c68146104685780634690a1f51461048857600080fd5b806318160ddd1161024557806318160ddd146103575780631a497d2b1461036c578063217c498d1461038c57806323b872dd146103ac578063278ecde1146103cc578063342ae8c6146103df57600080fd5b806301ffc9a71461028257806306fdde03146102b7578063081812fc146102d9578063095ea7b314610311578063129c02dd14610333575b600080fd5b34801561028e57600080fd5b506102a261029d3660046131ad565b610853565b60405190151581526020015b60405180910390f35b3480156102c357600080fd5b506102cc6108a5565b6040516102ae919061321a565b3480156102e557600080fd5b506102f96102f436600461322d565b610937565b6040516001600160a01b0390911681526020016102ae565b34801561031d57600080fd5b5061033161032c36600461326b565b61095e565b005b34801561033f57600080fd5b50610349600c5481565b6040519081526020016102ae565b34801561036357600080fd5b50600f54610349565b34801561037857600080fd5b5061033161038736600461337c565b610a78565b34801561039857600080fd5b506103316103a73660046133e6565b610af5565b3480156103b857600080fd5b506103316103c736600461341f565b610b91565b6103316103da36600461322d565b610bc2565b3480156103eb57600080fd5b50610349600e5481565b34801561040157600080fd5b50600a546102f9906001600160a01b031681565b610331610423366004613460565b610d2c565b34801561043457600080fd5b5061033161044336600461322d565b610daa565b34801561045457600080fd5b5061033161046336600461341f565b610db7565b34801561047457600080fd5b5061033161048336600461322d565b610dd2565b34801561049457600080fd5b506103316104a33660046134e5565b610e96565b3480156104b457600080fd5b506103316104c3366004613618565b610fa7565b3480156104d457600080fd5b50600654600160a01b900460ff166102a2565b3480156104f357600080fd5b5060085461050890600160a81b900460ff1681565b60405160ff90911681526020016102ae565b34801561052657600080fd5b506102f961053536600461322d565b610fbb565b34801561054657600080fd5b5061033161055536600461364c565b61101b565b34801561056657600080fd5b5061034961057536600461366f565b6110c0565b34801561058657600080fd5b50610331611146565b34801561059b57600080fd5b506103316105aa36600461368c565b61115a565b3480156105bb57600080fd5b506105cf6105ca36600461322d565b6115ac565b6040516102ae9796959493929190613702565b3480156105ee57600080fd5b506103316105fd36600461375a565b61167b565b34801561060e57600080fd5b5061034961061d366004613788565b6116e2565b34801561062e57600080fd5b506102cc611818565b34801561064357600080fd5b506006546001600160a01b03166102f9565b34801561066157600080fd5b506102cc6118a6565b34801561067657600080fd5b50610349600f5481565b34801561068c57600080fd5b5061033161069b36600461375a565b6118b5565b3480156106ac57600080fd5b506009546102f9906001600160a01b031681565b3480156106cc57600080fd5b506103316106db3660046137aa565b6118c0565b3480156106ec57600080fd5b506103316118f8565b34801561070157600080fd5b506102a261071036600461366f565b600b6020526000908152604090205460ff1681565b34801561073157600080fd5b5061034961074036600461322d565b60106020526000908152604090205481565b610331610760366004613829565b611982565b34801561077157600080fd5b5061078561078036600461322d565b6119f8565b6040516102ae9190613878565b34801561079e57600080fd5b506102cc6107ad36600461322d565b611b68565b3480156107be57600080fd5b506103316107cd3660046138e8565b611ce7565b3480156107de57600080fd5b506103316107ed366004613905565b611d05565b3480156107fe57600080fd5b5060085461050890600160a01b900460ff1681565b34801561081f57600080fd5b506102a261082e3660046133e6565b611d96565b34801561083f57600080fd5b5061033161084e36600461366f565b611df4565b60006001600160e01b031982166380ac58cd60e01b148061088457506001600160e01b03198216635b5e139f60e01b145b8061089f57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108b490613995565b80601f01602080910402602001604051908101604052809291908181526020018280546108e090613995565b801561092d5780601f106109025761010080835404028352916020019161092d565b820191906000526020600020905b81548152906001019060200180831161091057829003601f168201915b5050505050905090565b600061094282611e6a565b506000908152600460205260409020546001600160a01b031690565b600061096982610fbb565b9050806001600160a01b0316836001600160a01b0316036109db5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806109f757506109f78133611d96565b610a695760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016109d2565b610a738383611ec9565b505050565b6006546001600160a01b0316331480610aa55750336000908152600b602052604090205460ff1615156001145b610ac15760405162461bcd60e51b81526004016109d2906139cf565b610ac9611f37565b600e8054906000610ad983613a31565b9190505550610aee600e54868686868661115a565b5050505050565b610afd611f84565b6001600160a01b038216610b635760405162461bcd60e51b815260206004820152602760248201527f446973706174636820616464726573732063616e6e6f74206265206e756c6c206044820152666164647265737360c81b60648201526084016109d2565b600980546001600160a01b039384166001600160a01b031991821617909155600a8054929093169116179055565b610b9b3382611fde565b610bb75760405162461bcd60e51b81526004016109d290613a4a565b610a7383838361203d565b6006546001600160a01b0316331480610bef5750336000908152600b602052604090205460ff1615156001145b610c0b5760405162461bcd60e51b81526004016109d2906139cf565b610c13611f37565b610c1b6121ae565b6000818152600260205260409020546001600160a01b0316610c3c82610dd2565b600082815260106020908152604080832054835260119091529020600190810154610c6691612207565b600083815260106020908152604080832054835260119091528082206001019290925590516001600160a01b0383169034908381818185875af1925050503d8060008114610cd0576040519150601f19603f3d011682016040523d82523d6000602084013e610cd5565b606091505b5050905080610d1d5760405162461bcd60e51b81526020600482015260146024820152734661696c656420746f2073656e642066756e647360601b60448201526064016109d2565b5050610d296001600755565b50565b838360018210158015610d60575060008181526011602052604090206002810154600190910154610d5d9084612213565b11155b610d7c5760405162461bcd60e51b81526004016109d290613a97565b610d846121ae565b610d8c611f37565b610d988686858761221f565b610da26001600755565b505050505050565b610db2611f84565b600c55565b610a73838383604051806020016040528060008152506118c0565b6006546001600160a01b0316331480610dff5750336000908152600b602052604090205460ff1615156001145b610e1b5760405162461bcd60e51b81526004016109d2906139cf565b610e23611f37565b610e2c81611e6a565b600081815260106020526040902054610e4490612583565b60008181526010602090815260408083205483526011909152902060030154610e6e906001612213565b60008281526010602090815260408083205483526011909152902060030155610d29816125ee565b6006546001600160a01b0316331480610ec35750336000908152600b602052604090205460ff1615156001145b610edf5760405162461bcd60e51b81526004016109d2906139cf565b610ee7611f37565b60005b8151811015610fa357610f91828281518110610f0857610f08613ada565b602002602001015160000151838381518110610f2657610f26613ada565b602002602001015160400151848481518110610f4457610f44613ada565b602002602001015160800151858581518110610f6257610f62613ada565b602002602001015160a00151868681518110610f8057610f80613ada565b602002602001015160c00151610a78565b80610f9b81613a31565b915050610eea565b5050565b610faf611f84565b600d610fa38282613b36565b6000818152600260205260408120546001600160a01b03168061089f5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109d2565b611023611f84565b60648160ff16106110765760405162461bcd60e51b815260206004820152601960248201527f63616e6e6f74207365742061206665652061626f76652039390000000000000060448201526064016109d2565b6008805460ff60a01b1916600160a01b60ff8416908102919091179091556040517f3b45ac5335d21c47c35e4f865ab1795264f1536f4469084781a739b9a5e5d2b090600090a250565b60006001600160a01b03821661112a5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109d2565b506001600160a01b031660009081526003602052604090205490565b61114e611f84565b6111586000612691565b565b6006546001600160a01b03163314806111875750336000908152600b602052604090205460ff1615156001145b6111a35760405162461bcd60e51b81526004016109d2906139cf565b6111ab611f37565b6111b36121ae565b600e5486111561121e5760405162461bcd60e51b815260206004820152603060248201527f6e65772070726f6475637473206d75737420757365206372656174654e65775060448201526f3937b23ab1ba10333ab731ba34b7b71760811b60648201526084016109d2565b60008351116112955760405162461bcd60e51b815260206004820152603e60248201527f70726f64756374436f6c6c656374696f6e5572692069732061206e656365737360448201527f61727920636f6e646974696f6e20666f7220616e792070726f647563742e000060648201526084016109d2565b801561136c576040516301ffc9a760e01b8152636cdb3d1360e11b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa1580156112e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130a9190613bf5565b6113675760405162461bcd60e51b815260206004820152602860248201527f4d757374207573652045524331313535206164647265737320776974682061206044820152673a37b5b2b724a21760c11b60648201526084016109d2565b611449565b6001600160a01b03821615611449576040516301ffc9a760e01b81526380ac58cd60e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa1580156113c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ea9190613bf5565b6114495760405162461bcd60e51b815260206004820152602a60248201527f4d7573742075736520455243373231206164647265737320776974686f75742060448201526930903a37b5b2b724a21760b11b60648201526084016109d2565b6040518060e001604052808681526020016011600089815260200190815260200160002060010154815260200185815260200160116000898152602001908152602001600020600301548152602001848152602001836001600160a01b0316815260200182815250601160008881526020019081526020016000206000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040190816115019190613b36565b5060a0828101516005830180546001600160a01b0319166001600160a01b0392831617905560c093840151600690930192909255600089815260116020908152604091829020600181015460039091015483518c8152928301919091528183018a9052606082015292861660808401529082018490525188927fa53c0adbaf8a2485c730b832ac266634bab632b2ede02a05c01cda6367e44399928290030190a2610da26001600755565b6011602052600090815260409020805460018201546002830154600384015460048501805494959394929391926115e290613995565b80601f016020809104026020016040519081016040528092919081815260200182805461160e90613995565b801561165b5780601f106116305761010080835404028352916020019161165b565b820191906000526020600020905b81548152906001019060200180831161163e57829003601f168201915b50505050600583015460069093015491926001600160a01b031691905087565b611683611f84565b6001600160a01b0382166000818152600b6020908152604091829020805460ff191685151590811790915591519182527fb840a1dbd8b09a3dc45161bba92dfb9aba643c0e44c085a447f839d1d02cf13b910160405180910390a25050565b60006116ed82612583565b60085460408051633fabe5a360e21b815290516000926001600160a01b03169163feaf968c9160048083019260a09291908290030181865afa158015611737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175b9190613c2c565b50505091505060008112156117b25760405162461bcd60e51b815260206004820152601860248201527f70726963652063616e6e6f74206265206e65676174697665000000000000000060448201526064016109d2565b600854600084815260116020526040812054839261180291600160a81b90910460ff16906117f6906305f5e100906117fc9087908490670de0b6b3a76400006126e3565b906126ef565b906126e3565b905061180e81876126e3565b9695505050505050565b600d805461182590613995565b80601f016020809104026020016040519081016040528092919081815260200182805461185190613995565b801561189e5780601f106118735761010080835404028352916020019161189e565b820191906000526020600020905b81548152906001019060200180831161188157829003601f168201915b505050505081565b6060600180546108b490613995565b610fa33383836126fb565b6118ca3383611fde565b6118e65760405162461bcd60e51b81526004016109d290613a4a565b6118f2848484846127c9565b50505050565b6006546001600160a01b03163314806119255750336000908152600b602052604090205460ff1615156001145b6119415760405162461bcd60e51b81526004016109d2906139cf565b600f54604080516000815260208101929092527f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c91015b60405180910390a1565b8282600182101580156119b65750600081815260116020526040902060028101546001909101546119b39084612213565b11155b6119d25760405162461bcd60e51b81526004016109d290613a97565b6119da6121ae565b6119e2611f37565b6119ee8585338661221f565b610aee6001600755565b611a416040518060e00160405280600081526020016000815260200160008152602001600081526020016060815260200160006001600160a01b03168152602001600081525090565b600082815260106020526040902054611a5990612583565b60116000601060008581526020019081526020016000205481526020019081526020016000206040518060e001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482018054611ac290613995565b80601f0160208091040260200160405190810160405280929190818152602001828054611aee90613995565b8015611b3b5780601f10611b1057610100808354040283529160200191611b3b565b820191906000526020600020905b815481529060010190602001808311611b1e57829003601f168201915b505050918352505060058201546001600160a01b0316602082015260069091015460409091015292915050565b6060611b7382611e6a565b600082815260106020526040902054611b8b90612583565b600082815260106020908152604080832054835260118252808320815160e0810183528154815260018201549381019390935260028101549183019190915260038101546060830152600481018054608084019190611be990613995565b80601f0160208091040260200160405190810160405280929190818152602001828054611c1590613995565b8015611c625780601f10611c3757610100808354040283529160200191611c62565b820191906000526020600020905b815481529060010190602001808311611c4557829003601f168201915b505050918352505060058201546001600160a01b031660208201526006909101546040909101529050600d611c96306127fc565b6080830151600086815260106020526040902054611cb390612812565b611cbc87612812565b604051602001611cd0959493929190613c98565b604051602081830303815290604052915050919050565b611cef611f84565b8015611cfd57610d296128a4565b610d296128ff565b6006546001600160a01b0316331480611d325750336000908152600b602052604090205460ff1615156001145b611d4e5760405162461bcd60e51b81526004016109d2906139cf565b611d56611f37565b60005b8151811015610fa357611d84828281518110611d7757611d77613ada565b6020026020010151610dd2565b80611d8e81613a31565b915050611d59565b6001600160a01b0381166000908152600b602052604081205460ff161515600103611dc35750600161089f565b6001600160a01b0380841660009081526005602090815260408083209386168352929052205460ff165b9392505050565b611dfc611f84565b6001600160a01b038116611e615760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109d2565b610d2981612691565b6000818152600260205260409020546001600160a01b0316610d295760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109d2565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611efe82610fbb565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600654600160a01b900460ff16156111585760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016109d2565b6006546001600160a01b031633146111585760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109d2565b600080611fea83610fbb565b9050806001600160a01b0316846001600160a01b0316148061201157506120118185611d96565b806120355750836001600160a01b031661202a84610937565b6001600160a01b0316145b949350505050565b826001600160a01b031661205082610fbb565b6001600160a01b0316146120765760405162461bcd60e51b81526004016109d290613d70565b6001600160a01b0382166120d85760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109d2565b6120e5838383600161293b565b826001600160a01b03166120f882610fbb565b6001600160a01b03161461211e5760405162461bcd60e51b81526004016109d290613d70565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6002600754036122005760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109d2565b6002600755565b6000611ded8284613db5565b6000611ded8284613dc8565b600061222b85856116e2565b9050803410156122745760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21030b6b7bab73a103830b4b21760611b60448201526064016109d2565b6000848152601160205260409020600501546001600160a01b03161561249557600084815260116020526040902060060154156123ac5760008481526011602052604080822060058101546006909101549151627eeac760e11b81526001600160a01b038781166004830152602482019390935291169062fdd58e90604401602060405180830381865afa158015612310573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123349190613ddb565b116123a75760405162461bcd60e51b815260206004820152603760248201527f41646472657373206c61636b732074686520726571756972656420313135352060448201527f746f6b656e20676174652062616c616e6365203e20312e00000000000000000060648201526084016109d2565b612495565b6000848152601160205260408082206005015490516370a0823160e01b81526001600160a01b038681166004830152909116906370a0823190602401602060405180830381865afa158015612405573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124299190613ddb565b116124955760405162461bcd60e51b815260206004820152603660248201527f41646472657373206c61636b732074686520726571756972656420373231207460448201527537b5b2b71033b0ba32903130b630b731b2901f10189760511b60648201526084016109d2565b34156124a3576124a361294a565b6000848152601160205260409020600101546124bf9086612213565b6000858152601160205260408120600101919091555b85811015610da257600f80549060006124ed83613a31565b9091555050600f8054600090815260106020526040902086905554612513908590612b44565b600f54600086815260116020526040902086917f742d174ef4c6e426f5f84aa20c697c59735a206837ec50e907cf1c1c7c563e3b9187918a9161255688846126ef565b8960405161256996959493929190613df4565b60405180910390a28061257b81613a31565b9150506124d5565b6000818152601160205260408120600401805461259f90613995565b905011610d295760405162461bcd60e51b815260206004820152601c60248201527f546869732070726f6475637420646f6573206e6f742065786973742e0000000060448201526064016109d2565b60006125f982610fbb565b905061260981600084600161293b565b61261282610fbb565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000611ded8284613f17565b6000611ded8284613f2e565b816001600160a01b0316836001600160a01b03160361275c5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109d2565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6127d484848461203d565b6127e084848484612b5e565b6118f25760405162461bcd60e51b81526004016109d290613f50565b606061089f6001600160a01b0383166014612c5f565b6060600061281f83612dfa565b60010190506000816001600160401b0381111561283e5761283e613297565b6040519080825280601f01601f191660200182016040528015612868576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461287257509392505050565b6128ac611f37565b6006805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586128e73390565b6040516001600160a01b039091168152602001611978565b612907612ed2565b6006805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336128e7565b6129458184612f22565b6118f2565b600a546001600160a01b03166129f4576009546040516000916001600160a01b03169034908381818185875af1925050503d80600081146129a7576040519150601f19603f3d011682016040523d82523d6000602084013e6129ac565b606091505b5050905080610d295760405162461bcd60e51b81526020600482015260146024820152734661696c656420746f2073656e642066756e647360601b60448201526064016109d2565b600854600090612a16906064906117f6903490600160a01b900460ff166126e3565b90506000612a243483612207565b6009546040519192506000916001600160a01b039091169084908381818185875af1925050503d8060008114612a76576040519150601f19603f3d011682016040523d82523d6000602084013e612a7b565b606091505b5050600a546040519192506000916001600160a01b039091169084908381818185875af1925050503d8060008114612acf576040519150601f19603f3d011682016040523d82523d6000602084013e612ad4565b606091505b50509050818015612ae25750805b6118f25760405162461bcd60e51b815260206004820152602d60248201527f4661696c656420746f2073656e642066756e647320746f20646973706174636860448201526c08185b99081b595c98da185b9d609a1b60648201526084016109d2565b610fa3828260405180602001604052806000815250612fcb565b60006001600160a01b0384163b15612c5457604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612ba2903390899088908890600401613fa2565b6020604051808303816000875af1925050508015612bdd575060408051601f3d908101601f19168201909252612bda91810190613fd5565b60015b612c3a573d808015612c0b576040519150601f19603f3d011682016040523d82523d6000602084013e612c10565b606091505b508051600003612c325760405162461bcd60e51b81526004016109d290613f50565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612035565b506001949350505050565b60606000612c6e836002613f17565b612c79906002613dc8565b6001600160401b03811115612c9057612c90613297565b6040519080825280601f01601f191660200182016040528015612cba576020820181803683370190505b509050600360fc1b81600081518110612cd557612cd5613ada565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612d0457612d04613ada565b60200101906001600160f81b031916908160001a9053506000612d28846002613f17565b612d33906001613dc8565b90505b6001811115612dab576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612d6757612d67613ada565b1a60f81b828281518110612d7d57612d7d613ada565b60200101906001600160f81b031916908160001a90535060049490941c93612da481613ff2565b9050612d36565b508315611ded5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016109d2565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310612e395772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612e65576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310612e8357662386f26fc10000830492506010015b6305f5e1008310612e9b576305f5e100830492506008015b6127108310612eaf57612710830492506004015b60648310612ec1576064830492506002015b600a831061089f5760010192915050565b600654600160a01b900460ff166111585760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016109d2565b6000600c54118015612f3c57506001600160a01b03811615155b15610fa357600c54612f5783612f51846110c0565b90612213565b1115610fa35760405162461bcd60e51b815260206004820152603f60248201527f43616e6e6f742065786365656420746865206d617853746f726542616c616e6360448201527f65416c6c6f77616e636520666f72206120676976656e20616464726573732e0060648201526084016109d2565b612fd58383612ffe565b612fe26000848484612b5e565b610a735760405162461bcd60e51b81526004016109d290613f50565b6001600160a01b0382166130545760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109d2565b6000818152600260205260409020546001600160a01b0316156130b95760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109d2565b6130c760008383600161293b565b6000818152600260205260409020546001600160a01b03161561312c5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109d2565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b031981168114610d2957600080fd5b6000602082840312156131bf57600080fd5b8135611ded81613197565b60005b838110156131e55781810151838201526020016131cd565b50506000910152565b600081518084526132068160208601602086016131ca565b601f01601f19169290920160200192915050565b602081526000611ded60208301846131ee565b60006020828403121561323f57600080fd5b5035919050565b6001600160a01b0381168114610d2957600080fd5b803561326681613246565b919050565b6000806040838503121561327e57600080fd5b823561328981613246565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b03811182821017156132cf576132cf613297565b60405290565b604051601f8201601f191681016001600160401b03811182821017156132fd576132fd613297565b604052919050565b60006001600160401b0383111561331e5761331e613297565b613331601f8401601f19166020016132d5565b905082815283838301111561334557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261336d57600080fd5b611ded83833560208501613305565b600080600080600060a0868803121561339457600080fd5b853594506020860135935060408601356001600160401b038111156133b857600080fd5b6133c48882890161335c565b93505060608601356133d581613246565b949793965091946080013592915050565b600080604083850312156133f957600080fd5b823561340481613246565b9150602083013561341481613246565b809150509250929050565b60008060006060848603121561343457600080fd5b833561343f81613246565b9250602084013561344f81613246565b929592945050506040919091013590565b6000806000806080858703121561347657600080fd5b843593506020850135925060408501356001600160401b0381111561349a57600080fd5b6134a68782880161335c565b92505060608501356134b781613246565b939692955090935050565b60006001600160401b038211156134db576134db613297565b5060051b60200190565b600060208083850312156134f857600080fd5b82356001600160401b038082111561350f57600080fd5b818501915085601f83011261352357600080fd5b8135613536613531826134c2565b6132d5565b81815260059190911b8301840190848101908883111561355557600080fd5b8585015b8381101561360b5780358581111561357057600080fd5b860160e0818c03601f190112156135875760008081fd5b61358f6132ad565b8882013581526040808301358a830152606080840135828401526080915081840135818401525060a080840135898111156135ca5760008081fd5b6135d88f8d8388010161335c565b838501525060c091506135ec82850161325b565b9083015260e09290920135918101919091528352918601918601613559565b5098975050505050505050565b60006020828403121561362a57600080fd5b81356001600160401b0381111561364057600080fd5b6120358482850161335c565b60006020828403121561365e57600080fd5b813560ff81168114611ded57600080fd5b60006020828403121561368157600080fd5b8135611ded81613246565b60008060008060008060c087890312156136a557600080fd5b86359550602087013594506040870135935060608701356001600160401b038111156136d057600080fd5b6136dc89828a0161335c565b93505060808701356136ed81613246565b8092505060a087013590509295509295509295565b87815286602082015285604082015284606082015260e06080820152600061372d60e08301866131ee565b6001600160a01b039490941660a08301525060c0015295945050505050565b8015158114610d2957600080fd5b6000806040838503121561376d57600080fd5b823561377881613246565b915060208301356134148161374c565b6000806040838503121561379b57600080fd5b50508035926020909101359150565b600080600080608085870312156137c057600080fd5b84356137cb81613246565b935060208501356137db81613246565b92506040850135915060608501356001600160401b038111156137fd57600080fd5b8501601f8101871361380e57600080fd5b61381d87823560208401613305565b91505092959194509250565b60008060006060848603121561383e57600080fd5b833592506020840135915060408401356001600160401b0381111561386257600080fd5b61386e8682870161335c565b9150509250925092565b60208152815160208201526020820151604082015260408201516060820152606082015160808201526000608083015160e060a08401526138bd6101008401826131ee565b60a08501516001600160a01b031660c0858101919091529094015160e0909301929092525090919050565b6000602082840312156138fa57600080fd5b8135611ded8161374c565b6000602080838503121561391857600080fd5b82356001600160401b0381111561392e57600080fd5b8301601f8101851361393f57600080fd5b803561394d613531826134c2565b81815260059190911b8201830190838101908783111561396c57600080fd5b928401925b8284101561398a57833582529284019290840190613971565b979650505050505050565b600181811c908216806139a957607f821691505b6020821081036139c957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602c908201527f4d75737420626520746865206f776e6572206f722062652077686974656c697360408201526b3a32b21030b2323932b9b99760a11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600060018201613a4357613a43613a1b565b5060010190565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60208082526023908201527f43616e6e6f74206578636565642070726f6475637420746f74616c2073757070604082015262363c9760e91b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b601f821115610a7357600081815260208120601f850160051c81016020861015613b175750805b601f850160051c820191505b81811015610da257828155600101613b23565b81516001600160401b03811115613b4f57613b4f613297565b613b6381613b5d8454613995565b84613af0565b602080601f831160018114613b985760008415613b805750858301515b600019600386901b1c1916600185901b178555610da2565b600085815260208120601f198616915b82811015613bc757888601518255948401946001909101908401613ba8565b5085821015613be55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215613c0757600080fd5b8151611ded8161374c565b805169ffffffffffffffffffff8116811461326657600080fd5b600080600080600060a08688031215613c4457600080fd5b613c4d86613c12565b9450602086015193506040860151925060608601519150613c7060808701613c12565b90509295509295909350565b60008151613c8e8185602086016131ca565b9290920192915050565b6000808754613ca681613995565b60018281168015613cbe5760018114613cd357613d02565b60ff1984168752821515830287019450613d02565b8b60005260208060002060005b85811015613cf95781548a820152908401908201613ce0565b50505082870194505b50602f60f81b845289519250613d1e8382860160208d016131ca565b613d61613d5b613d48613d55613d48613d4286898b0101602f60f81b815260010190565b8e613c7c565b602f60f81b815260010190565b8b613c7c565b88613c7c565b9b9a5050505050505050505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b8181038181111561089f5761089f613a1b565b8082018082111561089f5761089f613a1b565b600060208284031215613ded57600080fd5b5051919050565b60018060a01b038716815260006020878184015286604084015260c06060840152855460c084015260018087015460e0850152600287015461010085015260038701546101208501526004870160e061014086015260008154613e5681613995565b806101a08901526101c085831660008114613e785760018114613e9257613ec0565b60ff1984168a83015282151560051b8a0182019450613ec0565b856000528760002060005b84811015613eb85781548c8201850152908801908901613e9d565b8b0183019550505b5050505060058901546001600160a01b03166001600160a01b0381166101608801529350600689015461018087015287608087015285810360a0870152613f0781886131ee565b9c9b505050505050505050505050565b808202811582820484141761089f5761089f613a1b565b600082613f4b57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061180e908301846131ee565b600060208284031215613fe757600080fd5b8151611ded81613197565b60008161400157614001613a1b565b50600019019056fea2646970667358221220343957976f080b973c388b1f000cd214d180fcfc893e25f784787de20bbe0c2964736f6c634300081100334d75737420626520746865206f776e6572206f722062652077686974656c69730000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000174d0a47fc6e7e2bb6bb7aad7d05c5380c5c5b20000000000000000000000000d8fbc75dfc8562e4807cb5e08ac1abdbe723be9e000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000003a00000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000025426f797320436c75622053746f72652028706f7765726564206279204469737061746368290000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008424f5953434c5542000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004468747470733a2f2f64697370617463682d656e676167656d656e742d6170692d73746167696e672e64697370617463682e636f2f70726f647563742f657468657265756d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000652c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000176d61696e2d6368617261637465722d6e65636b6c6163650000000000000000000000000000000000000000000000000000000000000000000000000000000007000000000000000000000000d6fa132a7bb86a732cb0292ee269e67b2e59b116000000000000000000000000fea1761dc4179d39285350d5c55baa4c28dad6f20000000000000000000000000d908b104339370be7e5e20a572533752f01c17f000000000000000000000000b89597cbd7d9c97c12dd2f59cedb57427f3c10e50000000000000000000000006bcb562df0b0d94e3460b7c4700c605006b90711000000000000000000000000bde0cb3f7d30a3e1b5071ca6df7bace994a9aa020000000000000000000000001c0bdf2380013fe93894128424c2b9cdd2466a24