Apache Training (incubating)
Copyright 2019 The Apache Software Foundation

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

The content/Github/Challenges/workflow-basics.svg file contains images generated
with https://myoctocat.com/ with explicit permission from GitHub to be used as
part of Apache Training.
