Apache Casbin (Incubating)
Copyright 2026 The Apache Software Foundation

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

Portions of this software were originally developed by the Casbin project.
Copyright 2020-2026 The casbin Authors.
