Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge develop into main. #232

Merged
merged 255 commits into from
Jun 9, 2021
Merged
Changes from 4 commits
Commits
Show all changes
255 commits
Select commit Hold shift + click to select a range
e148db4
documentation: add instructions for SCII env.
sgrimbly May 20, 2021
8287e30
feat: update dial trainer
KevinEloff May 20, 2021
af0f46f
fix: target network
KevinEloff May 20, 2021
5d9e0b0
feature: Save progress.
DriesSmit May 21, 2021
c81910c
Merge branch 'main' into feature/starcraft-wrapper
sgrimbly May 21, 2021
518b5be
feature: Save changes.
DriesSmit May 21, 2021
c1275df
Merge branch 'main' into feature/starcraft-wrapper
sgrimbly May 21, 2021
9113abf
fix: add SCII envs to tests.
sgrimbly May 21, 2021
abaafc4
Merge branch 'main' into feature/starcraft-wrapper
sgrimbly May 22, 2021
3379871
update ci to run on dev branch
arnupretorius May 22, 2021
54241e2
feature: Add working discrete action space examples of MA-DDPG and MA…
DriesSmit May 22, 2021
787f571
feature: Add comment.
DriesSmit May 22, 2021
4d8fdf9
meage: Merge main.
DriesSmit May 22, 2021
5a27a67
feat: comm madqn
KevinEloff May 22, 2021
6a624de
fix: comm module args
KevinEloff May 22, 2021
13bea90
feat: update dial trainer
KevinEloff May 22, 2021
cb9cd02
Merge branch 'main' into feature/dial-training
KevinEloff May 22, 2021
ffa59f0
fix: update fingerprint
KevinEloff May 22, 2021
957fa9a
feat: general comm network
KevinEloff May 22, 2021
5fc632b
update dockerfile to install sc2
arnupretorius May 22, 2021
77cb037
add 3rd party libraries to be ignored
arnupretorius May 22, 2021
70b1e91
remove smac from setup
arnupretorius May 22, 2021
4555a5c
add mac stuff to be ignored
arnupretorius May 22, 2021
0aeceba
Minor changes to pz wrapper
arnupretorius May 22, 2021
0902e39
feat: environment wrapper for sc2
arnupretorius May 22, 2021
894320d
env factory for sc2
arnupretorius May 22, 2021
8714f33
have mypy ignore smace
arnupretorius May 22, 2021
97b6e28
add install script for sc2
arnupretorius May 22, 2021
14c5c33
feature: Update discrete and continuous MA-DDPG and MA-D4PG to each u…
DriesSmit May 22, 2021
0bcd332
feat: dial prison learning
KevinEloff May 22, 2021
ad37b1d
fix mypy issues
arnupretorius May 22, 2021
47fed0a
change name of wrapper to smac
arnupretorius May 22, 2021
8bc9295
feat: use dial executor
KevinEloff May 22, 2021
2c7af20
feat: update env
KevinEloff May 22, 2021
fb91570
feat: message masking
KevinEloff May 22, 2021
6cb2ede
fix: mypy.
DriesSmit May 22, 2021
2b3e1c4
fix: Implement recurrent discrete/continuous MA-DDPG and MA-D4PG.
DriesSmit May 23, 2021
8eea971
example of running madqn on starcraft environment
arnupretorius May 23, 2021
1353dc6
Merge branch 'main' of https://github.com/instadeepai/Mava into featu…
arnupretorius May 23, 2021
15ae063
Merge branch 'feature/starcraft-wrapper' of https://github.com/instad…
arnupretorius May 23, 2021
8b299af
fix mypy issues
arnupretorius May 23, 2021
e0ef40d
update readme and workflow for sc2
arnupretorius May 23, 2021
7651e55
update yaml for smac install
arnupretorius May 23, 2021
df38243
change versions of python to test to only include 3.7 and 3.8
arnupretorius May 23, 2021
cc99ecf
fix: Small fixes.
DriesSmit May 23, 2021
1901a56
Minor changes
arnupretorius May 23, 2021
2d5edae
Merge branch 'feature/starcraft-wrapper' of https://github.com/instad…
arnupretorius May 23, 2021
461f810
test ci without setuptools
arnupretorius May 23, 2021
d00a0e9
:
arnupretorius May 23, 2021
3e70ef2
small updates to ci and dockerfile
arnupretorius May 23, 2021
2ee7b8c
small update to ci
arnupretorius May 23, 2021
897d2c3
fix: Added baseline cost weighting param to critic loss calc.
KaleabTessera May 23, 2021
a83281d
Merge branch 'develop' into feature/starcraft-wrapper
arnupretorius May 23, 2021
9a3e2b9
Merge branch 'develop' into feature/discrete_maddpg_mad4pg
arnupretorius May 23, 2021
6260a2c
fix: small update to ci to fix checks failing
arnupretorius May 23, 2021
df6fd9f
Merge pull request #203 from instadeepai/fix/ci-error-with-enum
arnupretorius May 23, 2021
0729a24
Merge branch 'develop' into bugfix/use-baseline-cost-critic-loss
arnupretorius May 23, 2021
457dedf
Merge pull request #202 from instadeepai/bugfix/use-baseline-cost-cri…
arnupretorius May 23, 2021
4ef83a1
Merge branch 'develop' into feature/discrete_maddpg_mad4pg
arnupretorius May 23, 2021
cf68fb5
Merge pull request #199 from instadeepai/feature/discrete_maddpg_mad4pg
arnupretorius May 23, 2021
15367a2
fix: Fix legal_actions dtype.
DriesSmit May 23, 2021
4a59987
merge: Merge develop.
DriesSmit May 23, 2021
739a546
fix: Passing none values to target update rate and passing these para…
KaleabTessera May 23, 2021
c1d16c7
fix: made type explicit.
KaleabTessera May 23, 2021
1301f35
Merge pull request #204 from instadeepai/bugfix/target_update_rate-pa…
KaleabTessera May 23, 2021
89d4c0b
Merge branch 'develop' into feature/starcraft-wrapper
arnupretorius May 24, 2021
3df2ab0
Update install_sc2.sh
arnupretorius May 24, 2021
39bd994
Remove commented lines of code in wrapper
arnupretorius May 24, 2021
659f08b
Remove chmod in instructions for sc2 install
arnupretorius May 24, 2021
b836b59
Merge pull request #194 from instadeepai/feature/starcraft-wrapper
arnupretorius May 24, 2021
3c9be70
feature: Add state-based maddpg example.
DriesSmit May 24, 2021
b64968f
Merge remote-tracking branch 'origin/develop' into feature/state-base…
DriesSmit May 24, 2021
8b955c0
feat: loss masking
KevinEloff May 24, 2021
e243276
refactoring
KevinEloff May 24, 2021
24968da
Merge branch 'develop' into feature/dial-training
KevinEloff May 24, 2021
f2f035c
fix: mypy
KevinEloff May 24, 2021
3e9875c
Update trainers.
DriesSmit May 24, 2021
e777089
feat: loss masking
KevinEloff May 24, 2021
6fec483
feat: channel capacity 1
KevinEloff May 24, 2021
2b9b0a6
feat: Split optims by agent type.
KaleabTessera May 24, 2021
6a3e16e
feat: Added discrete maddpg PZ example and set mappo to use diff optims.
KaleabTessera May 24, 2021
0e77534
chore: Updated example env.
KaleabTessera May 24, 2021
4cc601e
VDN works
jcformanek May 24, 2021
5ba25ff
fix: Work with shared weights false.
KaleabTessera May 24, 2021
01e3ff2
feat: Updated dqn, qmix and vdn trainers.
KaleabTessera May 24, 2021
fb6c50a
fix: Updated types.
KaleabTessera May 24, 2021
aaaca0f
fix: Nothing.
DriesSmit May 24, 2021
6749a61
debug/small changes
arnupretorius May 24, 2021
8cb8e45
Merge pull request #207 from instadeepai/feature/optims-by-agent-type
KaleabTessera May 24, 2021
0765401
fix: Small changes.
DriesSmit May 24, 2021
585763d
Merge branch 'develop' into feature/state-based-recurrent-maddpg
DriesSmit May 25, 2021
381490e
fix: Fix decentralised maddpg example.
DriesSmit May 25, 2021
744b46e
Merge branch 'feature/state-based-recurrent-maddpg' of github.com:ins…
DriesSmit May 25, 2021
6bc7bde
fix: mypy.
DriesSmit May 25, 2021
3ad1cf0
fix: Small fixes.
DriesSmit May 25, 2021
79addbe
make q net smaller
arnupretorius May 25, 2021
3df0196
cleanup
KevinEloff May 25, 2021
70ec527
Merge branch 'develop' into feature/dial-training
KevinEloff May 25, 2021
a7adc13
pr comments
KevinEloff May 25, 2021
cc69a31
fix: Update trainers and examples.
DriesSmit May 25, 2021
b008db5
feat: rename trainer functions
KevinEloff May 25, 2021
00fd8d5
Merge pull request #206 from instadeepai/feature/dial-training
arnupretorius May 25, 2021
f8ea27d
Merge remote-tracking branch 'origin/develop' into feature/fix-qmix
sgrimbly May 25, 2021
4489bb9
Merge branch 'develop' into feature/state-based-recurrent-maddpg
DriesSmit May 25, 2021
7965de2
fix: VDN and update files.
sgrimbly May 25, 2021
cbcae80
fix: VDN and update files.
sgrimbly May 25, 2021
edeeefd
fix: bug in VDN.
sgrimbly May 25, 2021
97ded76
feat: Made grad norm configurable for madqn and derivatives.
KaleabTessera May 25, 2021
75ea04f
Merge branch 'develop' into feature/maxgrad-norm-configure-madqn
KaleabTessera May 25, 2021
a1c0e7c
feat: Updated dial.
KaleabTessera May 25, 2021
61b893c
Merge pull request #210 from instadeepai/feature/maxgrad-norm-configu…
arnupretorius May 25, 2021
92863f3
fix: Fix centralised training bug.
DriesSmit May 25, 2021
9fa9579
Merge remote-tracking branch 'origin/develop' into feature/state-base…
DriesSmit May 25, 2021
56e0d99
fix: Small fixes.
DriesSmit May 25, 2021
2933b74
fix: Fix state based and recurrent versions.
DriesSmit May 25, 2021
dc4acf8
fix: get Qmix trainer loops running again.
sgrimbly May 25, 2021
43c67cb
fix: Small space fix.
DriesSmit May 25, 2021
e41baf0
fix: Fixes .keys() and .values() code in MA-DDPG trainers.
DriesSmit May 26, 2021
5722a7b
fix: Sort specs and keys inside Mava specs.
DriesSmit May 26, 2021
45397a8
fix: Remove comments.
DriesSmit May 26, 2021
733a7d5
fix: Rename MADDPG and MAD4PG trainers.
DriesSmit May 26, 2021
afb194a
fix: Re-added SMACEnvWrapper wrapper.
KaleabTessera May 26, 2021
e8693b8
feat: Catch exceptions thrown by rendering.
KaleabTessera May 26, 2021
358c9b7
Merge pull request #208 from instadeepai/feature/state-based-recurren…
arnupretorius May 26, 2021
c4cffac
Merge branch 'develop' into feature/fix-qmix
sgrimbly May 26, 2021
14eeba1
fix: restore new clipping method.
sgrimbly May 26, 2021
6c167d8
fix: Epsilon value in MADQNFeedForwardExecutor.
DriesSmit May 26, 2021
6822b0d
fix: Remove print.
DriesSmit May 26, 2021
17d2d9d
fix: Small fix.
DriesSmit May 26, 2021
87d1743
Merge pull request #213 from instadeepai/feature/feedforward-dqn-smac
DriesSmit May 26, 2021
ecfe63a
Merge branch 'develop' into feature/fix-qmix
sgrimbly May 26, 2021
f64ccef
fix: New version of acme breaks adders. Hardcoded acme version for now.
KaleabTessera May 26, 2021
dd27dd5
Merge branch 'develop' into bufgix/fix-acme-version
KaleabTessera May 26, 2021
f6db849
Merge pull request #215 from instadeepai/bufgix/fix-acme-version
DriesSmit May 27, 2021
071742c
feat: Example custom network spec.
KaleabTessera May 27, 2021
a0fd629
fix: Fix _get_dpg_feed inside MADDPGNetworkedTrainer.
DriesSmit May 27, 2021
5123782
fix: Fix _get_dpg_feed inside MADDPGNetworkedTrainer.
DriesSmit May 27, 2021
8af2d45
feature: Add assert to test if networked architecture is setup correc…
DriesSmit May 27, 2021
d9cd5db
Merge pull request #216 from instadeepai/feature/custom-network-example
arnupretorius May 27, 2021
fba8c91
fix: change trainer from VDN to QMIX
sgrimbly May 27, 2021
5693911
Merge branch 'develop' into feature/fix-qmix
sgrimbly May 27, 2021
2cb1346
feature: Add robocup docker setup to Mava code.
DriesSmit May 31, 2021
f9061d6
fix: In all trainers set Tensorflow to dynamically grow the gpu memor…
DriesSmit Jun 1, 2021
c38cb60
fix: Set render_game to False.
DriesSmit Jun 1, 2021
7b50ae1
Fix: Updated fixed agent.
DriesSmit Jun 1, 2021
ed61496
fix: Update set_growing_gpu_memory to loop over all GPU devices.
DriesSmit Jun 1, 2021
26a4853
Merge pull request #220 from instadeepai/fix/virtual_env_gpu_memory
arnupretorius Jun 1, 2021
6342c9a
add new logo image
arnupretorius Jun 1, 2021
f988a4b
readme overview updated
arnupretorius Jun 1, 2021
5683831
Merge branch 'develop' into feature/fix-qmix
sgrimbly Jun 1, 2021
4284061
add simpe spread debug env image
arnupretorius Jun 2, 2021
d5db55e
feat: try out live polling in readme.
arnupretorius Jun 2, 2021
1c34217
Update README.md
arnupretorius Jun 2, 2021
10683da
added progress images
arnupretorius Jun 2, 2021
5f34043
Merge branch 'feature/update-readme' of https://github.com/instadeepa…
arnupretorius Jun 2, 2021
7371e60
Update README.md
arnupretorius Jun 2, 2021
514aa9e
minor edits to readme
arnupretorius Jun 2, 2021
e91e02c
resolve merge conflicts
arnupretorius Jun 2, 2021
211a654
add debugging env results for discrete and cont. using ff nets.
arnupretorius Jun 2, 2021
fb75743
add pz multi-walker gif
arnupretorius Jun 2, 2021
00b77f5
Update README.md
arnupretorius Jun 3, 2021
cc5b0e1
Add table of contents to readme
arnupretorius Jun 3, 2021
a59e4be
Add link to launchpad and minor edits
arnupretorius Jun 3, 2021
eb0997f
debugging section and resize mava logo
arnupretorius Jun 3, 2021
35b0835
cropped version of mava logo
arnupretorius Jun 3, 2021
6b0c453
resize mava logo
arnupretorius Jun 3, 2021
e94d5f1
Add link to debug examples
arnupretorius Jun 3, 2021
9487c07
Add roadmap section with poll
arnupretorius Jun 3, 2021
9749fcc
add tf logo
arnupretorius Jun 3, 2021
260a550
update system readme
arnupretorius Jun 3, 2021
00e48fe
Minor edits to system readme
arnupretorius Jun 3, 2021
a3bdc92
update robocup link
arnupretorius Jun 3, 2021
89d3b67
fix broken debug env link
arnupretorius Jun 3, 2021
a5ba9b5
Fix broken link in examples readme
arnupretorius Jun 3, 2021
b1c27a8
fix spelling mistakes and remove unused links
arnupretorius Jun 3, 2021
7f2890d
Merge pull request #221 from instadeepai/feature/update-readme
arnupretorius Jun 3, 2021
87dd47d
update discrete results on readme
arnupretorius Jun 3, 2021
ba948a9
Merge pull request #222 from instadeepai/fix/readme
arnupretorius Jun 3, 2021
aeea578
Update license to apache to match code stubs
arnupretorius Jun 3, 2021
d9488c4
removed qmix v2
arnupretorius Jun 3, 2021
1d78da6
change additive network back to how it was
arnupretorius Jun 3, 2021
3253bad
update system and building to use mixing module instead of network
arnupretorius Jun 3, 2021
a9d3e0c
fix minor bug in qmix trainer
arnupretorius Jun 3, 2021
ee5236c
fix mypy issues.
arnupretorius Jun 3, 2021
ab31c0f
Merge branch 'develop' of https://github.com/instadeepai/Mava into fe…
arnupretorius Jun 3, 2021
a3fec9f
add vdn to discrete debug plot
arnupretorius Jun 3, 2021
e4b4ff0
Update VDN status to yellow
arnupretorius Jun 3, 2021
0ae79bd
resolve merge conflict
arnupretorius Jun 3, 2021
70d3ed7
Merge pull request #225 from instadeepai/feature/update-readme-vdn
arnupretorius Jun 4, 2021
6820f47
Update year and add placeholder
arnupretorius Jun 4, 2021
3f8754a
Merge branch 'develop' into fix/update-license
arnupretorius Jun 4, 2021
2fc5d87
Merge pull request #224 from instadeepai/fix/update-license
arnupretorius Jun 4, 2021
5224ada
Merge branch 'develop' of https://github.com/instadeepai/Mava into fe…
arnupretorius Jun 4, 2021
7ab51d0
clean up make file
arnupretorius Jun 4, 2021
a17c42d
Refactor qmix to use generic hypernetwork again
arnupretorius Jun 4, 2021
1a63a82
Remove communication module from qmix
arnupretorius Jun 4, 2021
3634524
minor mypy changes
arnupretorius Jun 4, 2021
cd9b6e0
Merge pull request #209 from instadeepai/feature/fix-qmix
arnupretorius Jun 4, 2021
be31129
Merge branch 'develop' into feature/robocup_environment
arnupretorius Jun 4, 2021
bd703fd
Merge branch 'develop' of https://github.com/instadeepai/Mava into fe…
arnupretorius Jun 4, 2021
f4b6cea
remove commented line in make file
arnupretorius Jun 4, 2021
704ba36
rename example
arnupretorius Jun 4, 2021
78fc3f4
clean agents file
arnupretorius Jun 4, 2021
d518364
cleaned fixed_agent file
arnupretorius Jun 4, 2021
5d700bf
cleaned nn_agents file
arnupretorius Jun 4, 2021
67c5597
update custom executor
arnupretorius Jun 4, 2021
478f39d
update copyright stubs
arnupretorius Jun 4, 2021
8735ba5
clean message parser
arnupretorius Jun 4, 2021
c640226
clean player world model
arnupretorius Jun 4, 2021
a3de0dc
clean trainer world model
arnupretorius Jun 4, 2021
2c6b506
clean trainer world model
arnupretorius Jun 4, 2021
230ac7e
clean robocup env
arnupretorius Jun 4, 2021
21db40d
add todo to move wrapper to wrapper folder
arnupretorius Jun 4, 2021
959043c
Merge branch 'feature/robocup_environment' of https://github.com/inst…
arnupretorius Jun 4, 2021
4890d44
fix mypy issues - todo need to check typing
arnupretorius Jun 4, 2021
4e11825
fix: Moved RoboCup files to their appropriate places in Mava.
DriesSmit Jun 4, 2021
0dbf259
feature: Update the main README.md with the RoboCup installation proc…
DriesSmit Jun 4, 2021
b67749b
correct copyright
arnupretorius Jun 4, 2021
a8d4219
fix: Update the readme file.
DriesSmit Jun 4, 2021
be2c61e
Small changes.
DriesSmit Jun 4, 2021
0f2633c
add inits and update typing
arnupretorius Jun 4, 2021
a260f03
Merge branch 'feature/robocup_environment' of https://github.com/inst…
arnupretorius Jun 4, 2021
0e2b586
copy stubs to inits
arnupretorius Jun 4, 2021
b9f960c
Fix mypy.
DriesSmit Jun 4, 2021
ae1027a
Pull changes.
DriesSmit Jun 4, 2021
cfdbc48
Automatically reformat code.
DriesSmit Jun 4, 2021
6312f8d
Merge pull request #219 from instadeepai/feature/robocup_environment
arnupretorius Jun 4, 2021
886d902
update stub
arnupretorius Jun 4, 2021
d9f5e3c
Merge pull request #227 from instadeepai/fix/stubs
arnupretorius Jun 4, 2021
8e0556c
feature: Make checkpointing optional.
KaleabTessera Jun 7, 2021
a50fb8f
feat(training): Allow different policy optims per agent.
KaleabTessera Jun 7, 2021
bd3a8dc
feat(wrapper): Cleaned up PZ wrapper.
KaleabTessera Jun 7, 2021
ed88f32
merge: Merge remote-tracking branch 'origin/develop' into feature/cod…
KaleabTessera Jun 7, 2021
362b93e
bugfix: Reverted optim change in qmix.
KaleabTessera Jun 7, 2021
5fa28ef
chore: Cleaned up comments.
KaleabTessera Jun 7, 2021
a970bd3
bugfix: Only checkpoint if checkpointer is not none.
KaleabTessera Jun 8, 2021
4f66fd3
Merge pull request #228 from instadeepai/feature/code-cleanup
arnupretorius Jun 8, 2021
0a47cbd
update copyright to InstaDeep Ltd
arnupretorius Jun 8, 2021
47e650a
fix setup file
arnupretorius Jun 8, 2021
97f097c
Merge pull request #229 from instadeepai/fix/copyright-stubs
arnupretorius Jun 8, 2021
b363448
fix(launchpad): Fixed stopping of launchpad program.
KaleabTessera Jun 8, 2021
44109e8
Merge remote-tracking branch 'origin/develop' into bugfix/stop-launch…
KaleabTessera Jun 8, 2021
7581e66
chore: Removed unused var.
KaleabTessera Jun 8, 2021
cc18b2f
debug: Debugging github actions.
KaleabTessera Jun 8, 2021
27ce633
fix(ci): Updated tf and reverb versions.
KaleabTessera Jun 8, 2021
d6c0e09
Merge pull request #230 from instadeepai/bugfix/stop-launchpad-run
KaleabTessera Jun 8, 2021
e8b2428
chore(release): Minor changes for release.
KaleabTessera Jun 9, 2021
a71af7a
docs: Updated readme to split core dependencies and non-core dependen…
KaleabTessera Jun 9, 2021
4b36832
docs: Updated docs to include package information.
KaleabTessera Jun 9, 2021
b737828
Merge pull request #231 from instadeepai/feature/release-prep
KaleabTessera Jun 9, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
222 changes: 201 additions & 21 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,21 +1,201 @@
MIT License

Copyright (c) 2021 [...placeholder...]

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.

"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.

"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.

2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.

4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:

(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and

(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and

(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and

(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.

You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.

6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.

8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work.

To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright 2021 [...placeholder...]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.