flink-shaded-zookeeper-3
Copyright 2014-2021 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).

This project bundles the following dependencies under the Apache Software License 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)

- com.google.guava:guava:27.0.1-jre
- org.apache.curator:curator-client:4.2.0
- org.apache.curator:curator-framework:4.2.0
- org.apache.curator:curator-recipes:4.2.0
- org.apache.zookeeper:zookeeper:3.5.9
- org.apache.zookeeper:zookeeper-jute:3.5.9
