60a06040523060805234801561001457600080fd5b50608051614db861004560003960008181610272015281816102bb0152818161036d01526103ad0152614db86000f3fe6080604052600436106100c25760003560e01c80638da5cb5b1161007f578063c4d66de811610059578063c4d66de8146101e6578063e8db370614610206578063f2fde38b14610226578063fca94d2b1461024657600080fd5b80638da5cb5b14610192578063996517cf146101b05780639e6a1d7d146101c657600080fd5b80631f7b6d32146100c75780632be1fa1e146100f05780633659cfe6146101285780633c3b33b11461014a5780634f1ef2861461016a578063715018a61461017d575b600080fd5b3480156100d357600080fd5b506100dd60fc5481565b6040519081526020015b60405180910390f35b3480156100fc57600080fd5b5060fd54610110906001600160a01b031681565b6040516001600160a01b0390911681526020016100e7565b34801561013457600080fd5b506101486101433660046113ca565b610268565b005b34801561015657600080fd5b506101106101653660046113e5565b610339565b6101486101783660046114b5565b610363565b34801561018957600080fd5b5061014861041c565b34801561019e57600080fd5b506065546001600160a01b0316610110565b3480156101bc57600080fd5b506100dd60fe5481565b3480156101d257600080fd5b506101486101e13660046113e5565b610452565b3480156101f257600080fd5b506101486102013660046113ca565b610481565b34801561021257600080fd5b50610110610221366004611593565b610520565b34801561023257600080fd5b506101486102413660046113ca565b6107a6565b34801561025257600080fd5b5061025b61083e565b6040516100e791906116ac565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036102b95760405162461bcd60e51b81526004016102b0906116f9565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166102eb6108a0565b6001600160a01b0316146103115760405162461bcd60e51b81526004016102b090611745565b61031a816108ce565b60408051600080825260208201909252610336918391906108f8565b50565b60fb818154811061034957600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103ab5760405162461bcd60e51b81526004016102b0906116f9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166103dd6108a0565b6001600160a01b0316146104035760405162461bcd60e51b81526004016102b090611745565b61040c826108ce565b610418828260016108f8565b5050565b6065546001600160a01b031633146104465760405162461bcd60e51b81526004016102b090611791565b6104506000610a43565b565b6065546001600160a01b0316331461047c5760405162461bcd60e51b81526004016102b090611791565b60fe55565b600054610100900460ff168061049a575060005460ff16155b6104b65760405162461bcd60e51b81526004016102b0906117c6565b600054610100900460ff161580156104d8576000805461ffff19166101011790555b6104e0610a95565b6104e8610b10565b6104f0610b6f565b60fd80546001600160a01b0319166001600160a01b0384161790558015610418576000805461ff00191690555050565b60006002600154036105745760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102b0565b600260015560fe54158061058c575060fe5460fb5411155b6105d85760405162461bcd60e51b815260206004820152601a60248201527f4e46543a3a4d696e74696e67206c696d6974207265616368656400000000000060448201526064016102b0565b6105e58489898686610bd6565b61062a5760405162461bcd60e51b81526020600482015260166024820152754e46543a3a494e56414c49445f5349474e415455524560501b60448201526064016102b0565b6000604051610638906113a1565b604051809103906000f080158015610654573d6000803e3d6000fd5b509050806001600160a01b031663ca598eb28d8d8d8d8c8c3360fd60009054906101000a90046001600160a01b03166040518963ffffffff1660e01b81526004016106a6989796959493929190611864565b600060405180830381600087803b1580156106c057600080fd5b505af11580156106d4573d6000803e3d6000fd5b505060fb80546001808201835560009283527f3e7257b7272bb46d49cd6019b04ddee20da7c0cb13f7c1ec3391291b2ccebabc90910180546001600160a01b0319166001600160a01b03871617905560fc8054919450925061073790849061191c565b92505081905550336001600160a01b0316816001600160a01b03167f4d871e742f3fbcc333f6946193bfc2dcbcf35d2224b6f485af8c45b5d429d5598e8e8e8e8c4260405161078b9695949392919061193d565b60405180910390a3600180559b9a5050505050505050505050565b6065546001600160a01b031633146107d05760405162461bcd60e51b81526004016102b090611791565b6001600160a01b0381166108355760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102b0565b61033681610a43565b606060fb80548060200260200160405190810160405280929190818152602001828054801561089657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610878575b5050505050905090565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6065546001600160a01b031633146103365760405162461bcd60e51b81526004016102b090611791565b60006109026108a0565b905061090d84610cf2565b60008351118061091a5750815b1561092b576109298484610d97565b505b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143805460ff16610a3c57805460ff191660011781556040516001600160a01b03831660248201526109aa90869060440160408051601f198184030181529190526020810180516001600160e01b0316631b2ce7f360e11b179052610d97565b50805460ff191681556109bb6108a0565b6001600160a01b0316826001600160a01b031614610a335760405162461bcd60e51b815260206004820152602f60248201527f45524331393637557067726164653a207570677261646520627265616b73206660448201526e75727468657220757067726164657360881b60648201526084016102b0565b610a3c85610e84565b5050505050565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1680610aae575060005460ff16155b610aca5760405162461bcd60e51b81526004016102b0906117c6565b600054610100900460ff16158015610aec576000805461ffff19166101011790555b610af4610ec4565b610afc610f2e565b8015610336576000805461ff001916905550565b600054610100900460ff1680610b29575060005460ff16155b610b455760405162461bcd60e51b81526004016102b0906117c6565b600054610100900460ff16158015610b67576000805461ffff19166101011790555b610afc610f8e565b600054610100900460ff1680610b88575060005460ff16155b610ba45760405162461bcd60e51b81526004016102b0906117c6565b600054610100900460ff16158015610bc6576000805461ffff19166101011790555b610bce610ec4565b610afc610ec4565b6000336001600160a01b03871614610c275760405162461bcd60e51b81526020600482015260146024820152734e46543a3a57524f4e475f43414e44494441544560601b60448201526064016102b0565b60408051606088811b6bffffffffffffffffffffffff19908116602080850191909152603484018a9052605484018990523090921b166074830152466088808401919091528351808403909101815260a8830184528051908201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000060c884015260e4808401829052845180850390910181526101049093019093528151910120836001600160a01b0316610cdc8287610ffd565b6001600160a01b03161498975050505050505050565b803b610d565760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102b0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060823b610df65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102b0565b600080846001600160a01b031684604051610e119190611995565b600060405180830381855af49150503d8060008114610e4c576040519150601f19603f3d011682016040523d82523d6000602084013e610e51565b606091505b5091509150610e798282604051806060016040528060278152602001614d5c60279139611021565b925050505b92915050565b610e8d81610cf2565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b600054610100900460ff1680610edd575060005460ff16155b610ef95760405162461bcd60e51b81526004016102b0906117c6565b600054610100900460ff16158015610afc576000805461ffff19166101011790558015610336576000805461ff001916905550565b600054610100900460ff1680610f47575060005460ff16155b610f635760405162461bcd60e51b81526004016102b0906117c6565b600054610100900460ff16158015610f85576000805461ffff19166101011790555b610afc33610a43565b600054610100900460ff1680610fa7575060005460ff16155b610fc35760405162461bcd60e51b81526004016102b0906117c6565b600054610100900460ff16158015610fe5576000805461ffff19166101011790555b600180558015610336576000805461ff001916905550565b600080600061100c8585611061565b91509150611019816110cf565b509392505050565b6060831561103057508161105a565b8251156110405782518084602001fd5b8160405162461bcd60e51b81526004016102b091906119b1565b9392505050565b60008082516041036110975760208301516040840151606085015160001a61108b87828585611285565b945094505050506110c8565b82516040036110c057602083015160408401516110b5868383611372565b9350935050506110c8565b506000905060025b9250929050565b60008160048111156110e3576110e36119c4565b036110eb5750565b60018160048111156110ff576110ff6119c4565b0361114c5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016102b0565b6002816004811115611160576111606119c4565b036111ad5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016102b0565b60038160048111156111c1576111c16119c4565b036112195760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016102b0565b600481600481111561122d5761122d6119c4565b036103365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016102b0565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156112bc5750600090506003611369565b8460ff16601b141580156112d457508460ff16601c14155b156112e55750600090506004611369565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611339573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661136257600060019250925050611369565b9150600090505b94509492505050565b6000806001600160ff1b03831660ff84901c601b0161139387828885611285565b935093505050935093915050565b613381806119db83390190565b80356001600160a01b03811681146113c557600080fd5b919050565b6000602082840312156113dc57600080fd5b61105a826113ae565b6000602082840312156113f757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561143d5761143d6113fe565b604052919050565b600082601f83011261145657600080fd5b813567ffffffffffffffff811115611470576114706113fe565b611483601f8201601f1916602001611414565b81815284602083860101111561149857600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156114c857600080fd5b6114d1836113ae565b9150602083013567ffffffffffffffff8111156114ed57600080fd5b6114f985828601611445565b9150509250929050565b600082601f83011261151457600080fd5b8135602067ffffffffffffffff821115611530576115306113fe565b8160051b61153f828201611414565b928352848101820192828101908785111561155957600080fd5b83870192505b848310156115785782358252918301919083019061155f565b979650505050505050565b803580151581146113c557600080fd5b6000806000806000806000806000806101408b8d0312156115b357600080fd5b8a3567ffffffffffffffff808211156115cb57600080fd5b6115d78e838f01611445565b9b5060208d01359150808211156115ed57600080fd5b6115f98e838f01611445565b9a5060408d013591508082111561160f57600080fd5b61161b8e838f01611445565b995060608d0135985060808d0135975060a08d013591508082111561163f57600080fd5b61164b8e838f01611503565b965061165960c08e01611583565b955061166760e08e016113ae565b94506101008d013591508082111561167e57600080fd5b5061168b8d828e01611445565b92505061169b6101208c016113ae565b90509295989b9194979a5092959850565b6020808252825182820181905260009190848201906040850190845b818110156116ed5783516001600160a01b0316835292840192918401916001016116c8565b50909695505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60005b8381101561182f578181015183820152602001611817565b50506000910152565b60008151808452611850816020860160208601611814565b601f01601f19169290920160200192915050565b60006101008083526118788184018c611838565b905060208382038185015261188d828c611838565b915083820360408501526118a1828b611838565b606085018a905284810360808601528851808252828a0193509082019060005b818110156118dd578451835293830193918301916001016118c1565b505087151560a086015292506118f1915050565b6001600160a01b03841660c08301526001600160a01b03831660e08301529998505050505050505050565b80820180821115610e7e57634e487b7160e01b600052601160045260246000fd5b60c08152600061195060c0830189611838565b82810360208401526119628189611838565b905082810360408401526119768188611838565b60608401969096525050911515608083015260a0909101529392505050565b600082516119a7818460208701611814565b9190910192915050565b60208152600061105a6020830184611838565b634e487b7160e01b600052602160045260246000fdfe60a06040523060805234801561001457600080fd5b5060805161333c61004560003960008181610968015281816109a801528181610a4b0152610a8b015261333c6000f3fe6080604052600436106101cd5760003560e01c806355f804b3116100f7578063a0712d6811610095578063c87b56dd11610064578063c87b56dd1461051e578063ca598eb21461053e578063e985e9c51461055e578063f2fde38b146105a757600080fd5b8063a0712d681461049e578063a22cb465146104be578063b88d4fde146104de578063bcce515d146104fe57600080fd5b806370a08231116100d157806370a0823114610436578063715018a6146104565780638da5cb5b1461046b57806395d89b411461048957600080fd5b806355f804b3146103e15780636352211e146104015780636c0360eb1461042157600080fd5b80632f745c591161016f57806342842e0e1161013e57806342842e0e1461037357806346b45af7146103935780634f1ef286146103ae5780634f6ccce7146103c157600080fd5b80632f745c59146102e857806332cb6b0c146103085780633659cfe61461031f5780634214f62a1461033f57600080fd5b8063095ea7b3116101ab578063095ea7b31461026157806318160ddd1461028357806323b872dd146102a25780632be1fa1e146102c257600080fd5b806301ffc9a7146101d257806306fdde0314610207578063081812fc14610229575b600080fd5b3480156101de57600080fd5b506101f26101ed36600461291c565b6105c7565b60405190151581526020015b60405180910390f35b34801561021357600080fd5b5061021c6105d8565b6040516101fe9190612989565b34801561023557600080fd5b5061024961024436600461299c565b61066a565b6040516001600160a01b0390911681526020016101fe565b34801561026d57600080fd5b5061028161027c3660046129d1565b610704565b005b34801561028f57600080fd5b506099545b6040519081526020016101fe565b3480156102ae57600080fd5b506102816102bd3660046129fb565b610892565b3480156102ce57600080fd5b50610192546102499061010090046001600160a01b031681565b3480156102f457600080fd5b506102946103033660046129d1565b6108c8565b34801561031457600080fd5b506102946101935481565b34801561032b57600080fd5b5061028161033a366004612a37565b61095e565b34801561034b57600080fd5b5060408051808201909152600b81526a10d85cdd1c9d5b4813919560aa1b602082015261021c565b34801561037f57600080fd5b5061028161038e3660046129fb565b610a26565b34801561039f57600080fd5b50610192546101f29060ff1681565b6102816103bc366004612b09565b610a41565b3480156103cd57600080fd5b506102946103dc36600461299c565b610afa565b3480156103ed57600080fd5b506102816103fc366004612b57565b610b8d565b34801561040d57600080fd5b5061024961041c36600461299c565b610bc4565b34801561042d57600080fd5b5061021c610c3b565b34801561044257600080fd5b50610294610451366004612a37565b610c4b565b34801561046257600080fd5b50610281610cd2565b34801561047757600080fd5b5060c9546001600160a01b0316610249565b34801561049557600080fd5b5061021c610d08565b3480156104aa57600080fd5b506102816104b936600461299c565b610d17565b3480156104ca57600080fd5b506102816104d9366004612ba5565b610e39565b3480156104ea57600080fd5b506102816104f9366004612bdc565b610fba565b34801561050a57600080fd5b50610281610519366004612cc4565b610fec565b34801561052a57600080fd5b5061021c61053936600461299c565b61113e565b34801561054a57600080fd5b50610281610559366004612cf9565b611219565b34801561056a57600080fd5b506101f2610579366004612de2565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b3480156105b357600080fd5b506102816105c2366004612a37565b61135a565b60006105d2826113f2565b92915050565b6060606580546105e790612e15565b80601f016020809104026020016040519081016040528092919081815260200182805461061390612e15565b80156106605780601f1061063557610100808354040283529160200191610660565b820191906000526020600020905b81548152906001019060200180831161064357829003601f168201915b5050505050905090565b6000818152606760205260408120546001600160a01b03166106e85760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152606960205260409020546001600160a01b031690565b600061019260019054906101000a90046001600160a01b031690506000816001600160a01b03166351fb012d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561075f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107839190612e4f565b9050801561088257604051634d8c928d60e11b81526001600160a01b03858116600483015260009190841690639b19251a90602401602060405180830381865afa1580156107d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f99190612e4f565b9050808061080e57506001600160a01b038516155b6108805760405162461bcd60e51b815260206004820152603860248201527f4e46543a3a417070726f76616c2063616e206f6e6c7920626520676976656e2060448201527f746f2077686974656c697374656420616464726573736573000000000000000060648201526084016106df565b505b61088c8484611417565b50505050565b61089c3382611527565b6108b85760405162461bcd60e51b81526004016106df90612e6c565b6108c383838361161e565b505050565b60006108d383610c4b565b82106109355760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016106df565b506001600160a01b03919091166000908152609760209081526040808320938352929052205490565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109a65760405162461bcd60e51b81526004016106df90612ebd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109d86117c9565b6001600160a01b0316146109fe5760405162461bcd60e51b81526004016106df90612f09565b610a07816117f7565b60408051600080825260208201909252610a2391839190611821565b50565b6108c383838360405180602001604052806000815250610fba565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a895760405162461bcd60e51b81526004016106df90612ebd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610abb6117c9565b6001600160a01b031614610ae15760405162461bcd60e51b81526004016106df90612f09565b610aea826117f7565b610af682826001611821565b5050565b6000610b0560995490565b8210610b685760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016106df565b60998281548110610b7b57610b7b612f55565b90600052602060002001549050919050565b60c9546001600160a01b03163314610bb75760405162461bcd60e51b81526004016106df90612f6b565b610191610af68282612fee565b6000818152606760205260408120546001600160a01b0316806105d25760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b60648201526084016106df565b606061019180546105e790612e15565b60006001600160a01b038216610cb65760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b60648201526084016106df565b506001600160a01b031660009081526068602052604090205490565b60c9546001600160a01b03163314610cfc5760405162461bcd60e51b81526004016106df90612f6b565b610d06600061196c565b565b6060606680546105e790612e15565b600260fb5403610d695760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106df565b600260fb5560c9546001600160a01b03163314610d985760405162461bcd60e51b81526004016106df90612f6b565b6101925460ff16610deb5760405162461bcd60e51b815260206004820152601960248201527f4e46543a3a4d696e74206973206e6f7420656e61626c65642e0000000000000060448201526064016106df565b6000610df660995490565b61019354909150610e088260016130c4565b1115610e265760405162461bcd60e51b81526004016106df906130d7565b610e3033836119be565b5050600160fb55565b600061019260019054906101000a90046001600160a01b031690506000816001600160a01b03166351fb012d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb89190612e4f565b9050808015610ec45750825b15610fb057604051634d8c928d60e11b81526001600160a01b03858116600483015260009190841690639b19251a90602401602060405180830381865afa158015610f13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f379190612e4f565b905080610fae576040805162461bcd60e51b81526020600482015260248101919091527f4e46543a3a417070726f76616c20666f7220616c6c2063616e206f6e6c79206260448201527f6520676976656e20746f2077686974656c69737465642061646472657373657360648201526084016106df565b505b61088c84846119d8565b610fc43383611527565b610fe05760405162461bcd60e51b81526004016106df90612e6c565b61088c848484846119e3565b600260fb540361103e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106df565b600260fb5560c9546001600160a01b0316331461106d5760405162461bcd60e51b81526004016106df90612f6b565b6101925460ff166110b75760405162461bcd60e51b815260206004820152601460248201527326b4b73a1034b9903737ba1032b730b13632b21760611b60448201526064016106df565b60006110c260995490565b9050610193548251826110d591906130c4565b11156110f35760405162461bcd60e51b81526004016106df906130d7565b60005b8251811015611134576111223384838151811061111557611115612f55565b60200260200101516119be565b8061112c8161311a565b9150506110f6565b5050600160fb5550565b6000818152606760205260409020546060906001600160a01b03166111bd5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016106df565b60006111c7610c3b565b905060008151116111e75760405180602001604052806000815250611212565b806111f184611a16565b604051602001611202929190613133565b6040516020818303038152906040525b9392505050565b600054610100900460ff1680611232575060005460ff16155b61124e5760405162461bcd60e51b81526004016106df90613162565b600054610100900460ff16158015611270576000805461ffff19166101011790555b61127a8989611b17565b611282611b9e565b61128a611c21565b611292611c88565b61129a611ce7565b6101916112a78882612fee565b50610193869055610192805460ff191685151517905584518610156112de5760405162461bcd60e51b81526004016106df906130d7565b60005b8551811015611312576113008487838151811061111557611115612f55565b8061130a8161311a565b9150506112e1565b5061131c8361135a565b6101928054610100600160a81b0319166101006001600160a01b03851602179055801561134f576000805461ff00191690555b505050505050505050565b60c9546001600160a01b031633146113845760405162461bcd60e51b81526004016106df90612f6b565b6001600160a01b0381166113e95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106df565b610a238161196c565b60006001600160e01b0319821663780e9d6360e01b14806105d257506105d282611d45565b600061142282610bc4565b9050806001600160a01b0316836001600160a01b03160361148f5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016106df565b336001600160a01b03821614806114ab57506114ab8133610579565b61151d5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016106df565b6108c38383611d95565b6000818152606760205260408120546001600160a01b03166115a05760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016106df565b60006115ab83610bc4565b9050806001600160a01b0316846001600160a01b031614806115e65750836001600160a01b03166115db8461066a565b6001600160a01b0316145b8061161657506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b031661163182610bc4565b6001600160a01b0316146116995760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b60648201526084016106df565b6001600160a01b0382166116fb5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016106df565b611706838383611e03565b611711600082611d95565b6001600160a01b038316600090815260686020526040812080546001929061173a9084906131b0565b90915550506001600160a01b03821660009081526068602052604081208054600192906117689084906130c4565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b60c9546001600160a01b03163314610a235760405162461bcd60e51b81526004016106df90612f6b565b600061182b6117c9565b905061183684611fa4565b6000835111806118435750815b15611854576118528484612049565b505b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143805460ff1661196557805460ff191660011781556040516001600160a01b03831660248201526118d390869060440160408051601f198184030181529190526020810180516001600160e01b0316631b2ce7f360e11b179052612049565b50805460ff191681556118e46117c9565b6001600160a01b0316826001600160a01b03161461195c5760405162461bcd60e51b815260206004820152602f60248201527f45524331393637557067726164653a207570677261646520627265616b73206660448201526e75727468657220757067726164657360881b60648201526084016106df565b61196585612134565b5050505050565b60c980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610af6828260405180602001604052806000815250612174565b610af63383836121a7565b6119ee84848461161e565b6119fa84848484612275565b61088c5760405162461bcd60e51b81526004016106df906131c3565b606081600003611a3d5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611a675780611a518161311a565b9150611a609050600a8361322b565b9150611a41565b60008167ffffffffffffffff811115611a8257611a82612a52565b6040519080825280601f01601f191660200182016040528015611aac576020820181803683370190505b5090505b841561161657611ac16001836131b0565b9150611ace600a8661323f565b611ad99060306130c4565b60f81b818381518110611aee57611aee612f55565b60200101906001600160f81b031916908160001a905350611b10600a8661322b565b9450611ab0565b600054610100900460ff1680611b30575060005460ff16155b611b4c5760405162461bcd60e51b81526004016106df90613162565b600054610100900460ff16158015611b6e576000805461ffff19166101011790555b611b76612376565b611b7e612376565b611b8883836123e0565b80156108c3576000805461ff0019169055505050565b600054610100900460ff1680611bb7575060005460ff16155b611bd35760405162461bcd60e51b81526004016106df90613162565b600054610100900460ff16158015611bf5576000805461ffff19166101011790555b611bfd612376565b611c05612376565b611c0d612376565b8015610a23576000805461ff001916905550565b600054610100900460ff1680611c3a575060005460ff16155b611c565760405162461bcd60e51b81526004016106df90613162565b600054610100900460ff16158015611c78576000805461ffff19166101011790555b611c80612376565b611c0d612467565b600054610100900460ff1680611ca1575060005460ff16155b611cbd5760405162461bcd60e51b81526004016106df90613162565b600054610100900460ff16158015611cdf576000805461ffff19166101011790555b611c0d6124c7565b600054610100900460ff1680611d00575060005460ff16155b611d1c5760405162461bcd60e51b81526004016106df90613162565b600054610100900460ff16158015611bfd576000805461ffff1916610101179055611c05612376565b60006001600160e01b031982166380ac58cd60e01b1480611d7657506001600160e01b03198216635b5e139f60e01b145b806105d257506301ffc9a760e01b6001600160e01b03198316146105d2565b600081815260696020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611dca82610bc4565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6001600160a01b0383161580611e2057506001600160a01b038216155b15611e30576108c3838383612537565b600061019260019054906101000a90046001600160a01b031690506000816001600160a01b03166351fb012d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eaf9190612e4f565b90508015611f9957604051634d8c928d60e11b81523360048201526000906001600160a01b03841690639b19251a90602401602060405180830381865afa158015611efe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f229190612e4f565b905080611f975760405162461bcd60e51b815260206004820152603b60248201527f4e46543a3a4d61726b6574706c61636573206d7573742062652077686974656c60448201527f697374656420746f20696e697469617465207472616e7366657273000000000060648201526084016106df565b505b611965858585612537565b803b6120085760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016106df565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060823b6120a85760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016106df565b600080846001600160a01b0316846040516120c39190613253565b600060405180830381855af49150503d80600081146120fe576040519150601f19603f3d011682016040523d82523d6000602084013e612103565b606091505b509150915061212b82826040518060600160405280602781526020016132e0602791396125ef565b95945050505050565b61213d81611fa4565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b61217e8383612628565b61218b6000848484612275565b6108c35760405162461bcd60e51b81526004016106df906131c3565b816001600160a01b0316836001600160a01b0316036122085760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016106df565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60006001600160a01b0384163b1561236b57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906122b990339089908890889060040161326f565b6020604051808303816000875af19250505080156122f4575060408051601f3d908101601f191682019092526122f1918101906132ac565b60015b612351573d808015612322576040519150601f19603f3d011682016040523d82523d6000602084013e612327565b606091505b5080516000036123495760405162461bcd60e51b81526004016106df906131c3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611616565b506001949350505050565b600054610100900460ff168061238f575060005460ff16155b6123ab5760405162461bcd60e51b81526004016106df90613162565b600054610100900460ff16158015611c0d576000805461ffff19166101011790558015610a23576000805461ff001916905550565b600054610100900460ff16806123f9575060005460ff16155b6124155760405162461bcd60e51b81526004016106df90613162565b600054610100900460ff16158015612437576000805461ffff19166101011790555b60656124438482612fee565b5060666124508382612fee565b5080156108c3576000805461ff0019169055505050565b600054610100900460ff1680612480575060005460ff16155b61249c5760405162461bcd60e51b81526004016106df90613162565b600054610100900460ff161580156124be576000805461ffff19166101011790555b611c0d3361196c565b600054610100900460ff16806124e0575060005460ff16155b6124fc5760405162461bcd60e51b81526004016106df90613162565b600054610100900460ff1615801561251e576000805461ffff19166101011790555b600160fb558015610a23576000805461ff001916905550565b6001600160a01b0383166125925761258d81609980546000838152609a60205260408120829055600182018355919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b6125b5565b816001600160a01b0316836001600160a01b0316146125b5576125b58382612776565b6001600160a01b0382166125cc576108c381612813565b826001600160a01b0316826001600160a01b0316146108c3576108c382826128c2565b606083156125fe575081611212565b82511561260e5782518084602001fd5b8160405162461bcd60e51b81526004016106df9190612989565b6001600160a01b03821661267e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016106df565b6000818152606760205260409020546001600160a01b0316156126e35760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016106df565b6126ef60008383611e03565b6001600160a01b03821660009081526068602052604081208054600192906127189084906130c4565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000600161278384610c4b565b61278d91906131b0565b6000838152609860205260409020549091508082146127e0576001600160a01b03841660009081526097602090815260408083208584528252808320548484528184208190558352609890915290208190555b5060009182526098602090815260408084208490556001600160a01b039094168352609781528383209183525290812055565b609954600090612825906001906131b0565b6000838152609a60205260408120546099805493945090928490811061284d5761284d612f55565b90600052602060002001549050806099838154811061286e5761286e612f55565b6000918252602080832090910192909255828152609a909152604080822084905585825281205560998054806128a6576128a66132c9565b6001900381819060005260206000200160009055905550505050565b60006128cd83610c4b565b6001600160a01b039093166000908152609760209081526040808320868452825280832085905593825260989052919091209190915550565b6001600160e01b031981168114610a2357600080fd5b60006020828403121561292e57600080fd5b813561121281612906565b60005b8381101561295457818101518382015260200161293c565b50506000910152565b60008151808452612975816020860160208601612939565b601f01601f19169290920160200192915050565b602081526000611212602083018461295d565b6000602082840312156129ae57600080fd5b5035919050565b80356001600160a01b03811681146129cc57600080fd5b919050565b600080604083850312156129e457600080fd5b6129ed836129b5565b946020939093013593505050565b600080600060608486031215612a1057600080fd5b612a19846129b5565b9250612a27602085016129b5565b9150604084013590509250925092565b600060208284031215612a4957600080fd5b611212826129b5565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612a9157612a91612a52565b604052919050565b600082601f830112612aaa57600080fd5b813567ffffffffffffffff811115612ac457612ac4612a52565b612ad7601f8201601f1916602001612a68565b818152846020838601011115612aec57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215612b1c57600080fd5b612b25836129b5565b9150602083013567ffffffffffffffff811115612b4157600080fd5b612b4d85828601612a99565b9150509250929050565b600060208284031215612b6957600080fd5b813567ffffffffffffffff811115612b8057600080fd5b61161684828501612a99565b8015158114610a2357600080fd5b80356129cc81612b8c565b60008060408385031215612bb857600080fd5b612bc1836129b5565b91506020830135612bd181612b8c565b809150509250929050565b60008060008060808587031215612bf257600080fd5b612bfb856129b5565b9350612c09602086016129b5565b925060408501359150606085013567ffffffffffffffff811115612c2c57600080fd5b612c3887828801612a99565b91505092959194509250565b600082601f830112612c5557600080fd5b8135602067ffffffffffffffff821115612c7157612c71612a52565b8160051b612c80828201612a68565b9283528481018201928281019087851115612c9a57600080fd5b83870192505b84831015612cb957823582529183019190830190612ca0565b979650505050505050565b600060208284031215612cd657600080fd5b813567ffffffffffffffff811115612ced57600080fd5b61161684828501612c44565b600080600080600080600080610100898b031215612d1657600080fd5b883567ffffffffffffffff80821115612d2e57600080fd5b612d3a8c838d01612a99565b995060208b0135915080821115612d5057600080fd5b612d5c8c838d01612a99565b985060408b0135915080821115612d7257600080fd5b612d7e8c838d01612a99565b975060608b0135965060808b0135915080821115612d9b57600080fd5b50612da88b828c01612c44565b945050612db760a08a01612b9a565b9250612dc560c08a016129b5565b9150612dd360e08a016129b5565b90509295985092959890939650565b60008060408385031215612df557600080fd5b612dfe836129b5565b9150612e0c602084016129b5565b90509250929050565b600181811c90821680612e2957607f821691505b602082108103612e4957634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215612e6157600080fd5b815161121281612b8c565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b601f8211156108c357600081815260208120601f850160051c81016020861015612fc75750805b601f850160051c820191505b81811015612fe657828155600101612fd3565b505050505050565b815167ffffffffffffffff81111561300857613008612a52565b61301c816130168454612e15565b84612fa0565b602080601f83116001811461305157600084156130395750858301515b600019600386901b1c1916600185901b178555612fe6565b600085815260208120601f198616915b8281101561308057888601518255948401946001909101908401613061565b508582101561309e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b808201808211156105d2576105d26130ae565b60208082526023908201527f4e46543a3a4d696e74656420776f756c6420657863656564206d617820746f6b604082015262656e7360e81b606082015260800190565b60006001820161312c5761312c6130ae565b5060010190565b60008351613145818460208801612939565b835190830190613159818360208801612939565b01949350505050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b818103818111156105d2576105d26130ae565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261323a5761323a613215565b500490565b60008261324e5761324e613215565b500690565b60008251613265818460208701612939565b9190910192915050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906132a29083018461295d565b9695505050505050565b6000602082840312156132be57600080fd5b815161121281612906565b634e487b7160e01b600052603160045260246000fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220780b7a9bfe0ac264688f11c3b3bf53696250db0ec83421ef85ed85facdecb89d64736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122054ec41fbcd2af04ca10244f03adb8f953d48a939affc6a01911b63dff146526764736f6c63430008130033