0x608060405234801561001057600080fd5b5061001961001e565b6100de565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100dc576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b611bc0806100ed6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806377a24f3611610104578063a4f9fdd0116100a2578063d547741f11610071578063d547741f1461041b578063dd62ed3e1461042e578063e46be16c14610441578063e77d1b8b1461045457600080fd5b8063a4f9fdd0146103bd578063a9059cbb146103e0578063c6d29f7a146103f3578063d53913931461040657600080fd5b806391d14854116100de57806391d148541461038757806395d89b411461039a578063a217fddf146103a2578063a457c2d7146103aa57600080fd5b806377a24f361461034e57806379cc67901461036157806388d695b21461037457600080fd5b80632f2ff15d1161017c57806340c10f191161014b57806340c10f19146102ec57806342966c68146102ff57806370134eb91461031257806370a082311461032557600080fd5b80632f2ff15d146102a2578063313ce567146102b757806336568abe146102c657806339509351146102d957600080fd5b8063095ea7b3116101b8578063095ea7b31461025157806318160ddd1461026457806323b872dd1461026c578063248a9ca31461027f57600080fd5b806301ffc9a7146101df57806306a85f0f1461020757806306fdde031461023c575b600080fd5b6101f26101ed36600461151c565b61047f565b60405190151581526020015b60405180910390f35b61022e7f92de27771f92d6942691d73358b3a4673e4880de8356f8f2cf452be87e02d36381565b6040519081526020016101fe565b6102446104b6565b6040516101fe919061156a565b6101f261025f3660046115b9565b610548565b60355461022e565b6101f261027a3660046115e3565b610560565b61022e61028d36600461161f565b600090815260c9602052604090206001015490565b6102b56102b0366004611638565b610584565b005b604051600881526020016101fe565b6102b56102d4366004611638565b6105ae565b6101f26102e73660046115b9565b610631565b6102b56102fa3660046115b9565b610653565b6102b561030d36600461161f565b610675565b6102b5610320366004611741565b610697565b61022e61033336600461177e565b6001600160a01b031660009081526033602052604090205490565b6102b561035c366004611799565b610727565b6102b561036f3660046115b9565b6108ff565b6102b56103823660046117f7565b61092c565b6101f2610395366004611638565b6109f9565b610244610a24565b61022e600081565b6101f26103b83660046115b9565b610a33565b6101f26103cb36600461177e565b60fc6020526000908152604090205460ff1681565b6101f26103ee3660046115b9565b610aae565b6102b561040136600461177e565b610abc565b61022e600080516020611b6b83398151915281565b6102b5610429366004611638565b610aea565b61022e61043c3660046118b2565b610b0f565b6102b561044f366004611741565b610b3a565b60fb54610467906001600160a01b031681565b6040516001600160a01b0390911681526020016101fe565b60006001600160e01b03198216637965db0b60e01b14806104b057506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060603680546104c5906118dc565b80601f01602080910402602001604051908101604052809291908181526020018280546104f1906118dc565b801561053e5780601f106105135761010080835404028352916020019161053e565b820191906000526020600020905b81548152906001019060200180831161052157829003601f168201915b5050505050905090565b600033610556818585610bca565b5060019392505050565b60003361056e858285610cee565b610579858585610d68565b506001949350505050565b600082815260c9602052604090206001015461059f81610dda565b6105a98383610de7565b505050565b6001600160a01b03811633146106235760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61062d8282610e6d565b5050565b6000336105568185856106448383610b0f565b61064e919061192c565b610bca565b600080516020611b6b83398151915261066b81610dda565b6105a98383610ed4565b600080516020611b6b83398151915261068d81610dda565b61062d3383610f95565b7f92de27771f92d6942691d73358b3a4673e4880de8356f8f2cf452be87e02d3636106c181610dda565b60005b82518110156105a957600160fc60008584815181106106e5576106e561193f565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905561072081611955565b90506106c4565b600054600290610100900460ff16158015610749575060005460ff8083169116105b6107ac5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161061a565b6000805461ffff191660ff831617610100179055604080518082018252600680825265756e6942544360d01b60208084018290528451808601909552918452908301526107f8916110c9565b6108006110fa565b6108086110fa565b610813600085610de7565b61082b600080516020611b6b83398151915284610de7565b60fb80546001600160a01b03191673899c284a89e113056a72dc9ade5b60e80dd3c94f17905560005b82518110156108b757600160fc60008584815181106108755761087561193f565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790556108b081611955565b9050610854565b506000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b600080516020611b6b83398151915261091781610dda565b610922833384610cee565b6105a98383610f95565b60008251116109665760405162461bcd60e51b815260206004820152600660248201526555535230303160d01b604482015260640161061a565b80518251146109a05760405162461bcd60e51b81526020600482015260066024820152652aa9a918181960d11b604482015260640161061a565b60005b82518110156105a9576109e9338483815181106109c2576109c261193f565b60200260200101518484815181106109dc576109dc61193f565b6020026020010151610d68565b6109f281611955565b90506109a3565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060603780546104c5906118dc565b60003381610a418286610b0f565b905083811015610aa15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161061a565b6105798286868403610bca565b600033610556818585610d68565b6000610ac781610dda565b5060fb80546001600160a01b0319166001600160a01b0392909216919091179055565b600082815260c96020526040902060010154610b0581610dda565b6105a98383610e6d565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b7f92de27771f92d6942691d73358b3a4673e4880de8356f8f2cf452be87e02d363610b6481610dda565b60005b82518110156105a957600060fc6000858481518110610b8857610b8861193f565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055610bc381611955565b9050610b67565b6001600160a01b038316610c2c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161061a565b6001600160a01b038216610c8d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161061a565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610cfa8484610b0f565b90506000198114610d625781811015610d555760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161061a565b610d628484848403610bca565b50505050565b6001600160a01b038316600090815260fc602052604090205460ff1615610dcf5760fb546001600160a01b03838116911614610dcf5760405162461bcd60e51b81526020600482015260066024820152652aa9a918189b60d11b604482015260640161061a565b6105a9838383611123565b610de481336112ce565b50565b610df182826109f9565b61062d57600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610e293390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610e7782826109f9565b1561062d57600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6001600160a01b038216610f2a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161061a565b8060356000828254610f3c919061192c565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038216610ff55760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161061a565b6001600160a01b038216600090815260336020526040902054818110156110695760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161061a565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600054610100900460ff166110f05760405162461bcd60e51b815260040161061a9061196e565b61062d8282611327565b600054610100900460ff166111215760405162461bcd60e51b815260040161061a9061196e565b565b6001600160a01b0383166111875760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161061a565b6001600160a01b0382166111e95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161061a565b6001600160a01b038316600090815260336020526040902054818110156112615760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161061a565b6001600160a01b0380851660008181526033602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112c19086815260200190565b60405180910390a3610d62565b6112d882826109f9565b61062d576112e581611367565b6112f0836020611379565b6040516020016113019291906119b9565b60408051601f198184030181529082905262461bcd60e51b825261061a9160040161156a565b600054610100900460ff1661134e5760405162461bcd60e51b815260040161061a9061196e565b603661135a8382611a7c565b5060376105a98282611a7c565b60606104b06001600160a01b03831660145b60606000611388836002611b3c565b61139390600261192c565b67ffffffffffffffff8111156113ab576113ab611664565b6040519080825280601f01601f1916602001820160405280156113d5576020820181803683370190505b509050600360fc1b816000815181106113f0576113f061193f565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061141f5761141f61193f565b60200101906001600160f81b031916908160001a9053506000611443846002611b3c565b61144e90600161192c565b90505b60018111156114c6576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106114825761148261193f565b1a60f81b8282815181106114985761149861193f565b60200101906001600160f81b031916908160001a90535060049490941c936114bf81611b53565b9050611451565b5083156115155760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161061a565b9392505050565b60006020828403121561152e57600080fd5b81356001600160e01b03198116811461151557600080fd5b60005b83811015611561578181015183820152602001611549565b50506000910152565b6020815260008251806020840152611589816040850160208701611546565b601f01601f19169190910160400192915050565b80356001600160a01b03811681146115b457600080fd5b919050565b600080604083850312156115cc57600080fd5b6115d58361159d565b946020939093013593505050565b6000806000606084860312156115f857600080fd5b6116018461159d565b925061160f6020850161159d565b9150604084013590509250925092565b60006020828403121561163157600080fd5b5035919050565b6000806040838503121561164b57600080fd5b8235915061165b6020840161159d565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156116a3576116a3611664565b604052919050565b600067ffffffffffffffff8211156116c5576116c5611664565b5060051b60200190565b600082601f8301126116e057600080fd5b813560206116f56116f0836116ab565b61167a565b82815260059290921b8401810191818101908684111561171457600080fd5b8286015b84811015611736576117298161159d565b8352918301918301611718565b509695505050505050565b60006020828403121561175357600080fd5b813567ffffffffffffffff81111561176a57600080fd5b611776848285016116cf565b949350505050565b60006020828403121561179057600080fd5b6115158261159d565b6000806000606084860312156117ae57600080fd5b6117b78461159d565b92506117c56020850161159d565b9150604084013567ffffffffffffffff8111156117e157600080fd5b6117ed868287016116cf565b9150509250925092565b6000806040838503121561180a57600080fd5b823567ffffffffffffffff8082111561182257600080fd5b61182e868387016116cf565b935060209150818501358181111561184557600080fd5b85019050601f8101861361185857600080fd5b80356118666116f0826116ab565b81815260059190911b8201830190838101908883111561188557600080fd5b928401925b828410156118a35783358252928401929084019061188a565b80955050505050509250929050565b600080604083850312156118c557600080fd5b6118ce8361159d565b915061165b6020840161159d565b600181811c908216806118f057607f821691505b60208210810361191057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156104b0576104b0611916565b634e487b7160e01b600052603260045260246000fd5b60006001820161196757611967611916565b5060010190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516119f1816017850160208801611546565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611a22816028840160208801611546565b01602801949350505050565b601f8211156105a957600081815260208120601f850160051c81016020861015611a555750805b601f850160051c820191505b81811015611a7457828155600101611a61565b505050505050565b815167ffffffffffffffff811115611a9657611a96611664565b611aaa81611aa484546118dc565b84611a2e565b602080601f831160018114611adf5760008415611ac75750858301515b600019600386901b1c1916600185901b178555611a74565b600085815260208120601f198616915b82811015611b0e57888601518255948401946001909101908401611aef565b5085821015611b2c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820281158282048414176104b0576104b0611916565b600081611b6257611b62611916565b50600019019056fe9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a2646970667358221220c48de1b656cfd23b3764a3d2e9efdbf0ee205e35d96113c9b7d41c6f6ab51dfd64736f6c63430008110033